2012-03-08 19:36:47 +01:00
|
|
|
Ansible Modules
|
|
|
|
===============
|
|
|
|
|
2012-08-28 21:41:10 +02:00
|
|
|
.. contents::
|
|
|
|
:depth: 2
|
|
|
|
:backlinks: top
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
````````````
|
|
|
|
|
|
|
|
|
2012-08-03 17:31:43 +02:00
|
|
|
Ansible ships with a number of modules (called the 'module library')
|
2012-03-31 16:38:24 +02:00
|
|
|
that can be executed directly on remote hosts or through :doc:`playbooks`.
|
|
|
|
Users can also write their own modules. These modules can control system
|
2012-08-03 17:31:43 +02:00
|
|
|
resources, like services, packages, or files (anything really), or
|
|
|
|
handle executing system commands.
|
2012-03-08 19:53:48 +01:00
|
|
|
|
2012-03-31 16:38:24 +02:00
|
|
|
Let's review how we execute three different modules from the command line::
|
|
|
|
|
|
|
|
ansible webservers -m service -a "name=httpd state=running"
|
|
|
|
ansible webservers -m ping
|
|
|
|
ansible webservers -m command -a "/sbin/reboot -t now"
|
|
|
|
|
2012-08-03 17:31:43 +02:00
|
|
|
Each module supports taking arguments. Nearly all modules take ``key=value``
|
|
|
|
arguments, space delimited. Some modules take no arguments, and the
|
2012-07-28 02:35:45 +02:00
|
|
|
command/shell modules simply take the string of the command you want to run.
|
2012-03-09 04:50:00 +01:00
|
|
|
|
2012-03-31 16:38:24 +02:00
|
|
|
From playbooks, Ansible modules are executed in a very similar way::
|
|
|
|
|
|
|
|
- name: reboot the servers
|
2012-08-03 17:31:43 +02:00
|
|
|
action: command /sbin/reboot -t now
|
2012-03-31 16:38:24 +02:00
|
|
|
|
|
|
|
All modules technically return JSON format data, though if you are using the
|
2012-03-09 20:39:29 +01:00
|
|
|
command line or playbooks, you don't really need to know much about
|
2012-03-31 16:38:24 +02:00
|
|
|
that. If you're writing your own module, you care, and this means you do
|
2012-05-02 07:35:02 +02:00
|
|
|
not have to write modules in any particular language -- you get to choose.
|
2012-03-08 19:36:47 +01:00
|
|
|
|
2012-08-01 05:19:41 +02:00
|
|
|
Modules are `idempotent`, meaning they will seek to avoid changes to the system unless a change needs to be made. When using Ansible
|
|
|
|
playbooks, these modules can trigger 'change events' in the form of notifying 'handlers'
|
|
|
|
to run additional tasks.
|
2012-03-08 19:36:47 +01:00
|
|
|
|
2012-03-31 16:38:24 +02:00
|
|
|
Let's see what's available in the Ansible module library, out of the box:
|
2012-03-08 19:36:47 +01:00
|
|
|
|
2012-03-09 20:39:29 +01:00
|
|
|
|
2012-08-13 21:39:00 +02:00
|
|
|
.. 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
|
2012-08-27 21:12:12 +02:00
|
|
|
.. include:: modules/nagios.rst
|
2012-08-13 21:39:00 +02:00
|
|
|
.. 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
|
2012-08-25 03:13:08 +02:00
|
|
|
.. include:: modules/subversion.rst
|
2012-08-13 21:39:00 +02:00
|
|
|
.. include:: modules/supervisorctl.rst
|
|
|
|
.. include:: modules/template.rst
|
|
|
|
.. include:: modules/user.rst
|
|
|
|
.. include:: modules/virt.rst
|
|
|
|
.. include:: modules/yum.rst
|
2012-03-27 01:48:32 +02:00
|
|
|
|
2012-03-22 06:01:02 +01:00
|
|
|
|
|
|
|
|
2012-08-08 00:49:10 +02:00
|
|
|
Additional Contrib Modules
|
|
|
|
``````````````````````````
|
|
|
|
|
|
|
|
In addition to the following built-in modules, community modules are available at `Ansible Resources <http://github.com/ansible/ansible-resources>`_.
|
|
|
|
|
2012-03-09 04:50:00 +01:00
|
|
|
Writing your own modules
|
|
|
|
````````````````````````
|
2012-03-08 19:36:47 +01:00
|
|
|
|
2012-03-31 16:21:28 +02:00
|
|
|
See :doc:`moduledev`.
|
2012-03-31 15:29:31 +02:00
|
|
|
|
|
|
|
.. seealso::
|
|
|
|
|
2012-08-10 04:00:19 +02:00
|
|
|
`Ansible Resources (Contrib) <https://github.com/ansible/ansible-resources>`_
|
2012-08-08 00:49:10 +02:00
|
|
|
User contributed playbooks, modules, and articles
|
2012-03-31 15:29:31 +02:00
|
|
|
:doc:`examples`
|
2012-04-13 00:20:52 +02:00
|
|
|
Examples of using modules in /usr/bin/ansible
|
2012-03-31 15:29:31 +02:00
|
|
|
:doc:`playbooks`
|
2012-04-13 00:20:52 +02:00
|
|
|
Examples of using modules with /usr/bin/ansible-playbook
|
2012-03-31 16:21:28 +02:00
|
|
|
:doc:`moduledev`
|
|
|
|
How to write your own modules
|
2012-03-31 15:29:31 +02:00
|
|
|
:doc:`api`
|
|
|
|
Examples of using modules with the Python API
|
2012-04-13 00:20:52 +02:00
|
|
|
`Mailing List <http://groups.google.com/group/ansible-project>`_
|
2012-03-31 15:55:37 +02:00
|
|
|
Questions? Help? Ideas? Stop by the list on Google Groups
|
|
|
|
`irc.freenode.net <http://irc.freenode.net>`_
|
|
|
|
#ansible IRC chat channel
|
|
|
|
|