Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
41909d7f
Commit
41909d7f
authored
Oct 04, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More exciting anchor tags, document more loop features!
parent
b0d50333
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
127 additions
and
3 deletions
+127
-3
docsite/latest/rst/modules.rst
+3
-0
docsite/latest/rst/playbooks_acceleration.rst
+1
-1
docsite/latest/rst/playbooks_best_practices.rst
+37
-0
docsite/latest/rst/playbooks_checkmode.rst
+3
-0
docsite/latest/rst/playbooks_delegation.rst
+8
-0
docsite/latest/rst/playbooks_error_handling.rst
+4
-0
docsite/latest/rst/playbooks_loops.rst
+71
-2
No files found.
docsite/latest/rst/modules.rst
View file @
41909d7f
...
@@ -4,6 +4,8 @@ Ansible Modules
...
@@ -4,6 +4,8 @@ Ansible Modules
.. contents::
.. contents::
:depth: 3
:depth: 3
.. _modules_intro:
Introduction
Introduction
````````````
````````````
...
@@ -55,6 +57,7 @@ Let's see what's available in the Ansible module library, out of the box:
...
@@ -55,6 +57,7 @@ Let's see what's available in the Ansible module library, out of the box:
.. include:: modules/_list.rst
.. include:: modules/_list.rst
.. _writing_modules:
Writing your own modules
Writing your own modules
````````````````````````
````````````````````````
...
...
docsite/latest/rst/playbooks_acceleration.rst
View file @
41909d7f
...
@@ -54,7 +54,7 @@ As noted above, accelerated mode also supports running tasks via sudo, however t
...
@@ -54,7 +54,7 @@ As noted above, accelerated mode also supports running tasks via sudo, however t
* You must remove requiretty from your sudoers options.
* You must remove requiretty from your sudoers options.
* Prompting for the sudo password is not yet supported, so the NOPASSWD option is required for commands.
* Prompting for the sudo password is not yet supported, so the NOPASSWD option is required for commands.
.. _fireball_mode:
Fireball Mode
Fireball Mode
`````````````
`````````````
...
...
docsite/latest/rst/playbooks_best_practices.rst
View file @
41909d7f
...
@@ -8,6 +8,8 @@ You can find some example playbooks illustrating these best practices in our `an
...
@@ -8,6 +8,8 @@ You can find some example playbooks illustrating these best practices in our `an
.. contents::
.. contents::
:depth: 2
:depth: 2
.. _content_organization:
Content Organization
Content Organization
++++++++++++++++++++++
++++++++++++++++++++++
...
@@ -17,6 +19,8 @@ so feel free to modify this approach and organize as you see fit.
...
@@ -17,6 +19,8 @@ so feel free to modify this approach and organize as you see fit.
(One thing you will definitely want to do though, is use the "roles" organization feature, which is documented as part
(One thing you will definitely want to do though, is use the "roles" organization feature, which is documented as part
of the main playbooks page)
of the main playbooks page)
.. _directory_layout:
Directory Layout
Directory Layout
````````````````
````````````````
...
@@ -54,6 +58,8 @@ The top level of the directory would contain files and directories like so::
...
@@ -54,6 +58,8 @@ The top level of the directory would contain files and directories like so::
monitoring/ # ""
monitoring/ # ""
fooapp/ # ""
fooapp/ # ""
.. _stage_vs_prod:
How to Arrange Inventory, Stage vs Production
How to Arrange Inventory, Stage vs Production
`````````````````````````````````````````````
`````````````````````````````````````````````
...
@@ -97,6 +103,8 @@ data source as well, but this is just a basic example. Define groups based on p
...
@@ -97,6 +103,8 @@ data source as well, but this is just a basic example. Define groups based on p
boston-webservers
boston-webservers
boston-dbservers
boston-dbservers
.. _groups_and_hosts:
Group And Host Variables
Group And Host Variables
````````````````````````
````````````````````````
...
@@ -130,6 +138,8 @@ We can define specific hardware variance in systems in a host_vars file, but avo
...
@@ -130,6 +138,8 @@ We can define specific hardware variance in systems in a host_vars file, but avo
foo_agent_port: 86
foo_agent_port: 86
bar_agent_port: 99
bar_agent_port: 99
.. _role_vars:
Role Variables
Role Variables
``````````````
``````````````
...
@@ -140,6 +150,8 @@ Variables that are associated with a given role can be defined in a main.yml fil
...
@@ -140,6 +150,8 @@ Variables that are associated with a given role can be defined in a main.yml fil
python_version: "2.7.5"
python_version: "2.7.5"
pip_version: "1.3.1"
pip_version: "1.3.1"
.. _split_by_role:
Top Level Playbooks Are Separated By Role
Top Level Playbooks Are Separated By Role
`````````````````````````````````````````
`````````````````````````````````````````
...
@@ -160,6 +172,8 @@ In a file like webservers.yml (also at the top level), we simply map the configu
...
@@ -160,6 +172,8 @@ In a file like webservers.yml (also at the top level), we simply map the configu
- common
- common
- webtier
- webtier
.. _role_organization:
Task And Handler Organization For A Role
Task And Handler Organization For A Role
````````````````````````````````````````
````````````````````````````````````````
...
@@ -190,6 +204,8 @@ of each play::
...
@@ -190,6 +204,8 @@ of each play::
- name: restart ntpd
- name: restart ntpd
service: name=ntpd state=restarted
service: name=ntpd state=restarted
.. _organization_examples:
What This Organization Enables (Examples)
What This Organization Enables (Examples)
`````````````````````````````````````````
`````````````````````````````````````````
...
@@ -229,6 +245,8 @@ And there are some useful commands to know (at least in 1.1 and higher)::
...
@@ -229,6 +245,8 @@ And there are some useful commands to know (at least in 1.1 and higher)::
# confirm what hostnames might be communicated with if I said "limit to boston"
# confirm what hostnames might be communicated with if I said "limit to boston"
ansible-playbook -i production webservers.yml --limit boston --list-hosts
ansible-playbook -i production webservers.yml --limit boston --list-hosts
.. _dep_vs_config:
Deployment vs Configuration Organization
Deployment vs Configuration Organization
````````````````````````````````````````
````````````````````````````````````````
...
@@ -239,6 +257,8 @@ may be augmented by playbooks like 'deploy_exampledotcom.yml' but the general co
...
@@ -239,6 +257,8 @@ may be augmented by playbooks like 'deploy_exampledotcom.yml' but the general co
Ansible allows you to deploy and configure using the same tool, so you would likely reuse groups and just
Ansible allows you to deploy and configure using the same tool, so you would likely reuse groups and just
keep the OS configuration in separate playbooks from the app deployment.
keep the OS configuration in separate playbooks from the app deployment.
.. _stage_vs_prod:
Stage vs Production
Stage vs Production
+++++++++++++++++++
+++++++++++++++++++
...
@@ -247,18 +267,24 @@ As also mentioned above, a good way to keep your stage (or testing) and producti
...
@@ -247,18 +267,24 @@ As also mentioned above, a good way to keep your stage (or testing) and producti
Testing things in a stage environment before trying in production is always a great idea. Your environments need not be the same
Testing things in a stage environment before trying in production is always a great idea. Your environments need not be the same
size and you can use group variables to control the differences between those environments.
size and you can use group variables to control the differences between those environments.
.. _rolling_update:
Rolling Updates
Rolling Updates
+++++++++++++++
+++++++++++++++
Understand the 'serial' keyword. If updating a webserver farm you really want to use it to control how many machines you are
Understand the 'serial' keyword. If updating a webserver farm you really want to use it to control how many machines you are
updating at once in the batch.
updating at once in the batch.
.. _mention_the_state:
Always Mention The State
Always Mention The State
++++++++++++++++++++++++
++++++++++++++++++++++++
The 'state' parameter is optional to a lot of modules. Whether 'state=present' or 'state=absent', it's always best to leave that
The 'state' parameter is optional to a lot of modules. Whether 'state=present' or 'state=absent', it's always best to leave that
parameter in your playbooks to make it clear, especially as some modules support additional states.
parameter in your playbooks to make it clear, especially as some modules support additional states.
.. _group_by_roles:
Group By Roles
Group By Roles
++++++++++++++
++++++++++++++
...
@@ -268,6 +294,8 @@ A system can be in multiple groups. See :doc:`intro_inventory` and :doc:`intro_
...
@@ -268,6 +294,8 @@ A system can be in multiple groups. See :doc:`intro_inventory` and :doc:`intro_
This allows playbooks to target machines based on role, as well as to assign role specific variables
This allows playbooks to target machines based on role, as well as to assign role specific variables
using the group variable system.
using the group variable system.
.. _os_variance:
Operating System and Distribution Variance
Operating System and Distribution Variance
++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++
...
@@ -303,6 +331,7 @@ If group-specific settings are needed, this can also be done. For example::
...
@@ -303,6 +331,7 @@ If group-specific settings are needed, this can also be done. For example::
In the above example, CentOS machines get the value of '42' for asdf, but other machines get '10'.
In the above example, CentOS machines get the value of '42' for asdf, but other machines get '10'.
.. _ship_modules_with_playbooks:
Bundling Ansible Modules With Playbooks
Bundling Ansible Modules With Playbooks
+++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++
...
@@ -312,17 +341,23 @@ Bundling Ansible Modules With Playbooks
...
@@ -312,17 +341,23 @@ Bundling Ansible Modules With Playbooks
If a playbook has a "./library" directory relative to its YAML file, this directory can be used to add ansible modules that will
If a playbook has a "./library" directory relative to its YAML file, this directory can be used to add ansible modules that will
automatically be in the ansible module path. This is a great way to keep modules that go with a playbook together.
automatically be in the ansible module path. This is a great way to keep modules that go with a playbook together.
.. _whitespace:
Whitespace and Comments
Whitespace and Comments
+++++++++++++++++++++++
+++++++++++++++++++++++
Generous use of whitespace to break things up, and use of comments (which start with '#'), is encouraged.
Generous use of whitespace to break things up, and use of comments (which start with '#'), is encouraged.
.. _name_tasks:
Always Name Tasks
Always Name Tasks
+++++++++++++++++
+++++++++++++++++
It is possible to leave off the 'name' for a given task, though it is recommended to provide a description
It is possible to leave off the 'name' for a given task, though it is recommended to provide a description
about why something is being done instead. This name is shown when the playbook is run.
about why something is being done instead. This name is shown when the playbook is run.
.. _keep_it_simple:
Keep It Simple
Keep It Simple
++++++++++++++
++++++++++++++
...
@@ -332,6 +367,8 @@ for you. For example, you will probably not need 'vars',
...
@@ -332,6 +367,8 @@ for you. For example, you will probably not need 'vars',
'vars_files', 'vars_prompt' and '--extra-vars' all at once,
'vars_files', 'vars_prompt' and '--extra-vars' all at once,
while also using an external inventory file.
while also using an external inventory file.
.. _version_control:
Version Control
Version Control
+++++++++++++++
+++++++++++++++
...
...
docsite/latest/rst/playbooks_checkmode.rst
View file @
41909d7f
...
@@ -15,6 +15,8 @@ Example::
...
@@ -15,6 +15,8 @@ Example::
ansible-playbook foo.yml --check
ansible-playbook foo.yml --check
.. _forcing_to_run_in_check_mode:
Running a task in check mode
Running a task in check mode
````````````````````````````
````````````````````````````
...
@@ -37,6 +39,7 @@ As a reminder, a task with a `when` clause evaluated to false, will
...
@@ -37,6 +39,7 @@ As a reminder, a task with a `when` clause evaluated to false, will
still be skipped even if it has a `always_run` clause evaluated to
still be skipped even if it has a `always_run` clause evaluated to
true.
true.
.. _diff_mode:
Showing Differences with --diff
Showing Differences with --diff
```````````````````````````````
```````````````````````````````
...
...
docsite/latest/rst/playbooks_delegation.rst
View file @
41909d7f
...
@@ -13,6 +13,8 @@ at once during a rolling update.
...
@@ -13,6 +13,8 @@ at once during a rolling update.
This section covers all fo these features. For examples of these items in use, please see the 'ansible-examples' repository in
This section covers all fo these features. For examples of these items in use, please see the 'ansible-examples' repository in
the 'ansible' github organization.
the 'ansible' github organization.
.. _rolling_update_batch_size:
Rolling Update Batch Size
Rolling Update Batch Size
`````````````````````````
`````````````````````````
...
@@ -29,6 +31,8 @@ use case, you can define how many hosts Ansible should manage at a single time b
...
@@ -29,6 +31,8 @@ use case, you can define how many hosts Ansible should manage at a single time b
In the above example, if we had 100 hosts, 3 hosts in the group 'webservers'
In the above example, if we had 100 hosts, 3 hosts in the group 'webservers'
would complete the play completely before moving on to the next 3 hosts.
would complete the play completely before moving on to the next 3 hosts.
.. _maximum_failure_percentage:
Maximum Failure Percentage
Maximum Failure Percentage
``````````````````````````
``````````````````````````
...
@@ -50,6 +54,8 @@ In the above example, if more than 3 of the 10 servers in the group were to fail
...
@@ -50,6 +54,8 @@ In the above example, if more than 3 of the 10 servers in the group were to fail
The percentage set must be exceeded, not equaled. For example, if serial were set to 4 and you wanted the task to abort
The percentage set must be exceeded, not equaled. For example, if serial were set to 4 and you wanted the task to abort
when 2 of the systems failed, the percentage should be set at 49 rather than 50.
when 2 of the systems failed, the percentage should be set at 49 rather than 50.
.. _delegation:
Delegation
Delegation
``````````
``````````
...
@@ -106,6 +112,8 @@ Here is an example::
...
@@ -106,6 +112,8 @@ Here is an example::
Note that you must have passphrase-less SSH keys or an ssh-agent configured for this to work, otherwise rsync
Note that you must have passphrase-less SSH keys or an ssh-agent configured for this to work, otherwise rsync
will need to ask for a passphrase.
will need to ask for a passphrase.
.. _local_playbooks:
Local Playbooks
Local Playbooks
```````````````
```````````````
...
...
docsite/latest/rst/playbooks_error_handling.rst
View file @
41909d7f
...
@@ -9,6 +9,8 @@ need to report that it 'changed' the remote system. This section describes how
...
@@ -9,6 +9,8 @@ need to report that it 'changed' the remote system. This section describes how
the default behavior of Ansible for certain tasks so output and error handling behavior is
the default behavior of Ansible for certain tasks so output and error handling behavior is
as desired.
as desired.
.. _ignoring_failed_commands:
Ignoring Failed Commands
Ignoring Failed Commands
````````````````````````
````````````````````````
...
@@ -22,6 +24,8 @@ write a task that looks like this::
...
@@ -22,6 +24,8 @@ write a task that looks like this::
command: /bin/false
command: /bin/false
ignore_errors: yes
ignore_errors: yes
.. _override_the_changed_result:
Overriding The Changed Result
Overriding The Changed Result
`````````````````````````````
`````````````````````````````
...
...
docsite/latest/rst/playbooks_loops.rst
View file @
41909d7f
...
@@ -3,6 +3,7 @@ Loops
...
@@ -3,6 +3,7 @@ Loops
All about how to use loops in playbooks.
All about how to use loops in playbooks.
.. _standard_loops:
Standard Loops
Standard Loops
``````````````
``````````````
...
@@ -37,6 +38,8 @@ If you have a list of hashes, you can reference subkeys using things like::
...
@@ -37,6 +38,8 @@ If you have a list of hashes, you can reference subkeys using things like::
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
- { name: 'testuser2', groups: 'root' }
.. _nested_loops:
Nested Loops
Nested Loops
````````````
````````````
...
@@ -56,6 +59,8 @@ As with the case of 'with_items' above, you can use previously defined variables
...
@@ -56,6 +59,8 @@ As with the case of 'with_items' above, you can use previously defined variables
- users
- users
- [ 'clientdb', 'employeedb', 'providerdb' ]
- [ 'clientdb', 'employeedb', 'providerdb' ]
.. _looping_over_fileglobs:
Looping over Fileglobs
Looping over Fileglobs
``````````````````````
``````````````````````
...
@@ -78,13 +83,56 @@ be used like this::
...
@@ -78,13 +83,56 @@ be used like this::
Looping over Parallel Sets of Data
Looping over Parallel Sets of Data
``````````````````````````````````
``````````````````````````````````
Documentation for this feature is coming soon.
.. note:: This is an uncommon thing to want to do, but we're documenting it for completeness. You won't be reaching for this one often.
Suppose you have the following variable data was loaded in via somewhere::
---
alpha: [ 'a', 'b', 'c', 'd' ]
numbers: [ 1, 2, 3, 4 ]
And you want the set of '(a, 1)' and '(b, 2)' and so on. Use 'with_together' to get this::
tasks:
- debug: msg="{{ item.0 }} and {{ item.1 }}"
with_together:
- alpha
- numbers
Looping over Subelements
Looping over Subelements
````````````````````````
````````````````````````
Documentation for this feature is coming soon.
Suppose you want to do something like loop over a list of users, creating them, and allowing them to login by a certain set of
SSH keys.
How might that be accomplished? Let's assume you had the following defined and loaded in via "vars_files" or maybe a "group_vars/all" file::
---
users:
- name: alice
authorized:
- /tmp/alice/onekey.pub
- /tmp/alice/twokey.pub
- name: bob
authorized:
- /tmp/bob/id_rsa.pub
It might happen like so::
- user: name={{ item.name }} state=present generate_ssh_key=yes
with_items: users
- authorized_key: user={{ item.0.name }} key={{ lookup('file', item.1) }}
with_subelements:
- users
- authorized
Subelements walks a list of hashes (aka dictionaries) and then traverses a list with a given key inside of those
records.
The authorized_key pattern is exactly where it comes up most.
.. _looping_over_integer_sequences:
Looping over Integer Sequences
Looping over Integer Sequences
``````````````````````````````
``````````````````````````````
...
@@ -119,6 +167,27 @@ Negative numbers are not supported. This works as follows::
...
@@ -119,6 +167,27 @@ Negative numbers are not supported. This works as follows::
- group: name=group{{ item }} state=present
- group: name=group{{ item }} state=present
with_sequence: count=4
with_sequence: count=4
.. _random_choice:
Random Choices
``````````````
The 'random_choice' feature can be used to pick something at random. While it's not a load balancer, it can
somewhat be used as a poor man's loadbalancer in a MacGyver like situation::
- debug: msg={{ item }}
with_random_choice:
- "go through the door"
- "drink from the goblet"
- "press the red button"
- "do nothing"
One of the provided strings will be selected at random.
At a more basic level, they can be used to add chaos and excitement to otherwise predictable automation environments.
.. _do_until_loops:
Do-Until Loops
Do-Until Loops
``````````````
``````````````
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment