More anchors!

This commit is contained in:
Michael DeHaan 2013-10-04 18:41:14 -04:00
parent 41909d7fd5
commit 7f2253451e
3 changed files with 58 additions and 1 deletions

View file

@ -4,6 +4,8 @@ Intro to Playbooks
.. contents:: .. contents::
:depth: 2 :depth: 2
.. _about_playbooks:
About Playbooks About Playbooks
``````````````` ```````````````
@ -33,6 +35,8 @@ There are also some full sets of playbooks illustrating a lot of these technique
There are also many jumping off points after you learn playbooks, so hop back to the documentation There are also many jumping off points after you learn playbooks, so hop back to the documentation
index after you're done with this section. index after you're done with this section.
.. _playbook_language_example:
Playbook Language Example Playbook Language Example
````````````````````````` `````````````````````````
@ -77,9 +81,13 @@ For starters, here's a playbook that contains just one play::
Below, we'll break down what the various features of the playbook language are. Below, we'll break down what the various features of the playbook language are.
.. _playbook_basics:
Basics Basics
`````` ``````
.. _playbook_hosts_and_users:
Hosts and Users Hosts and Users
+++++++++++++++ +++++++++++++++
@ -140,6 +148,8 @@ Just `Control-C` to kill it and run it again with `-K`.
not come into play. Ansible also takes care to not log password not come into play. Ansible also takes care to not log password
parameters. parameters.
.. _tasks_list:
Tasks list Tasks list
++++++++++ ++++++++++
@ -227,6 +237,8 @@ Those same variables are usable in templates, which we'll get to later.
Now in a very basic playbook all the tasks will be listed directly in that play, though it will usually Now in a very basic playbook all the tasks will be listed directly in that play, though it will usually
make more sense to break up tasks using the 'include:' directive. We'll show that a bit later. make more sense to break up tasks using the 'include:' directive. We'll show that a bit later.
.. _action_shorthand:
Action Shorthand Action Shorthand
```````````````` ````````````````
@ -242,6 +254,8 @@ You will notice in earlier versions, this was only available as::
The old form continues to work in newer versions without any plan of deprecation. The old form continues to work in newer versions without any plan of deprecation.
.. _handlers:
Handlers: Running Operations On Change Handlers: Running Operations On Change
`````````````````````````````````````` ``````````````````````````````````````
@ -302,6 +316,8 @@ In the above example any queued up handlers would be processed early when the 'm
statement was reached. This is a bit of a niche case but can come in handy from statement was reached. This is a bit of a niche case but can come in handy from
time to time. time to time.
.. _executing_a_playbook:
Executing A Playbook Executing A Playbook
```````````````````` ````````````````````
@ -310,6 +326,8 @@ Let's run a playbook using a parallelism level of 10::
ansible-playbook playbook.yml -f 10 ansible-playbook playbook.yml -f 10
.. _tips_and_tricks:
Tips and Tricks Tips and Tricks
``````````````` ```````````````

View file

@ -7,6 +7,8 @@ in Ansible, and are typically used to load variables or templates with informati
.. note:: This is considered an advanced feature, and many users will probably not rely on these features. .. note:: This is considered an advanced feature, and many users will probably not rely on these features.
.. _getting_file_contents:
Intro to Lookups: Getting File Contents Intro to Lookups: Getting File Contents
``````````````````````````````````````` ```````````````````````````````````````
@ -20,6 +22,8 @@ Contents can be read off the filesystem as follows::
tasks: tasks:
- debug: msg="the value of foo.txt is {{ contents }}" - debug: msg="the value of foo.txt is {{ contents }}"
.. _password_lookup:
The Password Lookup The Password Lookup
``````````````````` ```````````````````
@ -44,6 +48,7 @@ This length can be changed by passing an extra parameter::
(...) (...)
.. _more_lookups:
More Lookups More Lookups
```````````` ````````````

View file

