diff --git a/conf.py b/conf.py index 75a6b2b51c7..bd657366978 100644 --- a/conf.py +++ b/conf.py @@ -76,7 +76,7 @@ today_fmt = '%B %d, %Y' # A list of glob-style patterns that should be excluded when looking # for source files. -#exclude_patterns = ['elements', 'tasks', 'tests.rst'] +exclude_patterns = ['modules'] # The reST default role (used for this markup: `text`) to use for all # documents. diff --git a/rst/modules.rst b/rst/modules.rst index a0a47f7eda8..fc403c4e624 100644 --- a/rst/modules.rst +++ b/rst/modules.rst @@ -33,976 +33,38 @@ to run additional tasks. Let's see what's available in the Ansible module library, out of the box: -.. _apt: -apt -``` +.. include:: modules/apt_repository.rst +.. include:: modules/apt.rst +.. include:: modules/assemble.rst +.. include:: modules/authorized_key.rst +.. include:: modules/command.rst +.. include:: modules/copy.rst +.. include:: modules/easy_install.rst +.. include:: modules/facter.rst +.. include:: modules/fetch.rst +.. include:: modules/file.rst +.. include:: modules/get_url.rst +.. include:: modules/git.rst +.. include:: modules/group.rst +.. include:: modules/mount.rst +.. include:: modules/mysql_db.rst +.. include:: modules/mysql_user.rst +.. include:: modules/ohai.rst +.. include:: modules/ping.rst +.. include:: modules/pip.rst +.. include:: modules/postgresql_db.rst +.. include:: modules/postgresql_user.rst +.. include:: modules/raw.rst +.. include:: modules/service.rst +.. include:: modules/setup.rst +.. include:: modules/shell.rst +.. include:: modules/supervisorctl.rst +.. include:: modules/template.rst +.. include:: modules/user.rst +.. include:: modules/virt.rst +.. include:: modules/yum.rst -Manages apt-packages (such as for Debian/Ubuntu). - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | no | | A package name or package specifier with version, like `foo` or `foo=1.0` | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | no | present | 'absent', 'present', or 'latest'. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| update_cache | no | no | Run the equivalent of apt-get update before the operation. | -| | | | Can be run as part of the package installation or a seperate step | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| purge | no | no | Will forge purge of configuration files if state is set to 'absent'. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| default_release | no | | Corresponds to the -t option for apt and sets pin priorities | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| install_recommends | no | yes | Corresponds to the --no-install-recommends option for apt, default | -| | | | behavior works as apt's default behavior, 'no' does not install | -| | | | recommended packages. Suggested packages are never installed. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| force | no | no | If 'yes', force installs/removes. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - apt pkg=foo update-cache=yes - apt pkg=foo state=removed - apt pkg=foo state=installed - apt pkg=foo=1.00 state=installed - apt pkg=nginx state=latest default-release=squeeze-backports update-cache=yes - apt pkg=openjdk-6-jdk state=latest install-recommends=no - - -.. _apt_repository: - -apt_repository -`````````````` - -.. versionadded:: 0.7 - -Manages apt repositores - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| repo | yes | | The repository name/value | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | no | present | 'absent' or 'present' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - apt_repository repo=ppa:nginx/stable - apt_repository repo='deb http://archive.canonical.com/ubuntu hardy partner' - -.. _assemble: - -assemble -```````` - -.. versionadded:: 0.5 - -Assembles a configuration file from fragments. Often a particular -program will take a single configuration file and does not support a -conf.d style structure where it is easy to build up the configuration -from multiple sources. Assmeble will take a directory of files that -have already been transferred to the system, and concatenate them -together to produce a destination file. Files are assembled in string -sorting order. Puppet calls this idea "fragments". - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| src | yes | | An already existing directory full of source files | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dest | yes | | A file to create using the concatenation of all of the source files | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| OTHERS | | | All arguments that the file module takes may also be used | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - assemble src=/etc/someapp/fragments dest=/etc/someapp/someapp.conf - - -.. _authorized_key: - -authorized_key -`````````````` - -.. versionadded:: 0.5 - -Adds or removes an authorized key for a user from a remote host. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| user | yes | | Name of the user who should have access to the remote host | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| key | yes | | the SSH public key, as a string | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | no | present | whether the given key should or should not be in the file | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - authorized_key user=charlie key="ssh-dss ASDF1234L+8BTwaRYr/rycsBF1D8e5pTxEsXHQs4iq+mZdyWqlW++L6pMiam1A8yweP+rKtgjK2httVS6GigVsuWWfOd7/sdWippefq74nppVUELHPKkaIOjJNN1zUHFoL/YMwAAAEBALnAsQN10TNGsRDe5arBsW8cTOjqLyYBcIqgPYTZW8zENErFxt7ij3fW3Jh/sCpnmy8rkS7FyK8ULX0PEy/2yDx8/5rXgMIICbRH/XaBy9Ud5bRBFVkEDu/r+rXP33wFPHjWjwvHAtfci1NRBAudQI/98DbcGQw5HmE89CjgZRo5ktkC5yu/8agEPocVjdHyZr7PaHfxZGUDGKtGRL2QzRYukCmWo1cZbMBHcI5FzImvTHS9/8B3SATjXMPgbfBuEeBwuBK5EjL+CtHY5bWs9kmYjmeo0KfUMH8hY4MAXDoKhQ7DhBPIrcjS5jPtoGxIREZjba67r6/P2XKXaCZH6Fc= charlie@example.org 2011-01-17" - -.. _command: - - -command -``````` - -The command module takes the command name followed by a list of -arguments, space delimited. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| (free form) | N/A | N/A | the command module takes a free form command to run | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| creates | no | | a filename, when it already exists, this step will NOT be run | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| chdir | no | | cd into this directory before running the command (0.6 and later) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -The given command will be executed on all selected nodes. It will not -be processed through the shell, so variables like "$HOME" and -operations like "<", ">", "|", and "&" will not work. As such, all -paths to commands must be fully qualified. - -.. note:: - If you want to run a command through the shell (say you are using - '<', '>', '|', etc), you actually want the 'shell' module instead. - The 'command' module is much more secure as it's not affected by - the user's environment. - -Example action from Ansible :doc:`playbooks`:: - - command /sbin/shutdown -t now - -creates and chdir can be specified after the command. For instance, if you only want to run a command if a certain file does not exist, you can do the following:: - - command /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database - -The `creates=` and `chdir` options will not be passed to the actual executable. - - -.. _copy: - -copy -```` - -The copy module moves a file on the local box to remote locations. In addition to the options -listed below, the arguments available to the `file` module can also be passed to the copy -module. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| src | yes | | Local path to a file to copy to the remote server, can be absolute or | -| | | | relative. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dest | yes | | Remote absolute path where the file should end up | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| OTHERS | | | All arguments the file module takes are also supported | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - copy src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode=0644 - - - -.. _easy_install: - -easy_install -```````````` - -.. versionadded:: 0.7 - -The easy_install module installs Python libraries. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | a Python library name | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| virtualenv | no | | an optional virtualenv directory path to install into, if the virtualenv | -| | | | does not exist it is created automatically | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Please note that the easy_install command can only install Python libraries. -Thus this module is not able to remove libraries. It is generally recommended to -use the :ref:`pip` module which you can first install using easy_install. - -Also note that `virtualenv `_ must be installed on -the remote host if the `virtualenv` parameter is specified. - -Example action from Ansible :doc:`playbooks`:: - - easy_install name=pip - easy_install name=flask==0.8 - easy_install name=flask virtualenv=/srv/webapps/my_app/venv - - -.. _facter: - -facter -`````` - -Runs the discovery program 'facter' on the remote system, returning -JSON data that can be useful for inventory purposes. - -Requires that 'facter' and 'ruby-json' be installed on the remote end. - -Playbooks do not actually use this module, they use the :ref:`setup` -module behind the scenes. - -Example from /usr/bin/ansible:: - - ansible foo.example.org -m facter - -.. _fetch: - -fetch -````` - -This module works like 'copy', but in reverse. It is used for fetching files -from remote machines and storing them locally in a file tree, organized by hostname. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| src | yes | | The file on the remote system to fetch. This needs to be a file, not | -| | | | a directory. Recursive fetching may be supported in a later release. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dest | yes | | A directory to save the file into. For example, if the 'dest' directory | -| | | | is '/foo', a src file named '/tmp/bar' on host 'host.example.com', would | -| | | | be saved into '/foo/host.example.com/tmp/bar' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example:: - - fetch src=/var/log/messages dest=/home/logtree - -.. _file: - -file -```` - -Sets attributes of files, symlinks, and directories, or removes files/symlinks/directories. Many other modules -support the same options as the file module -- including 'copy', 'template', and 'assmeble'. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| dest | yes | | defines the file being managed, unless when used with state=link, and | -| | | | then sets the destination to create a symbolic link to using 'src' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | | file | values are 'file', 'link', 'directory', or 'absent'. If directory, | -| | | | all immediate subdirectories will be created if they do not exist. If | -| | | | 'file', the file will NOT be created if it does not exist, see the 'copy' | -| | | | or 'template' module if you want that behavior. If 'link', the symbolic | -| | | | link will be created or changed. If absent, directories will be | -| | | | recursively deleted, and files or symlinks will be unlinked. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| mode | | | mode the file or directory shoudl be, such as 0644 as would be fed to | -| | | | chmod. English modes like 'g+x' are not yet supported | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| owner | | | name of the user that should own the file/directory, as would be fed to | -| | | | chown | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| group | | | name of the group that should own the file/directory, as would be fed to | -| | | | group | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| src | | | path of the file to link to (applies only to state=link) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| seuser | | | user part of SELinux file context. Will default to system policy, if | -| | | | applicable. If set to '_default', it will use the 'user' portion of the | -| | | | the policy if available | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| serole | | | role part of SELinux file context, '_default' feature works as above. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| setype | | | type part of SELinux file context, '_default' feature works as above | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| selevel | | s0 | level part of the SELinux file context. This is the MLS/MCS attribute, | -| | | | sometimes known as the 'range'. '_default' feature works as above | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| context | | | accepts only 'default' as a value. This will restore a file's selinux | -| | | | context in the policy. Does nothing if no default is available. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - file path=/etc/foo.conf owner=foo group=foo mode=0644 - file path=/some/path owner=foo group=foo state=directory - file path=/path/to/delete state=absent - file src=/file/to/link/to dest=/path/to/symlink owner=foo group=foo state=link - file path=/some/path state=directory setype=httpd_sys_content_t - file path=/some/path state=directory context=default - -.. _get_url: - -get_url -``````` - -Downloads files from http, https, or ftp to the remote server. The remote server must have direct -access to the remote resource. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| url | yes | | http, https, or ftp URL | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dest | yes | | absolute path of where to download the file to. If dest is a directory, | -| | | | the basename of the file on the remote server will be used. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| OTHERS | no | | all arguments accepted by the file module also work here | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - - name: Grab a bunch of jQuery stuff - action: get_url url=http://code.jquery.com/$item dest=${jquery_directory} mode=0444 - with_items: - - jquery.min.js - - mobile/latest/jquery.mobile.min.js - - ui/jquery-ui-git.css - -.. _git: - -git -``` - -Deploys software (or files) from git checkouts. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| repo | yes | | git, ssh, or http protocol address of the git repo | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dest | yes | | absolute path of where the repo should be checked out to | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| version | no | HEAD | what version to check out -- either the git SHA, the literal string | -| | | | 'HEAD', branch name, or a tag name. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| remote | no | origin | name of the remote branch | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - git repo=git://foosball.example.org/path/to/repo.git dest=/srv/checkout version=release-0.22 - -.. _group: - -group -````` - -Adds or removes groups. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | name of the group | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| gid | | | optional git to set for the group | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | | present | 'absent' or 'present' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| system | | no | if 'yes', indicates that the group being created is a system group. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -To control members of the group, see the users resource. - -Example action from Ansible :doc:`playbooks`:: - - group name=somegroup state=present - -.. _mount: - -mount -````` - -The mount module controls active and configured mount points (fstab). - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | path to the mountpoint, ex: /mnt/foo | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| src | yes | | device to be mounted | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| fstype | yes | | fstype | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| opts | no | | mount options (see fstab docs) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dump | no | | dump (see fstab docs) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| passno | no | | passno (see fstab docs) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | yes | | 'present', 'absent', 'mounted', or 'unmounted'. If mounted/unmounted, | -| | | | the device will be actively mounted or unmounted as well as just | -| | | | configured in fstab. 'absent', and 'present' only deal with fstab. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -.. _mysql_db: - -mysql_db -```````` - -Add or remove MySQL databases from a remote host. - -Requires the MySQLdb Python package on the remote host. For Ubuntu, this is as easy as -apt-get install python-mysqldb. - -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+===========+=============================================================================+ -| name | yes | | name of the database to add or remove | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| login_user | no | | user name used to authenticate with | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| login_password | no | | password used to authenticate with | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| login_host | no | localhost | host running the database | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| state | no | present | 'absent' or 'present' | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| collation | no | | collation mode | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ -| encoding | no | | encoding mode | -+--------------------+----------+-----------+-----------------------------------------------------------------------------+ - -Both 'login_password' and 'login_username' are required when you are passing credentials. -If none are present, the module will attempt to read the credentials from ~/.my.cnf, and -finally fall back to using the MySQL default login of 'root' with no password. - -Example action from Ansible :doc:`playbooks`:: - - - name: Create database - action: mysql_db db=bobdata state=present - - -mysql_user -`````````` - -Adds or removes a user from a MySQL database. - -Requires the MySQLdb Python package on the remote host. For Ubuntu, this is as easy as -apt-get install python-mysqldb. - -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+============+============================================================================+ -| name | yes | | name of the user (role) to add or remove | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| password | no | | set the user's password | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| host | no | localhost | the 'host' part of the MySQL username | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| login_user | no | | user name used to authenticate with | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| login_password | no | | password used to authenticate with | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| login_host | no | localhost | host running MySQL. | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| priv | no | | MySQL privileges string in the format: db.table:priv1,priv2 | -+--------------------+----------+------------+----------------------------------------------------------------------------+ -| state | no | present | 'absent' or 'present' | -+--------------------+----------+------------+----------------------------------------------------------------------------+ - -Both 'login_password' and 'login_username' are required when you are passing credentials. -If none are present, the module will attempt to read the credentials from ~/.my.cnf, and -finally fall back to using the MySQL default login of 'root' with no password. - -Example privileges string format: - - mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL - -Example action from Ansible :doc:`playbooks`:: - - - name: Create database user - action: mysql_user name=bob passwd=12345 priv=*.*:ALL state=present - - - name: Ensure no user named 'sally' exists, also passing in the auth credentials. - action: mysql_user login_user=root login_password=123456 name=sally state=absent - - -.. _ohai: - -ohai -```` - -Similar to the :ref:`facter` module, this returns JSON inventory data. -Ohai data is a bit more verbose and nested than facter. - -Requires that 'ohai' be installed on the remote end. - -Playbooks should not call the ohai module, playbooks call the -:ref:`setup` module behind the scenes instead. - -Example:: - - ansible foo.example.org -m ohai - -.. _ping: - -ping -```` - -A trivial test module, this module always returns 'pong' on -successful contact. It does not make sense in playbooks, but is useful -from /usr/bin/ansible:: - - ansible webservers -m ping - -.. postgresql_db: - - -.. _pip: - -pip -``` - -.. versionadded:: 0.7 - -Manages Python library dependencies. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | no | | The name of a Python library to install | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| version | no | | The version number to install of the Python library specified in the | -| | | | 'name' parameter | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| requirements | no | | The path to a pip requirements file | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| virtualenv | no | | An optional path to a virtualenv directory to install into | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | no | present | 'present', 'absent' or 'latest' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Please note that `virtualenv `_ must be installed on -the remote host if the `virtualenv` parameter is specified. - -Examples:: - - pip name=flask - pip name=flask version=0.8 - pip name=flask virtualenv=/srv/webapps/my_app/venv - pip requirements=/srv/webapps/my_app/src/requirements.txt - pip requirements=/srv/webapps/my_app/src/requirements.txt virtualenv=/srv/webapps/my_app/venv - - -postgresql_db -````````````` - -Add or remove PostgreSQL databases from a remote host. - -The default authentication assumes that you are either logging in as or -sudo'ing to the postgres account on the host. - -This module uses psycopg2, a Python PostgreSQL database adapter. You must -ensure that psycopg2 is installed on the host before using this module. If -the remote host is the PostgreSQL server (which is the default case), then -PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, -install the postgresql, libpq-dev, and python-psycopg2 packages on the remote -host before using this module. - - -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+==========+============================================================================+ -| name | yes | | name of the database to add or remove | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| login_user | no | postgres | user (role) used to authenticate with PostgreSQL | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| login_password | no | | password used to authenticate with PostgreSQL | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| login_host | no | | host running PostgreSQL. Default (blank) implies localhost | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| state | | present | 'absent' or 'present' | -+--------------------+----------+----------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - postgresql_db db=acme - - -.. postgresql_user: - -postgresql_user -``````````````` - -Add or remove PostgreSQL users (roles) from a remote host, and grant the users -access to an existing database. - -The default authentication assumes that you are either logging in as or -sudo'ing to the postgres account on the host. - -This module uses psycopg2, a Python PostgreSQL database adapter. You must -ensure that psycopg2 is installed on the host before using this module. If -the remote host is the PostgreSQL server (which is the default case), then -PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, -install the postgresql, libpq-dev, and python-psycopg2 packages on the remote -host before using this module. - -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+==========+============================================================================+ -| name | yes | | name of the user (role) to add or remove | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| password | yes | | set the user's password | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| db | yes | | name of an existing database to grant user access to | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| login_user | no | postgres | user (role) used to authenticate with PostgreSQL | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| login_password | no | | password used to authenticate with PostgreSQL | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| login_host | no | | host running PostgreSQL. Default (blank) implies localhost | -+--------------------+----------+----------+----------------------------------------------------------------------------+ -| state | | present | 'absent' or 'present' | -+--------------------+----------+----------+----------------------------------------------------------------------------+ - - -Example action from Ansible :doc:`playbooks`:: - - postgresql_user db=acme user=django password=ceec4eif7ya - -.. _raw: - -raw -``` - -Executes a low-down and dirty SSH command, not going through the module subsystem. - -This is useful and should only be done in two cases. The first case is installing -python-simplejson on older (python 2.4 and before) hosts that need it as a dependency -to run modules, since nearly all core modules require it. Another is speaking to any -devices such as routers that do not have any Python installed. In any other case, -using the 'shell' or 'command' module is much more appropriate. - -Arguments given to 'raw' are run directly through the configured remote shell and -only output is returned. There is no error detection or change handler support -for this module. - -Example from `/usr/bin/ansible` to bootstrap a legacy python 2.4 host:: - - ansible newhost.example.com -m raw -a "yum -y install python-simplejson" - -.. _service: - -service -``````` - -Controls services on remote machines. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | name of the service | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | no | started | 'started', 'stopped', 'reloaded', or 'restarted'. Started/stopped are | -| | | | idempotent actions that will not run commands unless neccessary. | -| | | | 'restarted' will always bounce the service, 'reloaded' will always reload. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| enabled | no | | Whether the service should start on boot. Either 'yes' or 'no'. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - service name=httpd state=started - service name=httpd state=stopped - service name=httpd state=restarted - service name=httpd state=reloaded - -.. _setup: - -setup -````` - -This module is automatically called by playbooks to gather useful variables about remote hosts that can be used -in playbooks. It can also be executed directly by /usr/bin/ansible to check what variables are available -to a host. - -Ansible provides many 'facts' about the system, automatically. - -Some of the variables that are supplied are listed below. These in particular -are from a VMWare Fusion 4 VM running CentOS 6.2:: - - "ansible_architecture": "x86_64", - "ansible_distribution": "CentOS", - "ansible_distribution_release": "Final", - "ansible_distribution_version": "6.2", - "ansible_eth0": { - "ipv4": { - "address": "REDACTED", - "netmask": "255.255.255.0" - }, - "ipv6": [ - { - "address": "REDACTED", - "prefix": "64", - "scope": "link" - } - ], - "macaddress": "REDACTED" - }, - "ansible_form_factor": "Other", - "ansible_fqdn": "localhost.localdomain", - "ansible_hostname": "localhost", - "ansible_interfaces": [ - "lo", - "eth0" - ], - "ansible_kernel": "2.6.32-220.2.1.el6.x86_64", - "ansible_lo": { - "ipv4": { - "address": "127.0.0.1", - "netmask": "255.0.0.0" - }, - "ipv6": [ - { - "address": "::1", - "prefix": "128", - "scope": "host" - } - ], - "ansible_machine": "x86_64", - "ansible_memfree_mb": 89, - "ansible_memtotal_mb": 993, - "ansible_processor": [ - "Intel(R) Core(TM) i7-2677M CPU @ 1.80GHz" - ], - "ansible_processor_cores": "NA", - "ansible_processor_count": 1, - "ansible_product_name": "VMware Virtual Platform", - "ansible_product_serial": "REDACTED", - "ansible_product_uuid": "REDACTED", - "ansible_product_version": "None", - "ansible_python_version": "2.6.6", - "ansible_product_version": "None", - "ansible_python_version": "2.6.6", - "ansible_ssh_host_key_dsa_public": REDACTED", - "ansible_ssh_host_key_rsa_public": "REDACTED", - "ansible_swapfree_mb": 1822, - "ansible_swaptotal_mb": 2015, - "ansible_system": "Linux", - "ansible_system_vendor": "VMware, Inc.", - "ansible_virtualization_role": "None", - "ansible_virtualization_type": "None", - -More ansible facts will be added with successive releases. - -If facter or ohai are installed, variables from these programs will -also be snapshotted into the JSON file for usage in templating. These -variables are prefixed with ``facter_`` and ``ohai_`` so it's easy to -tell their source. - -All variables are bubbled up to the caller. Using the ansible facts and choosing -to not install facter and ohai means you can avoid ruby-dependencies -on your remote systems. - -Example action from `/usr/bin/ansible`:: - - ansible testserver -m setup - - -.. _shell: - -shell -````` - -The shell module takes the command name followed by a list of -arguments, space delimited. It is almost exactly like the command module -but runs the command through the user's configured shell on the remote node. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| (free form) | N/A | N/A | the command module takes a free form command to run | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| creates | no | | a filename, when it already exists, this step will NOT be run | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| chdir | no | | cd into this directory before running the command (0.6 and later) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -The given command will be executed on all selected nodes. - -.. note:: - If you want to execute a command securely and predicably, it may be - better to use the 'command' module instead. Best practices when - writing playbooks will follow the trend of using 'command' unless - 'shell' is explicitly required. When running ad-hoc commands, use - your best judgement. - -Example action from a playbook:: - - shell somescript.sh >> somelog.txt - - -.. _supervisorctl: - -supervisorctl -````````````` - -.. versionadded:: 0.7 - -Manage the state of a program or group of programs running via Supervisord - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | The name of the supervisord program/process to manage | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | yes | | 'started', 'stopped' or 'restarted' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from a playbook:: - - supervisorctl name=my_app state=started - - -.. _template: - -template -```````` - -Templates a file out to a remote server. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| src | yes | | Path of a Jinja2 formatted template on the local server. This can be | -| | | | a relative or absolute path. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| dest | yes | | Location to render the template on the remote server | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| OTHERS | | | This module also supports all of the arguments to the file module | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from a playbook:: - - template src=/srv/mytemplates/foo.j2 dest=/etc/foo.conf owner=foo group=foo mode=0644 - - -.. _user: - -user -```` - -Creates user accounts, manipulates existing user accounts, and removes user accounts. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | name of the user to create, remove, or edit | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| comment | | | optionally sets the description of the user | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| uid | | | optionally sets the uid of the user | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| group | | | optionally sets the user's primary group (takes a group name) | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| groups | | | puts the user in this comma-delimited list of groups | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| append | | no | if 'yes', will only add groups, not set them to just the list in 'groups' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| shell | | | optionally set the user's shell | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| createhome | | yes | unless 'no', a home directory will be made for the user | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| home | | | sets where the user's homedir should be, if not the default | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| password | | | optionally set the user's password to this crypted value. See the user's | -| | | | example in the github examples directory for what this looks like in a | -| | | | playbook | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | | present | when 'absent', removes the user. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| system | | no | only when initially creating, setting this to 'yes' makes the user a | -| | | | system account. This setting cannot be changed on existing users. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| force | | no | when used with state=absent, behavior is as with userdel --force | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| remove | | no | when used with state=remove, behavior is as with userdel --remove | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - user name=mdehaan comment=awesome passwd=awWxVV.JvmdHw createhome=yes - user name=mdehaan groups=wheel,skynet - user name=mdehaan state=absent force=yes - -.. _virt: - -virt -```` - -Manages virtual machines supported by libvirt. Requires that libvirt be installed -on the managed machine. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | name of the guest VM being managed | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | | | 'running', 'shutdown', 'destroyed', or 'undefined'. Note that there may | -| | | | be some lag for state requests like 'shutdown' since these refer only to | -| | | | VM states. After starting a guest, it may not be immediately accessible. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| command | | | in addition to state management, various non-idempotent commands are | -| | | | available. See examples below. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - virt guest=alpha state=running - virt guest=alpha state=shutdown - virt guest=alpha state=destroyed - virt guest=alpha state=undefined - -Example guest management commands from /usr/bin/ansible:: - - ansible host -m virt -a "guest=foo command=status" - ansible host -m virt -a "guest=foo command=pause" - ansible host -m virt -a "guest=foo command=unpause" - ansible host -m virt -a "guest=foo command=get_xml" - ansible host -m virt -a "guest=foo command=autostart" - -Example host (hypervisor) management commands from /usr/bin/ansible:: - - ansible host -m virt -a "command=freemem" - ansible host -m virt -a "command=list_vms" - ansible host -m virt -a "command=info" - ansible host -m virt -a "command=nodeinfo" - ansible host -m virt -a "command=virttype" - -.. _yum: - -yum -``` - -Will install, upgrade, remove, and list packages with the yum package manager. - -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| parameter | required | default | comments | -+====================+==========+=========+============================================================================+ -| name | yes | | package name, or package specifier with version, like 'name-1.0' | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| state | | present | 'present', 'latest', or 'absent'. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ -| list | | | various non-idempotent commands for usage with /usr/bin/ansible and not | -| | | | playbooks. See examples below. | -+--------------------+----------+---------+----------------------------------------------------------------------------+ - -Example action from Ansible :doc:`playbooks`:: - - yum name=httpd state=latest - yum name=httpd state=removed - yum name=httpd state=installed Additional Contrib Modules diff --git a/rst/modules/apt.rst b/rst/modules/apt.rst new file mode 100644 index 00000000000..7299e1263b1 --- /dev/null +++ b/rst/modules/apt.rst @@ -0,0 +1,36 @@ +.. _apt: + +apt +``` + +Manages apt-packages (such as for Debian/Ubuntu). + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | no | | A package name or package specifier with version, like `foo` or `foo=1.0` | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | no | present | 'absent', 'present', or 'latest'. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| update_cache | no | no | Run the equivalent of apt-get update before the operation. | +| | | | Can be run as part of the package installation or a seperate step | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| purge | no | no | Will forge purge of configuration files if state is set to 'absent'. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| default_release | no | | Corresponds to the -t option for apt and sets pin priorities | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| install_recommends | no | yes | Corresponds to the --no-install-recommends option for apt, default | +| | | | behavior works as apt's default behavior, 'no' does not install | +| | | | recommended packages. Suggested packages are never installed. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| force | no | no | If 'yes', force installs/removes. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + apt pkg=foo update-cache=yes + apt pkg=foo state=removed + apt pkg=foo state=installed + apt pkg=foo=1.00 state=installed + apt pkg=nginx state=latest default-release=squeeze-backports update-cache=yes + apt pkg=openjdk-6-jdk state=latest install-recommends=no diff --git a/rst/modules/apt_repository.rst b/rst/modules/apt_repository.rst new file mode 100644 index 00000000000..c28e91fbdaf --- /dev/null +++ b/rst/modules/apt_repository.rst @@ -0,0 +1,21 @@ +.. _apt_repository: + +apt_repository +`````````````` + +.. versionadded:: 0.7 + +Manages apt repositores + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| repo | yes | | The repository name/value | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | no | present | 'absent' or 'present' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + apt_repository repo=ppa:nginx/stable + apt_repository repo='deb http://archive.canonical.com/ubuntu hardy partner' diff --git a/rst/modules/assemble.rst b/rst/modules/assemble.rst new file mode 100644 index 00000000000..160d2cd4152 --- /dev/null +++ b/rst/modules/assemble.rst @@ -0,0 +1,28 @@ +.. _assemble: + +assemble +```````` + +.. versionadded:: 0.5 + +Assembles a configuration file from fragments. Often a particular +program will take a single configuration file and does not support a +conf.d style structure where it is easy to build up the configuration +from multiple sources. Assmeble will take a directory of files that +have already been transferred to the system, and concatenate them +together to produce a destination file. Files are assembled in string +sorting order. Puppet calls this idea "fragments". + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| src | yes | | An already existing directory full of source files | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dest | yes | | A file to create using the concatenation of all of the source files | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| OTHERS | | | All arguments that the file module takes may also be used | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + assemble src=/etc/someapp/fragments dest=/etc/someapp/someapp.conf diff --git a/rst/modules/authorized_key.rst b/rst/modules/authorized_key.rst new file mode 100644 index 00000000000..cacd4482450 --- /dev/null +++ b/rst/modules/authorized_key.rst @@ -0,0 +1,22 @@ +.. _authorized_key: + +authorized_key +`````````````` + +.. versionadded:: 0.5 + +Adds or removes an authorized key for a user from a remote host. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| user | yes | | Name of the user who should have access to the remote host | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| key | yes | | the SSH public key, as a string | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | no | present | whether the given key should or should not be in the file | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + authorized_key user=charlie key="ssh-dss ASDF1234L+8BTwaRYr/rycsBF1D8e5pTxEsXHQs4iq+mZdyWqlW++L6pMiam1A8yweP+rKtgjK2httVS6GigVsuWWfOd7/sdWippefq74nppVUELHPKkaIOjJNN1zUHFoL/YMwAAAEBALnAsQN10TNGsRDe5arBsW8cTOjqLyYBcIqgPYTZW8zENErFxt7ij3fW3Jh/sCpnmy8rkS7FyK8ULX0PEy/2yDx8/5rXgMIICbRH/XaBy9Ud5bRBFVkEDu/r+rXP33wFPHjWjwvHAtfci1NRBAudQI/98DbcGQw5HmE89CjgZRo5ktkC5yu/8agEPocVjdHyZr7PaHfxZGUDGKtGRL2QzRYukCmWo1cZbMBHcI5FzImvTHS9/8B3SATjXMPgbfBuEeBwuBK5EjL+CtHY5bWs9kmYjmeo0KfUMH8hY4MAXDoKhQ7DhBPIrcjS5jPtoGxIREZjba67r6/P2XKXaCZH6Fc= charlie@example.org 2011-01-17" diff --git a/rst/modules/command.rst b/rst/modules/command.rst new file mode 100644 index 00000000000..0f1556ae9f8 --- /dev/null +++ b/rst/modules/command.rst @@ -0,0 +1,39 @@ +.. _command: + + +command +``````` + +The command module takes the command name followed by a list of +arguments, space delimited. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| (free form) | N/A | N/A | the command module takes a free form command to run | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| creates | no | | a filename, when it already exists, this step will NOT be run | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| chdir | no | | cd into this directory before running the command (0.6 and later) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +The given command will be executed on all selected nodes. It will not +be processed through the shell, so variables like "$HOME" and +operations like "<", ">", "|", and "&" will not work. As such, all +paths to commands must be fully qualified. + +.. note:: + If you want to run a command through the shell (say you are using + '<', '>', '|', etc), you actually want the 'shell' module instead. + The 'command' module is much more secure as it's not affected by + the user's environment. + +Example action from Ansible :doc:`playbooks`:: + + command /sbin/shutdown -t now + +creates and chdir can be specified after the command. For instance, if you only want to run a command if a certain file does not exist, you can do the following:: + + command /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database + +The `creates=` and `chdir` options will not be passed to the actual executable. diff --git a/rst/modules/copy.rst b/rst/modules/copy.rst new file mode 100644 index 00000000000..41811997d0c --- /dev/null +++ b/rst/modules/copy.rst @@ -0,0 +1,23 @@ +.. _copy: + +copy +```` + +The copy module moves a file on the local box to remote locations. In addition to the options +listed below, the arguments available to the `file` module can also be passed to the copy +module. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| src | yes | | Local path to a file to copy to the remote server, can be absolute or | +| | | | relative. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dest | yes | | Remote absolute path where the file should end up | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| OTHERS | | | All arguments the file module takes are also supported | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + copy src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode=0644 diff --git a/rst/modules/easy_install.rst b/rst/modules/easy_install.rst new file mode 100644 index 00000000000..a3eb4a3f928 --- /dev/null +++ b/rst/modules/easy_install.rst @@ -0,0 +1,30 @@ +.. _easy_install: + +easy_install +```````````` + +.. versionadded:: 0.7 + +The easy_install module installs Python libraries. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | a Python library name | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| virtualenv | no | | an optional virtualenv directory path to install into, if the virtualenv | +| | | | does not exist it is created automatically | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Please note that the easy_install command can only install Python libraries. +Thus this module is not able to remove libraries. It is generally recommended to +use the :ref:`pip` module which you can first install using easy_install. + +Also note that `virtualenv `_ must be installed on +the remote host if the `virtualenv` parameter is specified. + +Example action from Ansible :doc:`playbooks`:: + + easy_install name=pip + easy_install name=flask==0.8 + easy_install name=flask virtualenv=/srv/webapps/my_app/venv diff --git a/rst/modules/facter.rst b/rst/modules/facter.rst new file mode 100644 index 00000000000..297c336aa64 --- /dev/null +++ b/rst/modules/facter.rst @@ -0,0 +1,16 @@ +.. _facter: + +facter +`````` + +Runs the discovery program 'facter' on the remote system, returning +JSON data that can be useful for inventory purposes. + +Requires that 'facter' and 'ruby-json' be installed on the remote end. + +Playbooks do not actually use this module, they use the :ref:`setup` +module behind the scenes. + +Example from /usr/bin/ansible:: + + ansible foo.example.org -m facter diff --git a/rst/modules/fetch.rst b/rst/modules/fetch.rst new file mode 100644 index 00000000000..99da57e0cf0 --- /dev/null +++ b/rst/modules/fetch.rst @@ -0,0 +1,22 @@ +.. _fetch: + +fetch +````` + +This module works like 'copy', but in reverse. It is used for fetching files +from remote machines and storing them locally in a file tree, organized by hostname. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| src | yes | | The file on the remote system to fetch. This needs to be a file, not | +| | | | a directory. Recursive fetching may be supported in a later release. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dest | yes | | A directory to save the file into. For example, if the 'dest' directory | +| | | | is '/foo', a src file named '/tmp/bar' on host 'host.example.com', would | +| | | | be saved into '/foo/host.example.com/tmp/bar' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example:: + + fetch src=/var/log/messages dest=/home/logtree diff --git a/rst/modules/file.rst b/rst/modules/file.rst new file mode 100644 index 00000000000..1e084d47f63 --- /dev/null +++ b/rst/modules/file.rst @@ -0,0 +1,55 @@ +.. _file: + +file +```` + +Sets attributes of files, symlinks, and directories, or removes files/symlinks/directories. Many other modules +support the same options as the file module -- including 'copy', 'template', and 'assmeble'. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| dest | yes | | defines the file being managed, unless when used with state=link, and | +| | | | then sets the destination to create a symbolic link to using 'src' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | | file | values are 'file', 'link', 'directory', or 'absent'. If directory, | +| | | | all immediate subdirectories will be created if they do not exist. If | +| | | | 'file', the file will NOT be created if it does not exist, see the 'copy' | +| | | | or 'template' module if you want that behavior. If 'link', the symbolic | +| | | | link will be created or changed. If absent, directories will be | +| | | | recursively deleted, and files or symlinks will be unlinked. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| mode | | | mode the file or directory shoudl be, such as 0644 as would be fed to | +| | | | chmod. English modes like 'g+x' are not yet supported | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| owner | | | name of the user that should own the file/directory, as would be fed to | +| | | | chown | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| group | | | name of the group that should own the file/directory, as would be fed to | +| | | | group | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| src | | | path of the file to link to (applies only to state=link) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| seuser | | | user part of SELinux file context. Will default to system policy, if | +| | | | applicable. If set to '_default', it will use the 'user' portion of the | +| | | | the policy if available | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| serole | | | role part of SELinux file context, '_default' feature works as above. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| setype | | | type part of SELinux file context, '_default' feature works as above | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| selevel | | s0 | level part of the SELinux file context. This is the MLS/MCS attribute, | +| | | | sometimes known as the 'range'. '_default' feature works as above | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| context | | | accepts only 'default' as a value. This will restore a file's selinux | +| | | | context in the policy. Does nothing if no default is available. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + file path=/etc/foo.conf owner=foo group=foo mode=0644 + file path=/some/path owner=foo group=foo state=directory + file path=/path/to/delete state=absent + file src=/file/to/link/to dest=/path/to/symlink owner=foo group=foo state=link + file path=/some/path state=directory setype=httpd_sys_content_t + file path=/some/path state=directory context=default diff --git a/rst/modules/get_url.rst b/rst/modules/get_url.rst new file mode 100644 index 00000000000..50076c008fd --- /dev/null +++ b/rst/modules/get_url.rst @@ -0,0 +1,27 @@ +.. _get_url: + +get_url +``````` + +Downloads files from http, https, or ftp to the remote server. The remote server must have direct +access to the remote resource. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| url | yes | | http, https, or ftp URL | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dest | yes | | absolute path of where to download the file to. If dest is a directory, | +| | | | the basename of the file on the remote server will be used. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| OTHERS | no | | all arguments accepted by the file module also work here | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + - name: Grab a bunch of jQuery stuff + action: get_url url=http://code.jquery.com/$item dest=${jquery_directory} mode=0444 + with_items: + - jquery.min.js + - mobile/latest/jquery.mobile.min.js + - ui/jquery-ui-git.css diff --git a/rst/modules/git.rst b/rst/modules/git.rst new file mode 100644 index 00000000000..d6b67debf12 --- /dev/null +++ b/rst/modules/git.rst @@ -0,0 +1,23 @@ +.. _git: + +git +``` + +Deploys software (or files) from git checkouts. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| repo | yes | | git, ssh, or http protocol address of the git repo | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dest | yes | | absolute path of where the repo should be checked out to | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| version | no | HEAD | what version to check out -- either the git SHA, the literal string | +| | | | 'HEAD', branch name, or a tag name. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| remote | no | origin | name of the remote branch | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + git repo=git://foosball.example.org/path/to/repo.git dest=/srv/checkout version=release-0.22 diff --git a/rst/modules/group.rst b/rst/modules/group.rst new file mode 100644 index 00000000000..20adba73355 --- /dev/null +++ b/rst/modules/group.rst @@ -0,0 +1,24 @@ +.. _group: + +group +````` + +Adds or removes groups. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | name of the group | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| gid | | | optional git to set for the group | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | | present | 'absent' or 'present' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| system | | no | if 'yes', indicates that the group being created is a system group. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +To control members of the group, see the users resource. + +Example action from Ansible :doc:`playbooks`:: + + group name=somegroup state=present diff --git a/rst/modules/mount.rst b/rst/modules/mount.rst new file mode 100644 index 00000000000..c7beb6cb25a --- /dev/null +++ b/rst/modules/mount.rst @@ -0,0 +1,26 @@ +.. _mount: + +mount +````` + +The mount module controls active and configured mount points (fstab). + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | path to the mountpoint, ex: /mnt/foo | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| src | yes | | device to be mounted | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| fstype | yes | | fstype | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| opts | no | | mount options (see fstab docs) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dump | no | | dump (see fstab docs) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| passno | no | | passno (see fstab docs) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | yes | | 'present', 'absent', 'mounted', or 'unmounted'. If mounted/unmounted, | +| | | | the device will be actively mounted or unmounted as well as just | +| | | | configured in fstab. 'absent', and 'present' only deal with fstab. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ diff --git a/rst/modules/mysql_db.rst b/rst/modules/mysql_db.rst new file mode 100644 index 00000000000..4de108be439 --- /dev/null +++ b/rst/modules/mysql_db.rst @@ -0,0 +1,36 @@ +.. _mysql_db: + +mysql_db +```````` + +Add or remove MySQL databases from a remote host. + +Requires the MySQLdb Python package on the remote host. For Ubuntu, this is as easy as +apt-get install python-mysqldb. + ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+===========+=============================================================================+ +| name | yes | | name of the database to add or remove | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| login_user | no | | user name used to authenticate with | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| login_password | no | | password used to authenticate with | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| login_host | no | localhost | host running the database | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| state | no | present | 'absent' or 'present' | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| collation | no | | collation mode | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ +| encoding | no | | encoding mode | ++--------------------+----------+-----------+-----------------------------------------------------------------------------+ + +Both 'login_password' and 'login_username' are required when you are passing credentials. +If none are present, the module will attempt to read the credentials from ~/.my.cnf, and +finally fall back to using the MySQL default login of 'root' with no password. + +Example action from Ansible :doc:`playbooks`:: + + - name: Create database + action: mysql_db db=bobdata state=present diff --git a/rst/modules/mysql_user.rst b/rst/modules/mysql_user.rst new file mode 100644 index 00000000000..29472eb83ea --- /dev/null +++ b/rst/modules/mysql_user.rst @@ -0,0 +1,43 @@ +mysql_user +`````````` + +Adds or removes a user from a MySQL database. + +Requires the MySQLdb Python package on the remote host. For Ubuntu, this is as easy as +apt-get install python-mysqldb. + ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+============+============================================================================+ +| name | yes | | name of the user (role) to add or remove | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| password | no | | set the user's password | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| host | no | localhost | the 'host' part of the MySQL username | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| login_user | no | | user name used to authenticate with | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| login_password | no | | password used to authenticate with | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| login_host | no | localhost | host running MySQL. | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| priv | no | | MySQL privileges string in the format: db.table:priv1,priv2 | ++--------------------+----------+------------+----------------------------------------------------------------------------+ +| state | no | present | 'absent' or 'present' | ++--------------------+----------+------------+----------------------------------------------------------------------------+ + +Both 'login_password' and 'login_username' are required when you are passing credentials. +If none are present, the module will attempt to read the credentials from ~/.my.cnf, and +finally fall back to using the MySQL default login of 'root' with no password. + +Example privileges string format: + + mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL + +Example action from Ansible :doc:`playbooks`:: + + - name: Create database user + action: mysql_user name=bob passwd=12345 priv=*.*:ALL state=present + + - name: Ensure no user named 'sally' exists, also passing in the auth credentials. + action: mysql_user login_user=root login_password=123456 name=sally state=absent diff --git a/rst/modules/ohai.rst b/rst/modules/ohai.rst new file mode 100644 index 00000000000..184a2e56ffa --- /dev/null +++ b/rst/modules/ohai.rst @@ -0,0 +1,16 @@ +.. _ohai: + +ohai +```` + +Similar to the :ref:`facter` module, this returns JSON inventory data. +Ohai data is a bit more verbose and nested than facter. + +Requires that 'ohai' be installed on the remote end. + +Playbooks should not call the ohai module, playbooks call the +:ref:`setup` module behind the scenes instead. + +Example:: + + ansible foo.example.org -m ohai diff --git a/rst/modules/ping.rst b/rst/modules/ping.rst new file mode 100644 index 00000000000..15ebba2c2bc --- /dev/null +++ b/rst/modules/ping.rst @@ -0,0 +1,10 @@ +.. _ping: + +ping +```` + +A trivial test module, this module always returns 'pong' on +successful contact. It does not make sense in playbooks, but is useful +from /usr/bin/ansible:: + + ansible webservers -m ping diff --git a/rst/modules/pip.rst b/rst/modules/pip.rst new file mode 100644 index 00000000000..a820b10825d --- /dev/null +++ b/rst/modules/pip.rst @@ -0,0 +1,34 @@ +.. _pip: + +pip +``` + +.. versionadded:: 0.7 + +Manages Python library dependencies. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | no | | The name of a Python library to install | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| version | no | | The version number to install of the Python library specified in the | +| | | | 'name' parameter | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| requirements | no | | The path to a pip requirements file | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| virtualenv | no | | An optional path to a virtualenv directory to install into | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | no | present | 'present', 'absent' or 'latest' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Please note that `virtualenv `_ must be installed on +the remote host if the `virtualenv` parameter is specified. + +Examples:: + + pip name=flask + pip name=flask version=0.8 + pip name=flask virtualenv=/srv/webapps/my_app/venv + pip requirements=/srv/webapps/my_app/src/requirements.txt + pip requirements=/srv/webapps/my_app/src/requirements.txt virtualenv=/srv/webapps/my_app/venv diff --git a/rst/modules/postgresql_db.rst b/rst/modules/postgresql_db.rst new file mode 100644 index 00000000000..d5a3bbe32ae --- /dev/null +++ b/rst/modules/postgresql_db.rst @@ -0,0 +1,35 @@ +.. _postgresql_db: + +postgresql_db +````````````` + +Add or remove PostgreSQL databases from a remote host. + +The default authentication assumes that you are either logging in as or +sudo'ing to the postgres account on the host. + +This module uses psycopg2, a Python PostgreSQL database adapter. You must +ensure that psycopg2 is installed on the host before using this module. If +the remote host is the PostgreSQL server (which is the default case), then +PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, +install the postgresql, libpq-dev, and python-psycopg2 packages on the remote +host before using this module. + + ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+==========+============================================================================+ +| name | yes | | name of the database to add or remove | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| login_user | no | postgres | user (role) used to authenticate with PostgreSQL | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| login_password | no | | password used to authenticate with PostgreSQL | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| login_host | no | | host running PostgreSQL. Default (blank) implies localhost | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| state | | present | 'absent' or 'present' | ++--------------------+----------+----------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + postgresql_db db=acme diff --git a/rst/modules/postgresql_user.rst b/rst/modules/postgresql_user.rst new file mode 100644 index 00000000000..ea0c065ab41 --- /dev/null +++ b/rst/modules/postgresql_user.rst @@ -0,0 +1,40 @@ +.. _postgresql_user: + +postgresql_user +``````````````` + +Add or remove PostgreSQL users (roles) from a remote host, and grant the users +access to an existing database. + +The default authentication assumes that you are either logging in as or +sudo'ing to the postgres account on the host. + +This module uses psycopg2, a Python PostgreSQL database adapter. You must +ensure that psycopg2 is installed on the host before using this module. If +the remote host is the PostgreSQL server (which is the default case), then +PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, +install the postgresql, libpq-dev, and python-psycopg2 packages on the remote +host before using this module. + ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+==========+============================================================================+ +| name | yes | | name of the user (role) to add or remove | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| password | yes | | set the user's password | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| db | yes | | name of an existing database to grant user access to | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| login_user | no | postgres | user (role) used to authenticate with PostgreSQL | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| login_password | no | | password used to authenticate with PostgreSQL | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| login_host | no | | host running PostgreSQL. Default (blank) implies localhost | ++--------------------+----------+----------+----------------------------------------------------------------------------+ +| state | | present | 'absent' or 'present' | ++--------------------+----------+----------+----------------------------------------------------------------------------+ + + +Example action from Ansible :doc:`playbooks`:: + + postgresql_user db=acme user=django password=ceec4eif7ya diff --git a/rst/modules/raw.rst b/rst/modules/raw.rst new file mode 100644 index 00000000000..737569800ca --- /dev/null +++ b/rst/modules/raw.rst @@ -0,0 +1,20 @@ +.. _raw: + +raw +``` + +Executes a low-down and dirty SSH command, not going through the module subsystem. + +This is useful and should only be done in two cases. The first case is installing +python-simplejson on older (python 2.4 and before) hosts that need it as a dependency +to run modules, since nearly all core modules require it. Another is speaking to any +devices such as routers that do not have any Python installed. In any other case, +using the 'shell' or 'command' module is much more appropriate. + +Arguments given to 'raw' are run directly through the configured remote shell and +only output is returned. There is no error detection or change handler support +for this module. + +Example from `/usr/bin/ansible` to bootstrap a legacy python 2.4 host:: + + ansible newhost.example.com -m raw -a "yum -y install python-simplejson" diff --git a/rst/modules/service.rst b/rst/modules/service.rst new file mode 100644 index 00000000000..e9fab2cb06b --- /dev/null +++ b/rst/modules/service.rst @@ -0,0 +1,25 @@ +.. _service: + +service +``````` + +Controls services on remote machines. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | name of the service | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | no | started | 'started', 'stopped', 'reloaded', or 'restarted'. Started/stopped are | +| | | | idempotent actions that will not run commands unless neccessary. | +| | | | 'restarted' will always bounce the service, 'reloaded' will always reload. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| enabled | no | | Whether the service should start on boot. Either 'yes' or 'no'. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + service name=httpd state=started + service name=httpd state=stopped + service name=httpd state=restarted + service name=httpd state=reloaded diff --git a/rst/modules/setup.rst b/rst/modules/setup.rst new file mode 100644 index 00000000000..22bf3a1b321 --- /dev/null +++ b/rst/modules/setup.rst @@ -0,0 +1,90 @@ +.. _setup: + +setup +````` + +This module is automatically called by playbooks to gather useful variables about remote hosts that can be used +in playbooks. It can also be executed directly by /usr/bin/ansible to check what variables are available +to a host. + +Ansible provides many 'facts' about the system, automatically. + +Some of the variables that are supplied are listed below. These in particular +are from a VMWare Fusion 4 VM running CentOS 6.2:: + + "ansible_architecture": "x86_64", + "ansible_distribution": "CentOS", + "ansible_distribution_release": "Final", + "ansible_distribution_version": "6.2", + "ansible_eth0": { + "ipv4": { + "address": "REDACTED", + "netmask": "255.255.255.0" + }, + "ipv6": [ + { + "address": "REDACTED", + "prefix": "64", + "scope": "link" + } + ], + "macaddress": "REDACTED" + }, + "ansible_form_factor": "Other", + "ansible_fqdn": "localhost.localdomain", + "ansible_hostname": "localhost", + "ansible_interfaces": [ + "lo", + "eth0" + ], + "ansible_kernel": "2.6.32-220.2.1.el6.x86_64", + "ansible_lo": { + "ipv4": { + "address": "127.0.0.1", + "netmask": "255.0.0.0" + }, + "ipv6": [ + { + "address": "::1", + "prefix": "128", + "scope": "host" + } + ], + "ansible_machine": "x86_64", + "ansible_memfree_mb": 89, + "ansible_memtotal_mb": 993, + "ansible_processor": [ + "Intel(R) Core(TM) i7-2677M CPU @ 1.80GHz" + ], + "ansible_processor_cores": "NA", + "ansible_processor_count": 1, + "ansible_product_name": "VMware Virtual Platform", + "ansible_product_serial": "REDACTED", + "ansible_product_uuid": "REDACTED", + "ansible_product_version": "None", + "ansible_python_version": "2.6.6", + "ansible_product_version": "None", + "ansible_python_version": "2.6.6", + "ansible_ssh_host_key_dsa_public": REDACTED", + "ansible_ssh_host_key_rsa_public": "REDACTED", + "ansible_swapfree_mb": 1822, + "ansible_swaptotal_mb": 2015, + "ansible_system": "Linux", + "ansible_system_vendor": "VMware, Inc.", + "ansible_virtualization_role": "None", + "ansible_virtualization_type": "None", + +More ansible facts will be added with successive releases. + +If facter or ohai are installed, variables from these programs will +also be snapshotted into the JSON file for usage in templating. These +variables are prefixed with ``facter_`` and ``ohai_`` so it's easy to +tell their source. + +All variables are bubbled up to the caller. Using the ansible facts and choosing +to not install facter and ohai means you can avoid ruby-dependencies +on your remote systems. + +Example action from `/usr/bin/ansible`:: + + ansible testserver -m setup diff --git a/rst/modules/shell.rst b/rst/modules/shell.rst new file mode 100644 index 00000000000..281107eaeb1 --- /dev/null +++ b/rst/modules/shell.rst @@ -0,0 +1,31 @@ +.. _shell: + +shell +````` + +The shell module takes the command name followed by a list of +arguments, space delimited. It is almost exactly like the command module +but runs the command through the user's configured shell on the remote node. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| (free form) | N/A | N/A | the command module takes a free form command to run | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| creates | no | | a filename, when it already exists, this step will NOT be run | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| chdir | no | | cd into this directory before running the command (0.6 and later) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +The given command will be executed on all selected nodes. + +.. note:: + If you want to execute a command securely and predicably, it may be + better to use the 'command' module instead. Best practices when + writing playbooks will follow the trend of using 'command' unless + 'shell' is explicitly required. When running ad-hoc commands, use + your best judgement. + +Example action from a playbook:: + + shell somescript.sh >> somelog.txt diff --git a/rst/modules/supervisorctl.rst b/rst/modules/supervisorctl.rst new file mode 100644 index 00000000000..074808c5940 --- /dev/null +++ b/rst/modules/supervisorctl.rst @@ -0,0 +1,20 @@ +.. _supervisorctl: + +supervisorctl +````````````` + +.. versionadded:: 0.7 + +Manage the state of a program or group of programs running via Supervisord + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | The name of the supervisord program/process to manage | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | yes | | 'started', 'stopped' or 'restarted' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from a playbook:: + + supervisorctl name=my_app state=started diff --git a/rst/modules/template.rst b/rst/modules/template.rst new file mode 100644 index 00000000000..a121c585e8e --- /dev/null +++ b/rst/modules/template.rst @@ -0,0 +1,21 @@ +.. _template: + +template +```````` + +Templates a file out to a remote server. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| src | yes | | Path of a Jinja2 formatted template on the local server. This can be | +| | | | a relative or absolute path. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| dest | yes | | Location to render the template on the remote server | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| OTHERS | | | This module also supports all of the arguments to the file module | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from a playbook:: + + template src=/srv/mytemplates/foo.j2 dest=/etc/foo.conf owner=foo group=foo mode=0644 diff --git a/rst/modules/user.rst b/rst/modules/user.rst new file mode 100644 index 00000000000..8f4be3566df --- /dev/null +++ b/rst/modules/user.rst @@ -0,0 +1,47 @@ +.. _user: + +user +```` + +Creates user accounts, manipulates existing user accounts, and removes user accounts. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | name of the user to create, remove, or edit | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| comment | | | optionally sets the description of the user | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| uid | | | optionally sets the uid of the user | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| group | | | optionally sets the user's primary group (takes a group name) | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| groups | | | puts the user in this comma-delimited list of groups | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| append | | no | if 'yes', will only add groups, not set them to just the list in 'groups' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| shell | | | optionally set the user's shell | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| createhome | | yes | unless 'no', a home directory will be made for the user | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| home | | | sets where the user's homedir should be, if not the default | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| password | | | optionally set the user's password to this crypted value. See the user's | +| | | | example in the github examples directory for what this looks like in a | +| | | | playbook | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | | present | when 'absent', removes the user. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| system | | no | only when initially creating, setting this to 'yes' makes the user a | +| | | | system account. This setting cannot be changed on existing users. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| force | | no | when used with state=absent, behavior is as with userdel --force | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| remove | | no | when used with state=remove, behavior is as with userdel --remove | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + user name=mdehaan comment=awesome passwd=awWxVV.JvmdHw createhome=yes + user name=mdehaan groups=wheel,skynet + user name=mdehaan state=absent force=yes diff --git a/rst/modules/virt.rst b/rst/modules/virt.rst new file mode 100644 index 00000000000..06348f99beb --- /dev/null +++ b/rst/modules/virt.rst @@ -0,0 +1,43 @@ +.. _virt: + +virt +```` + +Manages virtual machines supported by libvirt. Requires that libvirt be installed +on the managed machine. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | name of the guest VM being managed | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | | | 'running', 'shutdown', 'destroyed', or 'undefined'. Note that there may | +| | | | be some lag for state requests like 'shutdown' since these refer only to | +| | | | VM states. After starting a guest, it may not be immediately accessible. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| command | | | in addition to state management, various non-idempotent commands are | +| | | | available. See examples below. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + virt guest=alpha state=running + virt guest=alpha state=shutdown + virt guest=alpha state=destroyed + virt guest=alpha state=undefined + +Example guest management commands from /usr/bin/ansible:: + + ansible host -m virt -a "guest=foo command=status" + ansible host -m virt -a "guest=foo command=pause" + ansible host -m virt -a "guest=foo command=unpause" + ansible host -m virt -a "guest=foo command=get_xml" + ansible host -m virt -a "guest=foo command=autostart" + +Example host (hypervisor) management commands from /usr/bin/ansible:: + + ansible host -m virt -a "command=freemem" + ansible host -m virt -a "command=list_vms" + ansible host -m virt -a "command=info" + ansible host -m virt -a "command=nodeinfo" + ansible host -m virt -a "command=virttype" diff --git a/rst/modules/yum.rst b/rst/modules/yum.rst new file mode 100644 index 00000000000..c46165606fd --- /dev/null +++ b/rst/modules/yum.rst @@ -0,0 +1,23 @@ +.. _yum: + +yum +``` + +Will install, upgrade, remove, and list packages with the yum package manager. + ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| parameter | required | default | comments | ++====================+==========+=========+============================================================================+ +| name | yes | | package name, or package specifier with version, like 'name-1.0' | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| state | | present | 'present', 'latest', or 'absent'. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ +| list | | | various non-idempotent commands for usage with /usr/bin/ansible and not | +| | | | playbooks. See examples below. | ++--------------------+----------+---------+----------------------------------------------------------------------------+ + +Example action from Ansible :doc:`playbooks`:: + + yum name=httpd state=latest + yum name=httpd state=removed + yum name=httpd state=installed