@ -24,6 +24,8 @@ It's highly recommended that you consult `the Ansible-Examples github repository
.. contents:: .. contents::
:depth: 2 :depth: 2
.. _valid_variable_names:
What Makes A Valid Variable Name What Makes A Valid Variable Name
```````````````````````````````` ````````````````````````````````
@ -37,6 +39,8 @@ Variable names should be letters, numbers, and underscores. Variables should al
Easy enough, let's move on. Easy enough, let's move on.
.. _variables_in_inventory:
Variables Defined in Inventory Variables Defined in Inventory
`````````````````````````````` ``````````````````````````````
@ -48,6 +52,8 @@ want to use 'boston.ntp.example.com' as an NTP server.
See the `intro_inventory` document for multiple ways on how to define variables in inventory. See the `intro_inventory` document for multiple ways on how to define variables in inventory.
.. _playbook_variables:
Variables Defined in a Playbook Variables Defined in a Playbook
``````````````````````````````` ```````````````````````````````
@ -59,6 +65,8 @@ In a playbook, it's possible to define variables directly inline like so::
This can be nice as it's right there when you are reading the playbook. This can be nice as it's right there when you are reading the playbook.
.. _included_variables:
Variables defined from included files and roles Variables defined from included files and roles
----------------------------------------------- -----------------------------------------------
@ -67,6 +75,8 @@ It turns out we've already talked about variables in another place too.
As described in `intro_roles`, variables can also be included in the playbook via include files, which may or may As described in `intro_roles`, variables can also be included in the playbook via include files, which may or may
not be part of an "Ansible Role". Usage of roles is preferred as it provides a nice organizational system. not be part of an "Ansible Role". Usage of roles is preferred as it provides a nice organizational system.
.. _about_jinja2:
Using Variables: About Jinja2 Using Variables: About Jinja2
````````````````````````````` `````````````````````````````
@ -96,6 +106,8 @@ it's more than that -- you can also read variables about other hosts. We'll sho
pieces of files, or to have other ecosystem tools read Ansible files. Not everyone will need this but it can unlock pieces of files, or to have other ecosystem tools read Ansible files. Not everyone will need this but it can unlock
possibilities. possibilities.
.. _yaml_gotchas:
Hey Wait, A YAML Gotcha Hey Wait, A YAML Gotcha
``````````````````````` ```````````````````````
@ -114,6 +126,7 @@ Do it like this and you'll be fine::
vars: vars:
app_path: "{{ base_path }}/22" app_path: "{{ base_path }}/22"
.. _vars_and_facts:
Information discovered from systems: Facts Information discovered from systems: Facts
`````````````````````````````````````````` ``````````````````````````````````````````
@ -371,6 +384,8 @@ Facts are frequently used in conditionals (see `playbook_conditionals`) and also
Facts can be also used to create dynamic groups of hosts that match particular critera, see the :doc:`modules` documentation on 'group_by' for details, as well as in generalized conditional statements as discussed in the `playbook_conditionals` chapter. Facts can be also used to create dynamic groups of hosts that match particular critera, see the :doc:`modules` documentation on 'group_by' for details, as well as in generalized conditional statements as discussed in the `playbook_conditionals` chapter.
.. _disabling_facts:
Turning Off Facts Turning Off Facts
````````````````` `````````````````
@ -381,6 +396,8 @@ systems, mainly, or if you are using Ansible on experimental platforms. In any
- hosts: whatever - hosts: whatever
gather_facts: no gather_facts: no
.. _local_facts::
Local Facts (Facts.d) Local Facts (Facts.d)
````````````````````` `````````````````````
@ -389,7 +406,11 @@ Local Facts (Facts.d)
As discussed in the playbooks chapter, Ansible facts are a way of getting data about remote systems for use in playbook variables. As discussed in the playbooks chapter, Ansible facts are a way of getting data about remote systems for use in playbook variables.
Usually these are discovered automatically by the 'setup' module in Ansible. Users can also write custom facts modules, as described Usually these are discovered automatically by the 'setup' module in Ansible. Users can also write custom facts modules, as described
in the API guide. However, what if you want to have a simple way to provide system or user in the API guide. However, what if you want to have a simple way to provide system or user
provided data for use in Ansible variables, without writing a fact module? For instance, what if you want users to be able to control some aspect about how their systems are managed? "Facts.d" is one such mechanism. provided data for use in Ansible variables, without writing a fact module?
For instance, what if you want users to be able to control some aspect about how their systems are managed? "Facts.d" is one such mechanism.
.. note:: Perhaps "local facts" is a bit of a misnomer, it means "locally supplied user values" as opposed to "centrally supplied user values", or what facts are -- "locally dynamically determined values".
If a remotely managed system has an "/etc/ansible/facts.d" directory, any files in this directory If a remotely managed system has an "/etc/ansible/facts.d" directory, any files in this directory
ending in ".fact", can be JSON, INI, or executable files returning JSON, and these can supply local facts in Ansible. ending in ".fact", can be JSON, INI, or executable files returning JSON, and these can supply local facts in Ansible.
@ -423,6 +444,7 @@ And this data can be accessed in a template/playbook as::
The local namespace prevents any user supplied fact from overriding system facts The local namespace prevents any user supplied fact from overriding system facts
or variables defined elsewhere in the playbook. or variables defined elsewhere in the playbook.
.. _registered_variables:
Registered Variables Registered Variables
```````````````````` ````````````````````
@ -448,6 +470,8 @@ While it's mentioned elsewhere in that document too, here's a quick syntax examp
Registered variables are valid on the host the remainder of the playbook run, which is the same as the lifetime of "facts" Registered variables are valid on the host the remainder of the playbook run, which is the same as the lifetime of "facts"
in Ansible. Effectively registerd variables are just like facts. in Ansible. Effectively registerd variables are just like facts.
.. _accessing_complex_variable_data:
Accessing Complex Variable Data Accessing Complex Variable Data
``````````````````````````````` ```````````````````````````````
@ -466,6 +490,8 @@ Similarly, this is how we access the first element of an array::
{{ foo[0] }} {{ foo[0] }}
.. _magic_variables_and_hostvars:
Magic Variables, and How To Access Information About Other Hosts Magic Variables, and How To Access Information About Other Hosts
```````````````````````````````````````````````````````````````` ````````````````````````````````````````````````````````````````
@ -514,6 +540,8 @@ Don't worry about any of this unless you think you need it. You'll know when yo
Also available, *inventory_dir* is the pathname of the directory holding Ansible's inventory host file, *inventory_file* is the pathname and the filename pointing to the Ansible's inventory host file. Also available, *inventory_dir* is the pathname of the directory holding Ansible's inventory host file, *inventory_file* is the pathname and the filename pointing to the Ansible's inventory host file.
.. _variable_file_seperation_details:
Variable File Separation Variable File Separation
```````````````````````` ````````````````````````
@ -550,6 +578,8 @@ The contents of each variables file is a simple YAML dictionary, like this::
It's also possible to keep per-host and per-group variables in very It's also possible to keep per-host and per-group variables in very
similar files, this is covered in :ref:`patterns`. similar files, this is covered in :ref:`patterns`.
.. _passing_variables_on_the_command_line:
Passing Variables On The Command Line Passing Variables On The Command Line
````````````````````````````````````` `````````````````````````````````````
@ -584,6 +614,8 @@ As of Ansible 1.3, extra vars can be loaded from a JSON file with the "@" syntax
Also as of Ansible 1.3, extra vars can be formatted as YAML, either on the command line Also as of Ansible 1.3, extra vars can be formatted as YAML, either on the command line
or in a file as above. or in a file as above.
.. _conditional_imports:
Conditional Imports Conditional Imports
``````````````````` ```````````````````
@ -637,6 +669,8 @@ from turning into arbitrary code with ugly nested ifs, conditionals, and so on -
in more streamlined & auditable configuration rules -- especially because there are a in more streamlined & auditable configuration rules -- especially because there are a
minimum of decision points to track. minimum of decision points to track.
.. _variable_precedence:
Variable Precedence: Where Should I Put A Variable? Variable Precedence: Where Should I Put A Variable?
``````````````````````````````````````````````````` ```````````````````````````````````````````````````