From 1aa3c1522cdf4f8e4e14db32941600825669624e Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Tue, 31 Jul 2012 22:19:04 -0400 Subject: [PATCH] Updating various doc items with 0.6 features, releasing soon, and removing references to things new in 0.4, which has been out long enough to no longer be new. --- YAMLSyntax.html | 2 +- api.html | 2 +- bestpractices.html | 2 +- examples.html | 2 +- faq.html | 2 +- genindex.html | 2 +- gettingstarted.html | 2 +- index.html | 2 +- moduledev.html | 5 +- modules.html | 5 +- patterns.html | 4 +- playbooks.html | 101 +++++++++++++++++------------ playbooks2.html | 144 +++++++++++++++++++++++++++++++++--------- rst/moduledev.rst | 3 +- rst/modules.rst | 1 - rst/patterns.rst | 2 +- rst/playbooks.rst | 95 ++++++++++++++++------------ rst/playbooks2.rst | 130 ++++++++++++++++++++++++++++++++------ search.html | 2 +- searchindex.js | 2 +- who_uses_ansible.html | 2 +- 21 files changed, 360 insertions(+), 152 deletions(-) diff --git a/YAMLSyntax.html b/YAMLSyntax.html index 184aa483cb..e44ea11d1d 100644 --- a/YAMLSyntax.html +++ b/YAMLSyntax.html @@ -289,7 +289,7 @@ languages:

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/api.html b/api.html index 407ee8a3be..3df546eb35 100644 --- a/api.html +++ b/api.html @@ -465,7 +465,7 @@ e.g.

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/bestpractices.html b/bestpractices.html index 3230681204..d002d62794 100644 --- a/bestpractices.html +++ b/bestpractices.html @@ -311,7 +311,7 @@ This way you have an audit trail describing when and why you changed the rules a

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/examples.html b/examples.html index 2dc93430bb..dc0db16997 100644 --- a/examples.html +++ b/examples.html @@ -396,7 +396,7 @@ a simplified syntax for this.

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/faq.html b/faq.html index 1912d57344..0dbd76f953 100644 --- a/faq.html +++ b/faq.html @@ -403,7 +403,7 @@ tasks – whether for a QA sytem, build system, or anything you can think of

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/genindex.html b/genindex.html index e1e4be6257..0c99a1360c 100644 --- a/genindex.html +++ b/genindex.html @@ -204,7 +204,7 @@ s.parentNode.insertBefore(ga, s);

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/gettingstarted.html b/gettingstarted.html index 8676f875c5..6c848d921f 100644 --- a/gettingstarted.html +++ b/gettingstarted.html @@ -391,7 +391,7 @@ explore, but you already have a fully working infrastructure!

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/index.html b/index.html index 009b22b507..f27716d410 100644 --- a/index.html +++ b/index.html @@ -410,7 +410,7 @@ Puppet Labs, and is now with

The ‘setup’ module that ships with Ansible provides many variables about a system that can be used in playbooks and templates. However, it’s possible to also add your own facts without modifying the system module. To do -this, just have the module return a ansible_facts key, like so, along with other return data. This requires -Ansible 0.4 and later:

+this, just have the module return a ansible_facts key, like so, along with other return data:

{
     "changed" : True,
     "rc" : 5,
@@ -469,7 +468,7 @@ Stop by the mailing list to inquire about requirements.

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/modules.html b/modules.html index 0a3c9b115e..c7abc7bd9c 100644 --- a/modules.html +++ b/modules.html @@ -818,8 +818,7 @@ host before using this module.

raw

-

Executes a low-down and dirty SSH command, not going through the module subsystem. -This module is new in Ansible 0.4.

+

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 @@ -1275,7 +1274,7 @@ yum name=httpd state=installed

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/patterns.html b/patterns.html index 49350d641a..af0f7e8f98 100644 --- a/patterns.html +++ b/patterns.html @@ -271,7 +271,7 @@ proxy=proxy.atlanta.example.com

Groups of Groups, and Group Variables

-

Using Ansible 0.4, it is possible to make groups of groups and assign +

It is also possible to make groups of groups and assign variables to groups. These variables can be used by /usr/bin/ansible-playbook, but not /usr/bin/ansible:

[atlanta]
@@ -380,7 +380,7 @@ a Page
   
  • Playbooks @@ -189,11 +189,10 @@ s.parentNode.insertBefore(ga, s);

    Playbooks

    -

    Playbooks are a completely different way to use ansible and are -particularly awesome. They are the basis for a really simple +

    Playbooks are a completely different way to use ansible than in task execution mode, and are +particularly awesome. Simply put, playbooks are the basis for a really simple configuration management and multi-machine deployment system, -unlike any that already exist, and -one that is very well suited to deploying complex applications.

    +unlike any that already exist, and one that is very well suited to deploying complex applications.

    Playbooks can declare configurations, but they can also orchestrate steps of any manual ordered process, even as different steps must bounce back and forth between sets of machines in particular orders. They can launch tasks @@ -205,10 +204,13 @@ remote systems are in spec.

    Let’s dive in and see how they work. As you go, you may wish to open the github examples directory in another tab, so you can apply the theory to what things look like in practice.

    -
    -

    Playbook Example

    +
    +

    Playbook Language Example

    Playbooks are expressed in YAML format and have a minimum of syntax. Each playbook is composed of one or more ‘plays’ in a list.

    +

    The goal of a play is map a group of hosts to some well defined roles, represented by +things ansible called tasks. At the basic level, a task is nothing more than a call +to an ansible module, which you should have learned about in earlier chapters.

    By composing a playbook of multiple ‘plays’, it is possible to orchestrate multi-machine deployments, running certain steps on all machines in the webservers group, then certain steps on the database @@ -285,21 +287,18 @@ this does not come into play. Ansible also takes care to not log password parame

    These variables can be used later in the playbook like this:

    $varname or ${varname}
    -

    The later is useful in the event you need to do something like ${other}_concatenated_value.

    -

    The full power of the Jinja2 templating language is also available (note: in 0.4, this is only true inside of templates), which looks like this:

    +

    The later is useful in the event you need to do something like ${other}_some_string.

    +

    The full power of the Jinja2 templating language is also available, which looks like this:

    {{ varname }}

    The Jinja2 documentation provides information about how to construct loops and conditionals for those who which to use more advanced templating. This is optional and the $varname format still works in template files.

    -

    If there are discovered variables about the system (ansible provides some of these, -plus we include ones taken from facter or ohai if installed) these variables bubble up back into the -playbook, and can be used on each system just like explicitly set -variables.

    -

    Facter variables are prefixed with facter_ and Ohai -variables are prefixed with ohai_. Ansible variables (0.3 and later) -are not surprisingly prefixed with ansible_ (See the setup module -documentation for a list of Ansible variables).

    +

    If there are discovered variables about the system, called ‘facts’, these variables bubble up back into the +playbook, and can be used on each system just like explicitly set variables. Ansible provides several +of these, prefixed with ‘ansible’, and are documented under setup in the module documentation. Additionally, +facts can be gathered by ohai and facter if they are installed. Facter variables are prefixed with facter_ and Ohai +variables are prefixed with ohai_.

    So for instance, if I wanted to write the hostname into the /etc/motd file, I could say:

    - name: write the motd
    @@ -314,19 +313,22 @@ to write the hostname into the /etc/motd file, I could say:

    Tasks list

    Each play contains a list of tasks. Tasks are executed in order, one at a time, against all machines matched by the host pattern, -before moving on to the next task.

    -

    Hosts with failed tasks are taken out of the rotation for the entire -playbook. If things fail, simply correct the playbook file and rerun.

    +before moving on to the next task. It is important to understand that, within a play, +all hosts are going to get the same task directives. It is the purpose of a play to map +a selection of hosts to tasks.

    +

    When running the playbook, which runs top to bottom, hosts with failed tasks are +taken out of the rotation for the entire playbook. If things fail, simply correct the playbook file and rerun.

    The goal of each task is to execute a module, with very specific arguments. Variables, as mentioned above, can be used in arguments to modules.

    -

    Modules other than command and shell are ‘idempotent’, meaning if you run them +

    Modules are ‘idempotent’, meaning if you run them again, they will make the changes they are told to make to bring the system to the desired state. This makes it very safe to rerun the same playbook multiple times. They won’t change things unless they have to change things.

    -

    The command and shell modules will actually rerun the same command again, +

    The command and shell modules will typically rerun the same command again, which is totally ok if the command is something like -‘chmod’ or ‘setsebool’, etc.

    +‘chmod’ or ‘setsebool’, etc. Though there is a ‘creates’ flag available which can +be used to make these modules also idempotent.

    Every task should have a name, which is included in the output from running the playbook. This is output for humans, so it is nice to have reasonably good descriptions of each task step. If the name @@ -345,6 +347,18 @@ them work just like you would expect. Simple:

    - name: disable selinux action: command /sbin/setenforce 0
    +

    The command and shell module care about return codes, so if you have a command +who’s successful exit code is not zero, you may wish to do this:

    +
    +
    +
    tasks:
    +
      +
    • name: run this command and ignore the result +action: shell /usr/bin/somecommand & /bin/true
    • +
    +
    +
    +

    Variables can be used in action lines. Suppose you defined a variable called ‘vhost’ in the ‘vars’ section, you could do this:

    tasks:
    @@ -352,11 +366,13 @@ a variable called ‘vhost’ in the ‘vars’ section, you cou
         action: template src=somefile.j2 dest=/etc/httpd/conf.d/$vhost

    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 +make more sense to break up tasks using the ‘include:’ directive. We’ll show that a bit later.

    Running Operations On Change

    -

    As we’ve mentioned, nearly all modules are written to be ‘idempotent’ and can relay when +

    As we’ve mentioned, modules are written to be ‘idempotent’ and can relay when they have made a change on the remote system. Playbooks recognize this and have a basic event system that can be used to respond to change.

    These ‘notify’ actions are triggered at the end of each ‘play’ in a playbook, and @@ -391,11 +407,13 @@ won’t need them for much else.

    Notify handlers are always run in the order written.

    -
    -

    Include Files And Reuse

    +
    +

    Include Files And Encouraging Reuse

    Suppose you want to reuse lists of tasks between plays or playbooks. You can use -include files to do this.

    -

    An include file simply contains a flat list of tasks, like so:

    +include files to do this. Use of included task lists is a great way to define a role +that system is going to fulfill. Remember, the goal of a play in a playbook is to map +a group of systems into multiple roles. Let’s see what this looks like...

    +

    A task include file simply contains a flat list of tasks, like so:

    ---
     # possibly saved as tasks/foo.yml
     - name: placeholder foo
    @@ -403,11 +421,11 @@ include files to do this.

    - name: placeholder bar action: command /bin/bar
    -

    Include directives look like this:

    +

    Include directives look like this, and can be mixed in with regular tasks in a playbook:

    - tasks:
        - include: tasks/foo.yml
    -

    You can also pass variables into includes directly. We might call this a ‘parameterized include’.

    +

    You can also pass variables into includes. We call this a ‘parameterized include’.

    For instance, if deploying multiple wordpress instances, I could contain all of my wordpress tasks in a single wordpress.yml file, and use it like so:

    - tasks:
    @@ -415,16 +433,16 @@ contain all of my wordpress tasks in a single wordpress.yml file, and use it lik
       - include: wordpress.yml user=alice
       - include: wordpress.yml user=bob
    -

    Variables passed in can be used in the included files. You can reference them like this:

    +

    Variables passed in can then be used in the included files. You can reference them like this:

    $user
    -

    In addition to the explicitly passed in parameters, all variables from -the vars section are also available for use here as well.

    +

    (In addition to the explicitly passed in parameters, all variables from +the vars section are also available for use here as well.)

    Note

    -

    Include statements are only usable from the top level -playbook file. This means includes can not include other -includes. This may be implemented in a later release.

    +

    Task include statements are only usable one-level deep. +This means task includes can not include other +task includes. This may change in a later release.

    Includes can also be used in the ‘handlers’ section, for instance, if you want to define how to restart apache, you only have to do that once for all @@ -440,9 +458,12 @@ of a play:

    - include: handlers/handlers.yml

You can mix in includes along with your regular non-included tasks and handlers.

-

Note that you can not conditionally path the location to an include file, like you can +

NOTE:: you can not conditionally path the location to an include file, like you can with ‘vars_files’. If you find yourself needing to do this, consider how you can -restructure your playbook to be more class/role oriented.

+restructure your playbook to be more class/role oriented. This is to say you cannot +use a ‘fact’ to decide what include file to use. All hosts contained within the play +are going to get the same tasks. (‘only_if’ provides some ability for hosts to conditionally +skip tasks).

Executing A Playbook

@@ -514,7 +535,7 @@ package is installed. Try it!

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/playbooks2.html b/playbooks2.html index 27456e5886..aac35f3e10 100644 --- a/playbooks2.html +++ b/playbooks2.html @@ -149,9 +149,10 @@ s.parentNode.insertBefore(ga, s); class="dropdown-toggle">Page @@ -195,11 +200,44 @@ s.parentNode.insertBefore(ga, s); are not neccessary, but many of them will prove useful. If a feature doesn’t seem immediately relevant, feel free to skip it. For many people, the features documented in playbooks will be 90% or more of what they use in Ansible.

+
+

Tags

+

(New in 0.6) If you have a large playbook it may become useful to be able to run a specific +part of the configuration. Both plays and tasks support a “tags:” attribute for this reason.

+

Example:

+
tasks:
+
+    - action: yum name=$item state=installed
+      with_items:
+         - httpd
+         - memcached
+      tags:
+         - packages
+
+    - action: template src=templates/src.j2 dest=/etc/foo.conf
+      tags:
+         - configuration
+
+

If you wanted to just run the “configuration” and “packages” part of a very long playbook, you could do this:

+
ansible-playbook example.yml --tags "configuration,packages"
+
+
+
+

Playbooks Including Playbooks

+

(New in 0.6) To further advance the concept of include files, playbook files can include other playbook +files. Suppose you define the behavior of all your webservers in “webservers.yml” and +all your database servers in “dbservers.yml”. You can create a “site.yml” that would +reconfigure all of your systems like this:

+
----
+- include: playbooks/webservers.yml
+- include: playbooks/dbservers.yml
+
+

This concept works great with tags to rapidly select exactly what plays you want to run, and exactly +what parts of those plays.

-

Accessing Complex Variable Data

+

Accessing Complex Variable Data

Some provided facts, like networking information, are made available as nested data structures. To access -them a simple ‘$foo’ is not sufficient, but it is still easy to do. Here’s how we get an IP address using -Ansible 0.4 and later:

+them a simple ‘$foo’ is not sufficient, but it is still easy to do. Here’s how we get an IP address:

${ansible_eth0.ipv4.address}

It is also possible to access variables whose elements are arrays:

@@ -212,19 +250,14 @@ that is preferred:

-

Accessing Information About Other Hosts

+

Accessing Information About Other Hosts

If your database server wants to check the value of a ‘fact’ from another node, or an inventory variable -assigned to another node, it’s easy to do so within a template or even an action line (note: this uses syntax available in 0.4 and later):

+assigned to another node, it’s easy to do so within a template or even an action line:

${hostvars.hostname.factname}

NOTE: No database or other complex system is required to exchange data between hosts. The hosts that you want to reference data from must be included in either the current play or any previous play.

-
-
-

Magic Variables

-

Some variables made available to hosts don’t come from definitions in a playbook, the inventory file, or discovery from the system. There are only two of these, and are used in special cases that many users won’t need.

-

group_names is a list (array) of all the groups the current host is in. This can be used in templates using Jinja2 -syntax to make template source files that vary based on the group membership (or role) of the host:

+

Additionally, group_names is a list (array) of all the groups the current host is in. This can be used in templates using Jinja2 syntax to make template source files that vary based on the group membership (or role) of the host:

{% if 'webserver' in group_names %}
    # some part of a configuration file that only applies to webservers
 {% endif %}
@@ -238,10 +271,12 @@ For example:

Use cases include pointing a frontend proxy server to all of the app servers, setting up the correct firewall rules between servers, etc.

inventory_hostname is the name of the hostname as configured in Ansible’s inventory host file. This can be useful for when you don’t want to rely on the discovered hostname ansible_hostname or for other mysterious -reasons. Don’t worry about it unless you think you need it.

+reasons. If you have a long FQDN, inventory_hostname_short (in Ansible 0.6) also contains the part up to the first +period.

+

Don’t worry about any of this unless you think you need it. You’ll know when you do.

-

Variable File Seperation

+

Variable File Seperation

It’s a great idea to keep your playbooks under source control, but you may wish to make the playbook source public while keeping certain important variables private. Similarly, sometimes you may just @@ -267,9 +302,10 @@ sharing your playbook source with them.

somevar: somevalue password: magic
+

NOTE: It’s also possible to keep per-host and per-group variables in very similar files, this is covered in Inventory & Patterns.

-

Prompting For Sensitive Data

+

Prompting For Sensitive Data

You may wish to prompt the user for certain input, and can do so with the similarly named ‘vars_prompt’ section. This has uses beyond security, for instance, you may use the same playbook for all @@ -286,17 +322,37 @@ in a push-script:

favcolor: "what is your favorite color?"

There are full examples of both of these items in the github examples/playbooks directory.

+

An alternative form of vars_prompt allows for hiding input from the user, and may later support +some other options, but otherwise works equivalently:

+
vars_prompt:
+  - name: "some_password"
+    prompt: "Enter password"
+    private: True
+  - name: "release_version"
+    prompt: "Product release version"
+    private: False
+
-

Passing Variables On The Command Line

+

Passing Variables On The Command Line

In addition to vars_prompt and vars_files, it is possible to send variables over the ansible command line. This is particularly useful when writing a generic release playbook where you may want to pass in the version of the application to deploy:

ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
+

This is useful, for, among other things, setting the hosts group or the user for the playbook.

+

Example:

+
-----
+- user: $user
+  hosts: $hosts
+  tasks:
+     - ...
+
+ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"
+
-

Conditional Execution

+

Conditional Execution

Sometimes you will want to skip a particular step on a particular host. This could be something as simple as not installing a certain package if the operating system is a particular version, or it could be something like performing some cleanup steps if a filesystem is getting full.

@@ -306,22 +362,32 @@ Don’t panic – it’s actually pretty simple:

favcolor: blue is_favcolor_blue: "'$favcolor' == 'blue'" is_centos: "'$facter_operatingsystem' == 'CentOS'" + tasks: - name: "shutdown if my favorite color is blue" action: command /sbin/shutdown -t now only_if: '$is_favcolor_blue'

Variables from tools like facter and ohai can be used here, if installed, or you can -use variables that bubble up from ansible (0.3 and later). As a reminder, +use variables that bubble up from ansible, which many are provided by the setup module. As a reminder, these variables are prefixed, so it’s $facter_operatingsystem, not $operatingsystem. Ansible’s -built in variables are prefixed with ansible_. The only_if -expression is actually a tiny small bit of Python, so be sure to quote variables and make something +built in variables are prefixed with ansible_.

+

The only_if expression is actually a tiny small bit of Python, so be sure to quote variables and make something that evaluates to True or False. It is a good idea to use ‘vars_files’ instead of ‘vars’ to define all of your conditional expressions in a way that makes them very easy to reuse between plays and playbooks.

+

You cannot use live checks here, like ‘os.path.exists’, so don’t try.

+

It’s also easy to provide your own facts if you want, which is covered in Module Development. To run them, just +make a call to your own custom fact gathering module at the top of your list of tasks, and variables returned +there will be accessible to future tasks:

+
tasks:
+    - name: gather site specific fact data
+      action: site_facts
+    - action: command echo ${my_custom_fact_can_be_used_now}
+
-

Conditional Imports

+

Conditional Imports

Sometimes you will want to do certain things differently in a playbook based on certain criteria. Having one playbook that works on multiple platforms and OS versions is a good example.

As an example, the name of the Apache package may be different between CentOS and Debian, @@ -364,7 +430,7 @@ in more streamlined & auditable configuration rules – especially becau minimum of decision points to track.

-

Loop Shorthand

+

Loop Shorthand

To save some typing, repeated tasks can be written in short-hand like so:

- name: add user $item
   action: user name=$item state=present groups=wheel
@@ -372,6 +438,9 @@ minimum of decision points to track.

- testuser1 - testuser2
+

If you have defined a YAML list in a variables file, or the ‘vars’ section, you can also do:

+
with_items: $somelist
+

The above would be the equivalent of:

- name: add user testuser1
   action: user name=testuser1 state=present groups=wheel
@@ -382,9 +451,9 @@ minimum of decision points to track.

manager transactions.

-

Selecting Files And Templates Based On Variables

+

Selecting Files And Templates Based On Variables

Sometimes a configuration file you want to copy, or a template you will use may depend on a variable. -The following construct (new in 0.4) selects the first available file appropriate for the variables of a given host, +The following construct selects the first available file appropriate for the variables of a given host, which is often much cleaner than putting a lot of if conditionals in a template.

The following example shows how to template out a configuration file that was very different between, say, CentOS and Debian:

@@ -396,7 +465,7 @@ CentOS and Debian:

-

Asynchronous Actions and Polling

+

Asynchronous Actions and Polling

By default tasks in playbooks block, meaning the connections stay open until the task is done on each node. If executing playbooks with a small parallelism value (aka --forks), you may wish that long @@ -446,7 +515,7 @@ tasks even faster. This also increases the efficiency of polling.

-

Local Playbooks

+

Local Playbooks

It may be useful to use a playbook locally, rather than by connecting over SSH. This can be useful for assuring the configuration of a system by putting a playbook on a crontab. This may also be used to run a playbook inside a OS installer, such as an Anaconda kickstart.

@@ -459,10 +528,19 @@ use the default remote connection type:

connection: local
+
+

Turning Off Facts

+

If you know you don’t need any fact data about your hosts, and know everything about your systems centrally, you +can turn off fact gathering. This has advantages in scaling ansible in push mode with very large numbers of +systems, mainly, or if you are using Ansible on experimental platforms. In any play, just do this:

+
- hosts: whatever
+  gather_facts: False
+
+
-

Pull-Mode Playbooks

-

The use of playbooks in local mode (above) is made extremely powerful with the addition of ansible-pull in the -0.4 release. A script for setting up ansible-pull is provided in the examples/playbooks directory of the source +

Pull-Mode Playbooks

+

The use of playbooks in local mode (above) is made extremely powerful with the addition of ansible-pull. +A script for setting up ansible-pull is provided in the examples/playbooks directory of the source checkout.

The basic idea is to use Ansible to set up a remote copy of ansible on each managed node, each set to run via cron and update playbook source via git. This interverts the default push architecture of ansible into a pull @@ -470,6 +548,11 @@ architecture, which has near-limitless scaling potential. The setup playbook ca the cron frequency, logging locations, and parameters to ansible-pull.

This is useful both for extreme scale-out as well as periodic remediation. Usage of the ‘fetch’ module to retrieve logs from ansible-pull runs would be an excellent way to gather and analyze remote logs from ansible-pull.

+
+
+

Style Points

+

Ansible playbooks are colorized. If you do not like this, set the ANSIBLE_NOCOLOR=1 environment variable.

+

Ansible playbooks also look more impressive with cowsay installed, and we encourage installing this package.

See also

@@ -493,6 +576,7 @@ logs from ansible-pull runs would be an excellent way to gather and analyze remo
+
@@ -522,7 +606,7 @@ logs from ansible-pull runs would be an excellent way to gather and analyze remo

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/rst/moduledev.rst b/rst/moduledev.rst index c78cc26919..57f3c3a5f2 100644 --- a/rst/moduledev.rst +++ b/rst/moduledev.rst @@ -174,8 +174,7 @@ Module Provided 'Facts' The 'setup' module that ships with Ansible provides many variables about a system that can be used in playbooks and templates. However, it's possible to also add your own facts without modifying the system module. To do -this, just have the module return a `ansible_facts` key, like so, along with other return data. This requires -Ansible 0.4 and later:: +this, just have the module return a `ansible_facts` key, like so, along with other return data:: { "changed" : True, diff --git a/rst/modules.rst b/rst/modules.rst index 15fdb54092..dd145945b4 100644 --- a/rst/modules.rst +++ b/rst/modules.rst @@ -433,7 +433,6 @@ raw ``` Executes a low-down and dirty SSH command, not going through the module subsystem. -This module is new in Ansible 0.4. 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 diff --git a/rst/patterns.rst b/rst/patterns.rst index f0bdc72b81..17dc81694a 100644 --- a/rst/patterns.rst +++ b/rst/patterns.rst @@ -110,7 +110,7 @@ Variables can also be applied to an entire group at once:: Groups of Groups, and Group Variables +++++++++++++++++++++++++++++++++++++ -Using Ansible 0.4, it is possible to make groups of groups and assign +It is also possible to make groups of groups and assign variables to groups. These variables can be used by /usr/bin/ansible-playbook, but not /usr/bin/ansible:: diff --git a/rst/playbooks.rst b/rst/playbooks.rst index 4ffbf65337..fb720b3b16 100644 --- a/rst/playbooks.rst +++ b/rst/playbooks.rst @@ -1,11 +1,10 @@ Playbooks ========= -Playbooks are a completely different way to use ansible and are -particularly awesome. They are the basis for a really simple +Playbooks are a completely different way to use ansible than in task execution mode, and are +particularly awesome. Simply put, playbooks are the basis for a really simple configuration management and multi-machine deployment system, -unlike any that already exist, and -one that is very well suited to deploying complex applications. +unlike any that already exist, and one that is very well suited to deploying complex applications. Playbooks can declare configurations, but they can also orchestrate steps of any manual ordered process, even as different steps must bounce back and forth @@ -21,12 +20,16 @@ Let's dive in and see how they work. As you go, you may wish to open the `github examples directory `_ in another tab, so you can apply the theory to what things look like in practice. -Playbook Example -```````````````` +Playbook Language Example +````````````````````````` Playbooks are expressed in YAML format and have a minimum of syntax. Each playbook is composed of one or more 'plays' in a list. +The goal of a play is map a group of hosts to some well defined roles, represented by +things ansible called tasks. At the basic level, a task is nothing more than a call +to an ansible module, which you should have learned about in earlier chapters. + By composing a playbook of multiple 'plays', it is possible to orchestrate multi-machine deployments, running certain steps on all machines in the webservers group, then certain steps on the database @@ -116,25 +119,21 @@ These variables can be used later in the playbook like this:: $varname or ${varname} -The later is useful in the event you need to do something like ${other}_concatenated_value. +The later is useful in the event you need to do something like ${other}_some_string. -The full power of the Jinja2 templating language is also available (note: in 0.4, this is only true inside of templates), which looks like this:: +The full power of the `Jinja2 `_ templating language is also available, which looks like this:: {{ varname }} The Jinja2 documentation provides information about how to construct loops and conditionals for those who which to use more advanced templating. This is optional and the $varname format still works in template -files. +files. -If there are discovered variables about the system (ansible provides some of these, -plus we include ones taken from facter or ohai if installed) these variables bubble up back into the -playbook, and can be used on each system just like explicitly set -variables. - -Facter variables are prefixed with ``facter_`` and Ohai -variables are prefixed with ``ohai_``. Ansible variables (0.3 and later) -are not surprisingly prefixed with ``ansible_`` (See the :ref:`setup` module -documentation for a list of Ansible variables). +If there are discovered variables about the system, called 'facts', these variables bubble up back into the +playbook, and can be used on each system just like explicitly set variables. Ansible provides several +of these, prefixed with 'ansible', and are documented under :ref:`setup` in the module documentation. Additionally, +facts can be gathered by ohai and facter if they are installed. Facter variables are prefixed with ``facter_`` and Ohai +variables are prefixed with ``ohai_``. So for instance, if I wanted to write the hostname into the /etc/motd file, I could say:: @@ -153,23 +152,26 @@ Tasks list Each play contains a list of tasks. Tasks are executed in order, one at a time, against all machines matched by the host pattern, -before moving on to the next task. +before moving on to the next task. It is important to understand that, within a play, +all hosts are going to get the same task directives. It is the purpose of a play to map +a selection of hosts to tasks. -Hosts with failed tasks are taken out of the rotation for the entire -playbook. If things fail, simply correct the playbook file and rerun. +When running the playbook, which runs top to bottom, hosts with failed tasks are +taken out of the rotation for the entire playbook. If things fail, simply correct the playbook file and rerun. The goal of each task is to execute a module, with very specific arguments. Variables, as mentioned above, can be used in arguments to modules. -Modules other than `command` and `shell` are 'idempotent', meaning if you run them +Modules are 'idempotent', meaning if you run them again, they will make the changes they are told to make to bring the system to the desired state. This makes it very safe to rerun the same playbook multiple times. They won't change things unless they have to change things. -The `command` and `shell` modules will actually rerun the same command again, +The `command` and `shell` modules will typically rerun the same command again, which is totally ok if the command is something like -'chmod' or 'setsebool', etc. +'chmod' or 'setsebool', etc. Though there is a 'creates' flag available which can +be used to make these modules also idempotent. Every task should have a `name`, which is included in the output from running the playbook. This is output for humans, so it is @@ -192,6 +194,13 @@ them work just like you would expect. Simple:: - name: disable selinux action: command /sbin/setenforce 0 +The command and shell module care about return codes, so if you have a command +who's successful exit code is not zero, you may wish to do this: + + tasks: + - name: run this command and ignore the result + action: shell /usr/bin/somecommand & /bin/true + Variables can be used in action lines. Suppose you defined a variable called 'vhost' in the 'vars' section, you could do this:: @@ -201,11 +210,13 @@ a variable called 'vhost' in the 'vars' section, you could do this:: 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 +make more sense to break up tasks using the 'include:' directive. We'll show that a bit later. Running Operations On Change ```````````````````````````` -As we've mentioned, nearly all modules are written to be 'idempotent' and can relay when +As we've mentioned, modules are written to be 'idempotent' and can relay when they have made a change on the remote system. Playbooks recognize this and have a basic event system that can be used to respond to change. @@ -246,13 +257,15 @@ won't need them for much else. Notify handlers are always run in the order written. -Include Files And Reuse -``````````````````````` +Include Files And Encouraging Reuse +``````````````````````````````````` Suppose you want to reuse lists of tasks between plays or playbooks. You can use -include files to do this. +include files to do this. Use of included task lists is a great way to define a role +that system is going to fulfill. Remember, the goal of a play in a playbook is to map +a group of systems into multiple roles. Let's see what this looks like... -An include file simply contains a flat list of tasks, like so:: +A task include file simply contains a flat list of tasks, like so:: --- # possibly saved as tasks/foo.yml @@ -261,12 +274,12 @@ An include file simply contains a flat list of tasks, like so:: - name: placeholder bar action: command /bin/bar -Include directives look like this:: +Include directives look like this, and can be mixed in with regular tasks in a playbook:: - tasks: - include: tasks/foo.yml -You can also pass variables into includes directly. We might call this a 'parameterized include'. +You can also pass variables into includes. We call this a 'parameterized include'. For instance, if deploying multiple wordpress instances, I could contain all of my wordpress tasks in a single wordpress.yml file, and use it like so:: @@ -276,17 +289,17 @@ contain all of my wordpress tasks in a single wordpress.yml file, and use it lik - include: wordpress.yml user=alice - include: wordpress.yml user=bob -Variables passed in can be used in the included files. You can reference them like this:: +Variables passed in can then be used in the included files. You can reference them like this:: $user -In addition to the explicitly passed in parameters, all variables from -the vars section are also available for use here as well. +(In addition to the explicitly passed in parameters, all variables from +the vars section are also available for use here as well.) .. note:: - Include statements are only usable from the top level - playbook file. This means includes can not include other - includes. This may be implemented in a later release. + Task include statements are only usable one-level deep. + This means task includes can not include other + task includes. This may change in a later release. Includes can also be used in the 'handlers' section, for instance, if you want to define how to restart apache, you only have to do that once for all @@ -305,10 +318,12 @@ of a play:: You can mix in includes along with your regular non-included tasks and handlers. -Note that you can not conditionally path the location to an include file, like you can +NOTE:: you can not conditionally path the location to an include file, like you can with 'vars_files'. If you find yourself needing to do this, consider how you can -restructure your playbook to be more class/role oriented. - +restructure your playbook to be more class/role oriented. This is to say you cannot +use a 'fact' to decide what include file to use. All hosts contained within the play +are going to get the same tasks. ('only_if' provides some ability for hosts to conditionally +skip tasks). Executing A Playbook ```````````````````` diff --git a/rst/playbooks2.rst b/rst/playbooks2.rst index 5b9012ff8e..d95f21ba11 100644 --- a/rst/playbooks2.rst +++ b/rst/playbooks2.rst @@ -6,12 +6,51 @@ are not neccessary, but many of them will prove useful. If a feature doesn't se relevant, feel free to skip it. For many people, the features documented in `playbooks` will be 90% or more of what they use in Ansible. +Tags +```` + +(New in 0.6) If you have a large playbook it may become useful to be able to run a specific +part of the configuration. Both plays and tasks support a "tags:" attribute for this reason. + +Example:: + + tasks: + + - action: yum name=$item state=installed + with_items: + - httpd + - memcached + tags: + - packages + + - action: template src=templates/src.j2 dest=/etc/foo.conf + tags: + - configuration + +If you wanted to just run the "configuration" and "packages" part of a very long playbook, you could do this:: + + ansible-playbook example.yml --tags "configuration,packages" + +Playbooks Including Playbooks +````````````````````````````` + +(New in 0.6) To further advance the concept of include files, playbook files can include other playbook +files. Suppose you define the behavior of all your webservers in "webservers.yml" and +all your database servers in "dbservers.yml". You can create a "site.yml" that would +reconfigure all of your systems like this:: + + ---- + - include: playbooks/webservers.yml + - include: playbooks/dbservers.yml + +This concept works great with tags to rapidly select exactly what plays you want to run, and exactly +what parts of those plays. + Accessing Complex Variable Data +++++++++++++++++++++++++++++++ Some provided facts, like networking information, are made available as nested data structures. To access -them a simple '$foo' is not sufficient, but it is still easy to do. Here's how we get an IP address using -Ansible 0.4 and later:: +them a simple '$foo' is not sufficient, but it is still easy to do. Here's how we get an IP address:: ${ansible_eth0.ipv4.address} @@ -30,26 +69,19 @@ Accessing Information About Other Hosts +++++++++++++++++++++++++++++++++++++++ If your database server wants to check the value of a 'fact' from another node, or an inventory variable -assigned to another node, it's easy to do so within a template or even an action line (note: this uses syntax available in 0.4 and later):: +assigned to another node, it's easy to do so within a template or even an action line:: ${hostvars.hostname.factname} NOTE: No database or other complex system is required to exchange data between hosts. The hosts that you want to reference data from must be included in either the current play or any previous play. -Magic Variables -+++++++++++++++ - -Some variables made available to hosts don't come from definitions in a playbook, the inventory file, or discovery from the system. There are only two of these, and are used in special cases that many users won't need. - -*group_names* is a list (array) of all the groups the current host is in. This can be used in templates using Jinja2 -syntax to make template source files that vary based on the group membership (or role) of the host:: +Additionally, *group_names* is a list (array) of all the groups the current host is in. This can be used in templates using Jinja2 syntax to make template source files that vary based on the group membership (or role) of the host:: {% if 'webserver' in group_names %} # some part of a configuration file that only applies to webservers {% endif %} - *groups* is a list of all the groups (and hosts) in the inventory. This can be used to enumerate all hosts within a group. For example:: @@ -57,12 +89,14 @@ For example:: # something that applies to all app servers. {% endfor %} - Use cases include pointing a frontend proxy server to all of the app servers, setting up the correct firewall rules between servers, etc. *inventory_hostname* is the name of the hostname as configured in Ansible's inventory host file. This can be useful for when you don't want to rely on the discovered hostname `ansible_hostname` or for other mysterious -reasons. Don't worry about it unless you think you need it. +reasons. If you have a long FQDN, *inventory_hostname_short* (in Ansible 0.6) also contains the part up to the first +period. + +Don't worry about any of this unless you think you need it. You'll know when you do. Variable File Seperation ++++++++++++++++++++++++ @@ -96,6 +130,8 @@ The contents of each variables file is a simple YAML dictionary, like this:: somevar: somevalue password: magic +NOTE: It's also possible to keep per-host and per-group variables in very similar files, this is covered in :ref:`patterns`. + Prompting For Sensitive Data ++++++++++++++++++++++++++++ @@ -117,6 +153,18 @@ in a push-script:: There are full examples of both of these items in the github examples/playbooks directory. +An alternative form of vars_prompt allows for hiding input from the user, and may later support +some other options, but otherwise works equivalently:: + + vars_prompt: + - name: "some_password" + prompt: "Enter password" + private: True + - name: "release_version" + prompt: "Product release version" + private: False + + Passing Variables On The Command Line +++++++++++++++++++++++++++++++++++++ @@ -126,6 +174,18 @@ where you may want to pass in the version of the application to deploy:: ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo" +This is useful, for, among other things, setting the hosts group or the user for the playbook. + +Example:: + + ----- + - user: $user + hosts: $hosts + tasks: + - ... + + ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck" + Conditional Execution +++++++++++++++++++++ @@ -140,20 +200,32 @@ Don't panic -- it's actually pretty simple:: favcolor: blue is_favcolor_blue: "'$favcolor' == 'blue'" is_centos: "'$facter_operatingsystem' == 'CentOS'" + tasks: - name: "shutdown if my favorite color is blue" action: command /sbin/shutdown -t now only_if: '$is_favcolor_blue' Variables from tools like `facter` and `ohai` can be used here, if installed, or you can -use variables that bubble up from ansible (0.3 and later). As a reminder, +use variables that bubble up from ansible, which many are provided by the :ref:`setup` module. As a reminder, these variables are prefixed, so it's `$facter_operatingsystem`, not `$operatingsystem`. Ansible's -built in variables are prefixed with `ansible_`. The only_if -expression is actually a tiny small bit of Python, so be sure to quote variables and make something +built in variables are prefixed with `ansible_`. + +The only_if expression is actually a tiny small bit of Python, so be sure to quote variables and make something that evaluates to `True` or `False`. It is a good idea to use 'vars_files' instead of 'vars' to define all of your conditional expressions in a way that makes them very easy to reuse between plays and playbooks. +You cannot use live checks here, like 'os.path.exists', so don't try. + +It's also easy to provide your own facts if you want, which is covered in :doc:`moduledev`. To run them, just +make a call to your own custom fact gathering module at the top of your list of tasks, and variables returned +there will be accessible to future tasks:: + + tasks: + - name: gather site specific fact data + action: site_facts + - action: command echo ${my_custom_fact_can_be_used_now} Conditional Imports +++++++++++++++++++ @@ -216,6 +288,10 @@ To save some typing, repeated tasks can be written in short-hand like so:: - testuser1 - testuser2 +If you have defined a YAML list in a variables file, or the 'vars' section, you can also do:: + + with_items: $somelist + The above would be the equivalent of:: - name: add user testuser1 @@ -231,7 +307,7 @@ Selecting Files And Templates Based On Variables ++++++++++++++++++++++++++++++++++++++++++++++++ Sometimes a configuration file you want to copy, or a template you will use may depend on a variable. -The following construct (new in 0.4) selects the first available file appropriate for the variables of a given host, +The following construct selects the first available file appropriate for the variables of a given host, which is often much cleaner than putting a lot of if conditionals in a template. The following example shows how to template out a configuration file that was very different between, say, @@ -312,11 +388,21 @@ use the default remote connection type:: hosts: 127.0.0.1 connection: local +Turning Off Facts ++++++++++++++++++ + +If you know you don't need any fact data about your hosts, and know everything about your systems centrally, you +can turn off fact gathering. This has advantages in scaling ansible in push mode with very large numbers of +systems, mainly, or if you are using Ansible on experimental platforms. In any play, just do this:: + + - hosts: whatever + gather_facts: False + Pull-Mode Playbooks +++++++++++++++++++ -The use of playbooks in local mode (above) is made extremely powerful with the addition of `ansible-pull` in the -0.4 release. A script for setting up ansible-pull is provided in the examples/playbooks directory of the source +The use of playbooks in local mode (above) is made extremely powerful with the addition of `ansible-pull`. +A script for setting up ansible-pull is provided in the examples/playbooks directory of the source checkout. The basic idea is to use Ansible to set up a remote copy of ansible on each managed node, each set to run via @@ -327,6 +413,12 @@ the cron frequency, logging locations, and parameters to ansible-pull. This is useful both for extreme scale-out as well as periodic remediation. Usage of the 'fetch' module to retrieve logs from ansible-pull runs would be an excellent way to gather and analyze remote logs from ansible-pull. +Style Points +++++++++++++ + +Ansible playbooks are colorized. If you do not like this, set the ANSIBLE_NOCOLOR=1 environment variable. + +Ansible playbooks also look more impressive with cowsay installed, and we encourage installing this package. .. seealso:: diff --git a/search.html b/search.html index 4a952e03c5..cbd9289b38 100644 --- a/search.html +++ b/search.html @@ -221,7 +221,7 @@ s.parentNode.insertBefore(ga, s);

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.

diff --git a/searchindex.js b/searchindex.js index c8a01054f9..0c4de81a1f 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{facter_operatingsystem:10,kickstart:10,comprimis:3,poorli:[],four:[8,12],prefix:[10,9,6,7,11],sleep:10,consider:9,whose:10,tweet:12,ebuild:0,aur:0,under:10,spec:7,everi:[0,1,2,7,10,11],risk:10,vastli:7,ansible_virtualization_rol:6,redact:6,upstream:0,affect:[4,6],macaddress:6,reg:[],ansible_librari:[],shlex:4,vars_prompt:[10,1],saltstack:[],x86_64:[9,6],awwxvv:6,seper:[1,5,6,7,8,10],direct:[5,7],chef:[3,5],second:[9,10,11],tag_key_valu:9,even:[0,5,7,8,9,10,11],thunder:5,scp:11,"new":[10,5,6],net:[0,2,6,5,4,8,9,11,12],ever:[3,9,4,7,8],told:7,manipul:[6,11],abov:[6,4,7,9,10,11],controlmast:[0,5],eckersberg:[5,2],hera:[],never:[9,4,5,6],here:[0,1,3,4,7,9,10,11,12],herd:5,"malm\u00f6":12,path:[1,6,4,7,8,9,11],interpret:8,datetim:4,permit:[],aka:10,ansible_ssh_arg:0,somethingels:10,brought:[],unix:[3,5],cobblerd:9,ec2_:9,total:7,unit:4,highli:4,describ:[1,7],would:[0,1,6,5,4,7,8,9,10,11],h3d850bdf:[],ansible_memtotal_mb:6,noarch:0,dehaan:[3,12],overhead:3,typo:4,recommend:[4,6,1],type:[9,4,10,5,6],tell:[0,8,6,11,3],notif:5,notic:5,warn:4,ec2_architectur:9,relai:7,ansible_transport:0,must:[4,10,9,6,7],join:3,restor:6,setup:[0,1,3,6,4,7,9,10,11],work:[0,1,3,5,6,7,8,9,10,11],erb:5,virttyp:6,ansible_ssh_host_key_rsa_publ:6,root:[0,1,3,5,7,10,11],overrid:[0,9],os_default:10,give:2,rpath:3,indic:[6,7],app_serv:10,somefil:7,want:[0,1,2,6,5,4,7,9,10,11],end:[5,6,7],hoc:[3,5,6,7,11],quot:[10,11],how:[1,2,6,5,4,7,8,9,10,11],hop:5,yum:[0,1,6,4,7,10,11],perspect:9,updat:[10,6,11],recogn:[7,11],passwordless:11,after:[1,6,5,4,7,8,9,11],lab:[3,5],diagram:[],befor:[3,6,5,4,7,10,11],ohai_:[6,7],ec2_image_id:9,arch:0,parallel:[3,5,10,7,11],attempt:7,interpol:10,ansible_product_seri:6,bootstrap:[3,5,6],credenti:11,exclud:8,greek:[],unpaus:6,maintain:[0,9],environ:[0,9,6],exclus:10,idontknow:[],order:[3,5,6,1,7],oper:[10,6,7,11],frontend:10,over:[0,3,5,8,9,10,11],fall:10,orang:2,becaus:[1,2,5,4,9,10,11],ec2_previous_st:9,rpmbuild:0,ansible_interfac:6,zeu:[],vari:10,myfil:6,streamlin:10,cli:[9,11],img:[],fix:0,better:[6,11],offic:3,easier:[5,4,1,2,11],them:[0,1,2,3,4,5,6,7,8,10,11],thei:[3,6,5,4,7,8,9,10,11,12],fragment:6,etc_acme_conf_acm:1,safe:[0,7],ec2_ten:9,"break":7,glorifi:[],jinja2:[0,5,6,7,10,11],ec2_ip_address:9,mgmt:9,httpd_sys_content_t:6,ec2_region:9,choic:0,vidal:5,bonu:9,timeout:10,each:[1,2,6,5,4,7,8,9,10],debug:2,side:3,mean:[2,6,5,4,7,9,10],exactli:6,playbooks2:[],logo:[],contend:5,network:[3,5,10],dss:6,content:[10,4,7],adapt:[9,6],got:5,forth:7,a1b1c1d1:9,site_fact:4,ntp:[8,11],nightmar:3,free:[9,0,5,10,12],standard:[8,4],dotnet:2,fixm:[],reconfigur:[5,1],openssh:[0,5,3],traceback:4,isv:12,ansible_form_factor:6,isn:[3,5,4],suppos:[8,4,7],rang:[3,6],render:6,wast:[],restrict:4,hook:6,unlik:[5,7],alreadi:[0,3,6,5,4,7,9],van_halen_port:7,massiv:3,primari:[9,6],rewritten:[],top:[5,4,1,7],sometim:[10,6],destination_vari:9,master:9,too:[3,2,5,4,9,11],similarli:[9,10],john:[5,2],iptabl:[],ansible_memfree_mb:6,tool:[0,3,5,9,10,11],took:5,"80ghz":6,somewhat:9,technic:[0,9,6],freemem:6,silli:[],target:[8,1,7],keyword:[5,10],provid:[1,2,6,5,4,7,9,10,11],tree:[4,9,6],project:[0,1,2,3,5,7,10,12],ansible_distribution_releas:6,minut:[5,11],uses_cv:2,recheck:4,provis:5,fashion:5,"_authorized_kei":[],runner:9,ram:5,mind:[5,4],raw:[0,6],aforement:8,seem:[5,10,7],seek:6,someapp:6,sudo_us:7,contact:[0,9,6],blue:10,though:[0,1,3,6,5,4,7,9],bruce:0,limitless:10,deleg:[],regular:7,bsd:[0,5],boxsubscrib:[],simplic:3,don:[0,1,3,6,5,4,7,8,10,11],doc:[],doe:[0,6,5,4,7,8,9,10,11],declar:7,wildcard:8,libpq:6,came:9,cobbler_external_inventori:9,random:7,syntax:[3,1,2,5,7,10,11],kerber:[0,3],pkg:[10,6,7,11],radic:3,identifi:5,pki:5,ec2_private_ip_address:9,absolut:[6,11],northeast:8,acquir:3,explain:[9,4],configur:[0,1,2,3,5,6,7,8,9,10,11],apach:[5,10,7,11],ec2_instance_typ:9,version:[0,1,6,7,8,10,11],ldap:9,stop:[0,1,2,6,5,4,7,8,9,10,11],amazon:9,saturn:[],bar:[8,9,6,7],host_var:8,excel:[3,5,10,8],"public":[10,9,6],reload:6,bad:4,respond:7,daemonless:[],resist:1,result:[3,6,5,4,9,10],fail:[9,5,4,7],themselv:[],hammer:[],best:[3,1,6,5,4,7,9,10],subject:[5,10],heterogen:1,databas:[3,10,9,6,7],discoveri:[10,6],figur:5,simplest:[9,4],awai:[5,10],irc:[0,2,6,5,4,8,9,11,12],approach:[9,3,5,10],attribut:6,login_us:6,manpag:[],extens:5,add:[0,1,6,5,4,9,10,11],recent:5,kitchen:12,easi:[0,1,3,5,6,8,10,11],howev:[0,5,4,11,8],against:[3,5,10,7,8],logic:[],somelist:10,login:7,com:[0,6,4,8,9,12],compromis:5,assur:[10,7],height:[],written:[0,3,4,7,9,10,11],guid:[],assum:[8,9,6],speak:6,multiplay:3,ansible_library_path:4,three:[3,6,8],been:[9,3,5,6,11],much:[3,2,5,6,7,10,11],interest:[0,9],basic:[0,1,2,5,4,7,8,9,10,11],tini:10,quickli:[3,11],life:3,ani:[0,1,3,6,5,4,7,9,10,11],enterprisei:9,child:3,emploi:2,ugli:10,exception:5,east:9,servic:[1,6,4,7,8,9,10,11],ec2_security_group_id:9,vars_fil:[10,1,7],aim:5,tabl:[],conf:[1,6,7,9,10,11],module_nam:[8,9],somekei:4,sever:[9,5,12,2],inventori:[0,1,3,6,7,8,9,10,11],perform:[0,5,10,7,3],suggest:6,make:[0,1,6,5,4,7,8,9,10,11],transpar:0,complex:[3,5,10,7],split:[8,4],complet:[1,2,5,7,9,10],wheel:[10,6],ansible_arch2:[],fragil:[],selevel:6,rail:5,hand:10,rais:[10,4],ownership:11,refin:[],tune:10,speakerdeck:3,kept:[5,7],scenario:9,ansible_:[10,7],hypothet:[],tho:[],client:[],"_concatenated_valu":7,thi:[0,1,2,3,4,5,6,7,8,9,10,11],endif:10,programm:[9,5],everyth:0,left:[],protocol:6,just:[0,1,2,3,4,5,6,7,9,10,11],photo:12,laptop:9,human:[7,2],braces_syntax:[],yet:[0,9,6,11,3],languag:[0,2,3,6,5,4,7,8,9,10],expos:1,spread:3,els:[0,7],ffffff:4,save:[4,10,6,7],hat:[3,5],applic:[3,5,6,7,9,10,12],quirk:2,fusion:6,background:11,daemon:5,specif:[1,5,7,8,9,11],arbitrari:[5,10],manual:[5,7,11],remind:[10,4,1],el6:6,unnecessari:[],groups_logo_sm:[],right:[],deal:4,maxim:5,dead:3,born:5,intern:[9,4],heritag:[],successfulli:[3,9],txt:[6,11],forcibl:[],bottom:7,tracker:[0,3],condit:[10,7],foo:[6,7,8,9,10,11],localhost:6,core:[3,4,5,6,11],plu:7,sensibl:0,web2:9,web1:9,promot:[],repositori:1,peer:5,"super":3,sshd:3,postgresql:6,surround:11,simul:10,"2ydx8":6,commit:1,produc:[4,6,12],bounc:[6,7],contriv:[],halon_system_timeout:8,wrap:1,install_recommend:6,storag:8,eth0:6,ec2_vpc_id:9,git:[0,1,6,5,4,8,10,11],fabric:5,suffici:10,support:[0,3,5,6,7,9,11],happi:3,avail:[0,1,2,6,5,4,7,8,9,10,11],width:[],reli:[3,5,10],gid:6,wordpress:7,call:[1,2,6,4,7,8,9],war:3,fork:[9,5,10,11],head:[6,11],python26:0,form:[10,4,7,2],offer:[],altogeth:3,batman:0,forg:6,groupfil:8,"true":[0,10,4,7,2],freenod:[0,2,3,6,5,4,8,9,11,12],absent:[6,11],inquir:4,maximum:10,until:[10,4,1],ansible_fqdn:6,rerun:7,featur:[0,1,3,5,6,7,8,10],"abstract":5,fedoraproject:[],cobbler:[9,3,5],desir:[4,1,7],ship:[4,6],check:[10,6,11],assembl:6,pipe:11,encrypt:5,tip:[8,10,1,7],role:[10,6,1,7],test:[9,0,4,5,6],tie:9,unlimit:[],maxrequestsperchild:8,node:[0,3,6,5,4,7,9,10,11],intend:4,phoenix:8,devop:3,intent:[],consid:[4,1,7],faster:10,anywher:[],ignor:4,time:[0,1,2,6,5,4,7,8,9,10,11],push:[3,5,10,7],concept:[9,1,11],vpc:9,"5rxgmiicbrh":6,skip:10,consum:5,invent:[],skim:3,operatingsystem:10,decid:[5,4,11],middl:[],depend:[0,6,5,4,10,11],zone:9,graph:[5,12],readabl:[1,7],decis:10,southwest:8,sourc:[0,1,2,3,4,5,6,7,9,10,11,12],string:[4,6,7],somelog:6,word:[3,9],brows:4,jdk:6,administr:[],level:[6,7,2],did:[10,9,4],item:[9,10,2],team:5,quick:0,ansible_product_nam:6,prevent:4,slower:0,trend:6,ec2_platform:9,anaconda:10,port:[8,5,11],favcolor:[10,9,4,11],ansible_distribution_vers:6,current:[0,10,5,4,11],suspect:[],ceec4eif7ya:6,gener:[0,5,4,7,9,10,11],address:[1,5,6,8,9,10],along:[4,6,7],wait:10,box:[3,6,11],precursor:3,extrem:[0,5,10],bob:7,commonli:[11,2],ourselv:7,scpnmy8rks7fyk8ulx0pei:6,regardless:[5,7,2],extra:[5,10,1],tweak:1,modul:[0,1,3,6,5,4,7,9,10,11],userdel:6,prefer:[8,10,4,11],mzdywqlw:6,leav:[10,4,1],instal:[0,3,6,5,4,7,10,11],httpd:[8,10,6,7,11],prove:10,is_cento:10,visit:3,perl:[3,11],live:0,handler:[11,6,1,7],criteria:10,msg:[9,4],scope:6,checkout:[0,4,10,6,3],ntpserver:9,idempot:[3,6,5,4,7,11],share:[0,10,9,4,3],claus:10,accept:[4,6],easiest:[0,9,10,3],get_xml:6,ibm:3,module_arg:9,prepar:4,uniqu:9,cat:[],whatev:[3,4],purpos:[3,6,1,8],claim:1,hostvar:10,facter_hostnam:[7,11],chip:3,agent:[0,5,11,3],critic:3,occur:7,alwai:[4,5,6,7],multipl:[3,1,5,6,7,8,9,10,11],ping:[0,9,6],uptim:9,write:[3,1,2,6,5,4,7,10,11],purg:6,somevalu:[10,4],parameter:7,map:9,mar:[],max:11,clone:[0,4],usabl:7,membership:[10,11],mai:[0,1,2,3,6,4,7,9,10,11],underscor:9,data:[3,2,6,5,4,7,8,9,10,12],man:[],poseidon:[],practic:[3,1,2,5,6,7,10],seuser:6,explicit:[],predic:6,inform:[5,6,7,9,10,11],"switch":5,mango:2,combin:2,talk:[0,7,8],ec2_statu:9,nbsp:[],ec2_id:9,still:[0,5,4,7,9,10],mainli:5,ec2_virtualization_typ:9,facter_:[6,7],jid:11,overlord:[],group:[0,1,2,3,4,5,6,7,8,9,10,11],monitor:[3,9],polici:[3,6],yaml:[3,1,2,5,7,8,10],curli:11,pythonpath:[],mail:[0,1,2,3,4,5,6,7,8,9,10,11,12],job_statu:[],main:[3,1,4,7,9,10],xyz:[],security_group_pete_s_fancy_group:9,non:[3,4,6,7,8],env:0,initi:6,l6pmiam1a8ywep:6,half:5,now:[0,3,6,5,4,7,9,10,11],discuss:5,setyp:6,shoudl:6,down:[9,6,7],term:11,name:[1,2,6,4,7,8,9,10,11],config:[3,9,7],didn:[5,11],crypto:3,separ:[9,7],arg1:6,laserllama:3,yeah:[],ensur:[0,5,6,7,10,11],contrib:4,backport:[0,6],facter:[10,5,6,7,11],happen:[9,5],subnet:9,shown:4,space:[3,6],infrar:[],profil:9,intermix:[],skylin:12,internet:3,correct:[9,5,10,7,2],ksmeta:9,lag:6,migrat:3,argv:4,args_fil:4,theori:7,org:[0,6,11,8],care:[6,7],reusabl:4,wai:[0,1,6,5,4,7,8,9,10,11],frequenc:10,synchron:[10,7],thing:[0,1,2,5,4,7,8,10,11],place:3,raleigh:[3,11,8],router:6,think:[10,5,4,1],frequent:[9,10],first:[0,3,5,6,8,10,11],origin:6,directli:[6,4,7,8,9,11],onc:[1,5,4,7,8,10],arrai:10,yourself:7,"long":[0,3,5,6,9,10,11],oppos:11,open:[10,5,4,7],somegroup:6,given:[10,5,6,1,11],unlink:6,convent:[9,4],gif:[],fierc:[],white:4,friend:12,grant:6,especi:[3,5,10],copi:[0,10,9,6,11],specifi:[0,2,6,5,4,7,9,10,11],retyp:0,netmask:6,github:[0,1,2,3,6,4,7,9,10,12],mostli:1,than:[0,1,2,6,5,4,7,9,10,11],cmdb:9,wide:5,ec2_private_dns_nam:9,were:[5,10,7,11],pre:[],sai:[0,3,5,6,7,10,11],nicer:[],id_webservergroup:9,argument:[6,4,7,8,9,11],dash:[9,2],loki:[],sat:5,engin:12,squar:[],alias:[],destroi:6,note:[0,6,4,7,9,10,11],forc:[0,6],ideal:5,denomin:1,take:[4,5,6,7,11],noth:[6,7,2],channel:[0,2,3,6,5,4,8,9,11,12],begin:[11,2],sure:[9,10,7,11],normal:[9,11],track:[0,10,11,8],beta:[],pair:[9,4,2],adopt:5,meanwhil:5,runtim:10,show:[10,11],cheat:5,aggregr:4,geographi:1,permiss:[0,11],hack:[0,4],rotat:7,xml:2,onli:[0,3,6,5,4,7,9,10,11],explicitli:[6,7],transact:10,activ:12,behind:[5,6],somevar:10,analyz:10,analyt:12,nearli:[6,7,2],variou:[10,5,6,7],get:[0,2,3,6,5,4,7,9,10,11,12],soon:[],repo:[4,6,11,8],ssl:[3,5],cannot:6,ssh:[0,3,5,6,8,9,10,11],requir:[0,1,3,6,5,4,9,10,11],some_file_path_foo:1,where:[0,1,6,5,4,9,10],summari:7,wiki:[],hierachi:[],testserv:6,ansible_product_vers:6,hell:3,ansible_distribut:[10,6],concern:7,detect:6,ansible_ssh_host_key_dsa_publ:6,innov:[],review:[10,5,6,1,7],enumer:10,enough:[8,5,11],ansible_system_vendor:6,between:[0,1,3,5,7,10],"import":[10,9,4,11],across:[9,5],cycl:0,come:[3,10,4,1,7],timmi:7,region:9,contract:9,tutori:4,abc123:9,mani:[6,4,7,9,10,11],setenforc:7,among:5,color:[10,4],overview:2,inspir:5,period:10,colon:[8,7],inventory_hostnam:10,webapp:[5,11],poll:[10,11],other_vari:10,coupl:5,west:9,rebuild:[],rubi:[3,2,6,5,4,10,11],those:[9,10,7,11],"case":[3,6,5,4,7,9,10,11],md5sum:6,straighten:5,trick:7,exist:[3,5,6,7,8,9,10,11],default_releas:6,newhost:6,ec2_stat:9,worri:[5,10],destin:[9,6],myapp:[10,11],rktgjk2httvs6gigvsuwwfod7:6,chkconfig:[],http_port:[8,7],develop:[0,1,2,3,4,5,6,7,10],ansible_architectur:6,author:[3,6,1],media:12,same:[0,1,2,6,7,8,9,10,11],binari:[0,5],html:5,pad:[],pai:11,document:[3,1,2,5,4,7,9,10,11],week:[3,12],webserv:[3,1,6,7,8,9,10,11],closest:12,ec2_subnet_id:9,nest:[4,10,6],driven:[3,9],capabl:1,fruit:2,interventori:[],improv:[4,12],extern:[3,9,10,1],appropri:[9,10,5,6,11],choos:[0,5,6,7,3],without:[0,5,4],model:[3,5],dereferenc:[],execut:[0,1,3,6,5,4,7,9,10,11],when:[0,1,6,5,4,7,9,10,11],rest:[],kill:7,speed:0,aws_access_key_id:9,versu:[0,5,1],miscellan:1,except:[9,4],littl:[9,3,5],otherus:11,blob:9,notori:5,vulner:5,real:[0,10,7],around:[0,5],ohai:[10,5,6,7,11],read:[0,2,3,4,9,11],dark:9,world:[0,5,10,7],intel:6,whitespac:1,realtim:12,ak123:9,integ:6,server:[3,5,6,7,8,9,10,11],rycsbf1d8e5ptxesxhqs4iq:6,output:[9,4,5,6,7],manag:[0,1,2,3,4,5,6,7,8,9,10,11],ec2_kernel:9,assmebl:6,sneaker:[],titan:[],ansible_processor:6,noon:3,definit:10,legal:[4,1],moon:[],exit:[9,4],complic:[3,5],refer:[10,9,6,7,11],ansible_swaptotal_mb:6,power:[0,1,3,5,7,9,10],broken:1,found:[10,9,4],"throw":5,src:[10,9,6,7,11],stone:4,central:[3,5],acm:[8,6,1,11],wolf:9,industri:[3,5,12],mytempl:6,effici:[5,10],terminolog:9,somescript:6,multinod:5,puppetmast:3,your:[0,1,3,6,5,4,7,8,9,10,11,12],charli:6,stare:4,log:[4,10,5,6,7],area:[],aren:5,privileged_us:[],start:[0,1,2,3,5,6,7,9,11],interfac:[9,5],low:6,lot:[3,1,4,10,11,12],ipv6:6,bundl:1,vpc_destination_vari:9,congratul:0,strawberri:2,dirti:[0,6],possibl:[1,4,7,8,9,10,11],"default":[0,3,5,6,8,9,10,11],ansible_fact:4,stacktrac:4,connect:[0,5,10,3],tasti:2,uid:6,creat:[0,3,5,6,7,9,11],certain:[10,5,6,7],strongli:[5,1],deferenc:[],file:[0,1,2,3,6,4,7,8,9,10,11],again:[9,5,4,7],googl:[0,1,2,3,4,5,6,7,8,9,10,11,12],compel:[],event:[4,5,6,7],valid:4,you:[0,1,2,3,4,5,6,7,8,9,10,11,12],external_var:10,poor:4,sequenc:3,symbol:6,signficantli:0,briefli:7,"60k":[3,5],postgresql_us:6,directori:[1,2,6,4,7,10,11],invest:5,descript:[6,1,7],chown:6,potenti:10,appl:2,cpu:6,all:[0,1,2,3,4,5,6,7,8,9,10,11,12],forget:[10,11],selinux:[6,7],lack:[],month:0,abil:5,follow:[0,5,6,8,9,10,11],alt:[],children:8,nors:[],articl:3,program:[3,2,6,5,4,7,11],mcollect:[],arbitari:2,introduc:3,liter:6,tag_name_redi:9,"1pm":3,fals:[10,2],faq:[3,5],failur:[9,5,4,7],veri:[0,1,3,5,6,7,9,10,11],condition:7,database_serv:8,list:[0,1,2,3,4,5,6,7,8,9,10,11,12],pbx:12,sane:5,stderr:4,small:[9,3,5,10,2],testuser2:10,testuser1:10,enterpris:[0,12],zero:4,design:[3,5,11,8],pass:[0,6,4,7,9,10,11],further:[5,2],ec2_spot_instance_request_id:9,what:[0,1,2,3,4,5,6,7,9,10,12],sub:[],section:[0,1,5,7,8,10,11],abl:[3,1],delet:[6,7,11],abbrevi:2,ec2_state_reason:9,method:9,movement:3,hasn:5,full:[10,6,7],hash:[8,10,9,4,2],shouldn:[5,10],first_available_fil:10,strong:3,modifi:[9,4],valu:[2,6,4,7,9,10,11,12],search:12,ahead:[0,7],likin:5,memcach:7,prior:10,amount:9,pick:[5,11],action:[10,9,6,7],via:[0,9,10,3],shorthand:[10,4],factnam:10,ec2_state_cod:9,managememnt:[],href:[],select:[1,6,4,7,8,10],distinct:[],stdout:9,two:[3,6,7,8,9,10],rhel:0,demo:11,taken:[5,7],kick:[3,10,11],more:[0,1,3,5,6,7,8,9,10,11],flat:7,door:5,hundr:12,flag:[0,7],particular:[6,7,8,9,10,11],known:6,compani:[5,12],cach:[9,6],none:[0,9,6],pkgbuild:0,hous:[],dev:[5,6],remain:[],learn:[0,1,2,3,5,4,7,8,10],prompt:[10,7,11],yamllint:2,moduledev:[],templat:[1,6,5,4,7,9,10,11],minimum:[10,4,7],explor:[0,9],cygat:12,cours:[5,10,1],newlin:[],secur:[9,3,10,5,6],rather:[5,10],anoth:[3,1,2,5,6,7,10,11],simpl:[3,1,2,5,7,9,10,11],distro:9,resourc:[10,5,6,7],referenc:[8,7],variant:0,ff0000:4,neccesssari:[],args_data:4,associ:[9,2],"short":[0,5,10],django:6,caus:0,help:[0,1,2,3,4,5,6,7,8,9,10,11],xmpp:5,mission:3,uvh:0,through:[0,6,11,3],hierarchi:[],fff:[],suffer:5,paramet:[4,10,6,7],style:[4,6],psycopg2:6,cowsai:7,pend:[],rapidli:9,might:[8,10,9,4,7],wouldn:[9,5],good:[0,3,5,4,7,9,10],"return":[9,4,5,6],food:2,framework:[9,3,5],botnet:[3,5],odin:[],neccessari:[10,6],instruct:[0,5],authent:6,mysteri:10,easili:[0,3,5,9,10,11],achiev:4,fulli:[0,6],only_if:10,ansible_kernel:6,subsystem:[3,5,6],harm:[],mental:5,hard:5,idea:[0,1,2,3,4,5,6,7,8,9,10,11],crontab:10,realli:[3,2,6,5,4,7],expect:[9,10,7],variablenam:[],beyond:[10,12],orient:7,hostnam:[8,10,9,6,7],safeti:[],bubbl:[10,6,7],print:[9,4],yaml_to_ini:8,qualifi:6,postgr:[6,7],proxi:[8,10],advanc:[0,1,3,5,7,9,10],pub:11,reason:[3,5,4,7,9,10],base:[3,10,5,6,1],believ:5,ask:[0,7,11],bash:[0,5,4,11,3],basi:7,pyyaml:0,sytem:5,launch:[10,7],drupal:12,omit:1,ansible_system:6,assign:[8,9,10,1],feed:[],sdwippefq74nppvuelhpkkaiojjnn1zuhfol:6,notifi:[11,5,4,1,7],obviou:[],feel:[9,10,2],exchang:10,number:[3,5,6,8],placehold:[10,7],done:[0,1,5,6,8,10],least:1,blank:6,stabl:0,differ:[0,1,3,5,6,7,8,9,10,11],list_vm:6,guest:6,script:[3,1,5,4,8,9,10,11],interact:[9,11],construct:[9,5,10,1,7],camelot:10,make_databas:6,statement:[4,7],banana:[],store:[8,9,6,12],option:[0,1,6,5,4,7,8,9,11],part:[3,10,5,6],ec2_key_nam:9,consult:12,reinstal:[],jump:[0,3],kind:[5,4],grep:[],remot:[0,10,6,7,11],remov:[8,10,6,11],reus:[5,10,7],architect:3,str:4,jvmdhw:6,toward:10,cleaner:10,comput:[9,5],well:[0,1,3,6,5,4,7,8,9,10,11],group_var:8,packag:[0,1,6,5,4,7,10,11],imagin:[],built:[9,0,5,10,11],equival:[10,6],self:[5,4],also:[0,1,2,3,4,5,6,7,8,9,10,11,12],build:[9,0,4,5,6],brace:11,distribut:[0,5,1,12,3],passwd:6,previou:10,reach:[3,1],most:[0,1,2,3,5,6,7,9,11],plai:[3,10,7],plan:5,alpha:6,bug:[0,3],cover:[9,5,11],roughli:0,clojur:4,clean:5,pars:[5,4],usual:11,awesom:[3,6,7,12],commerc:12,ansible_processor_count:6,alphanumer:9,devolv:[],mpd_ring:[],particularli:[9,10,7],fine:[0,4,1],find:[9,4,7],impact:[5,12],firewal:[3,10],nosql:12,pretti:[9,5,10],solut:[5,12],security_group_default:9,olympu:[],yml:[10,1,7],remedi:10,long_running_oper:11,financ:3,nativ:[0,10],basho:12,him:12,restart:[1,5,6,7,8,11],mdehaan:[6,11],dollar_sign_syntax:[],common:[10,9,4,1,2],wrote:4,set:[0,1,3,6,5,4,7,8,9,10,11],dump:4,creator:12,security_group_webserv:9,see:[0,1,2,6,5,4,7,8,9,10,11,12],sec:10,arg:4,disadvantag:3,setsebool:7,expert:[5,12],someth:[1,5,4,7,9,10],restructur:7,hold:10,experi:5,altern:[10,11],solo:[],numer:[],aserv:0,solv:[],tag_aws_cloudformation_log:9,foo_port:[],popul:9,both:[0,5,4,9,10,11],last:[0,3],delimit:6,boto:9,thor:[],uncrypt:7,context:6,whole:5,load:[],simpli:[9,6,1,7],point:[9,10,1],etc_other_conf_oth:1,header:8,shutdown:[10,6],suppli:6,asdf:[],backend:[],unsuccess:7,devic:6,due:[0,5,4],empti:9,ran:3,host4:9,escape_pod:8,strategi:5,wish:[0,1,2,7,9,10],fire:[3,5,10],imag:[],convert:[9,4],append:6,gap:5,understand:[3,4],func:[3,5],educ:4,look:[3,6,4,7,8,9,10,11],straight:11,batch:5,"while":[3,5,10,1,7],unifi:[],match:[4,7],behavior:[6,12],error:[4,10,5,6],loop:[10,7],pack:9,pragmat:[],motd:[9,7,11],max_client:7,readm:4,jpg:[],itself:[9,5],cento:[0,10,6],fedora:[0,12],minim:[0,4],belong:9,shorter:4,higher:10,optim:1,painless:3,moment:9,temporari:[],user:[0,1,3,5,6,7,9,10,11],yesterdai:3,createhom:6,lower:[3,5,4],task:[3,1,5,7,10,11],older:6,entri:3,spent:5,expens:9,endfor:10,spend:5,explan:4,ec2_monitor:9,amp:[8,9],love:[],centos6:9,async_wrapp:4,appli:[8,10,6,7],input:[10,4],bin:[0,6,4,7,8,9,10,11],march:4,format:[3,2,5,6,7,8,9,11],judgement:6,nginx:6,game:3,quest:10,bit:[10,5,6],ec2_ownerid:9,xaby9ud5brbfvkedu:6,name_of_fact:[],knock:5,capital_of_assyria:[],signal:5,"98dbcgqw5hme89cjgzro5ktkc5yu":6,manifest:5,"boolean":2,popular:[3,12],postgresql_db:6,often:[9,10,5,6,1],simplifi:11,creation:11,some:[0,1,3,6,5,4,7,8,9,10,11,12],back:[0,5,10,7,11],scale:[5,10],ec2_tag_kei:9,per:9,pem:0,larg:5,either:[9,10,5,6],machin:[0,1,3,6,5,4,7,11],run:[0,2,3,6,5,4,7,8,9,10,11],lose:11,step:[3,10,5,6,7],squeez:6,meantim:5,major:9,impor:[],ec2_launch_tim:9,othervar:[],ansible_eth0:[10,6],block:10,steelhous:12,primarili:6,unreach:7,intl:[],within:[9,8,5,10],contributor:12,chang:[0,1,3,6,4,7,8,10,11],bserver:0,rxp33wfphjwjwvhatfci1nrbaudqi:6,ansible_python_vers:6,group_nam:10,question:[0,1,2,3,4,5,6,7,8,9,10,11],fast:[0,5,3],custom:[3,5],includ:[1,6,4,7,8,9,10,11,12],suit:[5,7],forward:3,datastructur:9,foosbal:[8,6],lint:2,link:[4,6],newer:0,line:[0,2,3,6,5,4,7,8,9,10,11],info:[9,6,11],concaten:6,caller:6,planet:3,schmooz:12,ec2_dns_nam:9,highlight:[],similar:[9,6,11],curv:[3,5],constant:1,parser:4,doesn:[3,9,10,11,2],repres:[9,2],chat:[0,2,3,6,5,4,8,9,11,12],bracket:8,coder:5,crypt:[6,11],chgrp:[],likes_emac:2,transport:[0,5,3],peopl:[3,10,12],nice:[3,7],draw:3,asciidoc:[],meaning:[],far:[11,2],hello:0,jupit:[],pluggabl:[3,5],code:[0,1,3,6,5,4,9,10,11,12],async_statu:11,privat:[0,9,10],sensit:10,elsewher:11,friendli:3,send:10,autostart:6,sens:[0,9],fatal:7,blindingli:[],sent:4,sensic:3,logtre:6,signfic:4,asdf1234l:6,implicitli:5,ec2_root_device_typ:9,relev:[10,5,4],recip:0,magic:[10,5,4,7],id_rsa:[0,11],michael:[3,12],fewer:10,"try":[0,3,5,4,7,9,10],p2xkxaczh6fc:6,pleas:[9,0,5],malici:5,impli:6,natur:[],cron:[5,10],download:0,ansible_python_interpret:8,folk:[0,4,12],index:9,turn:[3,10,5,4],compar:5,access:[0,3,6,9,10,11],can:[0,1,2,3,4,5,6,7,8,9,10,11],chose:[],let:[0,2,3,6,4,7,9,11],ubuntu:[9,6],sinc:[9,6,1,11],great:[3,1,5,4,10,12],convers:8,hypervisor:6,technolog:3,later:[0,1,6,4,7,8,10,11],typic:[5,11],maker:12,control:[3,1,6,5,4,7,8,9,10,11],heart:9,win:[],app:[5,10],apt:[10,6,1,11],api:[9,3,4,5,6],cloud:5,fed:[6,7],from:[0,1,2,3,4,5,6,7,8,9,10,11,12],usa:8,commun:[9,3,5,7],"8b3satjxmpgbfbueebwubk5ejl":6,doubl:11,upgrad:[6,7,11],next:[0,7,8],few:9,usr:[0,6,4,7,8,9,11],sort:[5,6,12],dbserver:[8,1],sbin:[10,6,7,11],trail:1,train:5,login_password:6,starter:[4,7],account:[0,6,7,11],retriev:10,tunnel:3,alia:8,openjdk:6,alic:7,ec2_ramdisk:9,fetch:[10,6],proof:4,employe:[5,2],tar:0,process:[3,5,6,7,11],lock:[5,10],sudo:[0,3,5,6,7,11],high:[4,11],knows_oop:2,tag:[0,9,6],tab:7,tarbal:[],onlin:2,surfac:[3,5],lame:2,"_assembl":[],lepton:4,subdirectori:6,srv:[10,9,6,7,11],panic:10,stock:[],express:[3,2,4,7,9,10],gentoo:0,watch:3,attent:11,tier:3,philosophi:3,ansible_host:0,drop:4,orchestr:[3,5,7],correspond:6,element:[9,10],issu:[0,5,1,3],allow:[0,1,5,4,9,10,11],aws_secret_access_kei:9,move:[6,7],elit:2,comma:[9,6],release_vers:[],bunch:[],taboot:5,infrastructur:[0,1,3,5,7,8],anyon:5,ansible_product_uuid:6,dag:12,greater:8,python:[0,2,3,6,5,4,8,9,10,11],auto:[9,4],dai:[3,5],devel:[],mention:7,rubygem:11,instead:[0,1,5,6,10,11],strive:4,multiprocess:5,anyth:[9,4,5,6],edit:[0,9,6],slide:3,mode:[0,10,5,6,11],grok:3,bump:0,usernam:[],ec2:[3,9],our:[3,12,11,2],patch:5,pitfal:4,special:[9,10],out:[3,1,6,5,4,7,8,9,10,11],variabl:[0,1,3,6,5,4,7,8,9,10,11],reboot:[6,7,11],security_group_:9,rel:[8,6,1],"_default":6,leverag:0,ref:[],login_host:6,red:[9,3,5,4,11],clarifi:[],insid:[9,10,7],unpars:4,ansible_machin:6,dictionari:[10,9,4,2],releas:[0,1,5,6,7,10],indent:2,could:[9,10,5,4,7],put:[0,1,6,8,10,11],fqdn:[],keep:[0,1,4,8,9,10],outsid:9,adrian:5,retain:5,stuck:7,localdomain:6,softwar:[3,1,5,6,9,10,11],qualiti:4,scene:6,echo:[0,9,10,11],date:[0,4],puppet:[9,3,5,6],submit:5,owner:[6,11],prioriti:6,ansible_lo:6,perfectli:0,mkdir:11,system:[0,1,3,6,5,4,7,8,9,10,11],messag:[9,4,5,6],attack:[3,5],pattern_goes_her:8,termin:11,"final":6,ipv4:[10,6],shell:[3,1,6,4,7,9,11],ec2_descript:9,hassl:3,rst:[],nobodi:4,dive:7,richer:5,intervert:10,charact:[9,2],sweden:12,favorit:10,deprec:8,sysadmin:5,ansible_processor_cor:6,have:[0,1,2,3,4,5,6,7,8,9,10,11,12],close:[3,4],need:[0,1,2,3,4,5,6,7,8,9,10,11],cfengin:5,border:[],paramiko:[0,5],mix:[8,10,7],baisc:[],tag_name_web:9,which:[0,1,2,3,5,6,7,8,9,10],datacent:[8,1],with_item:10,divers:3,singl:[1,5,6,7,9,10,11],ec2_security_group_nam:9,unless:[10,5,6,7],deploy:[11,0,5,7,3],who:[3,9,6,7,12],discov:[3,10,7],deploi:[3,5,6,7,10,11],comparison:[3,5],why:[5,1],serol:6,urg:1,gather:[10,5,6],request:6,self_destruct_countdown:8,snapshot:6,fact:[3,6,5,4,10,11],text:[],verbos:[4,6,7],bring:[5,7],playbook:[0,1,2,3,4,5,6,7,8,9,10,11],trivial:[0,9,6,3],anywai:8,varnam:7,redirect:11,locat:[8,10,6,7],tire:5,should:[0,1,2,3,4,5,6,7,9,12],ansible_swapfree_mb:6,won:[10,7,11],ec2_root_device_nam:9,"5px":[],local:[10,5,6],contribut:[0,11,12,3],pull:[9,5,10],familiar:9,autom:[5,1,11],increas:10,ansible_ssh_port:[],enabl:6,organ:[6,1,12],sha:6,stuff:[3,11],integr:[3,9,6],contain:[3,1,5,4,7,10],ymwaaaebalnasqn10tngsrde5arbsw8ctojqlyybciqgpytzw8zenerfxt7ij3fw3jh:6,view:3,legaci:6,cthy5bws9kmyjmeo0kfumh8hy4maxdokhq7dhbpircjs5jptogxirezjba67r6:6,nodeinfo:6,skynet:6,gmail:[],statu:[4,10,6,11],extend:[3,5,10,1,7],pattern:[0,1,3,7,8,9,10,11],state:[6,5,4,7,8,10,11],progress:[],email:[3,1,12],kei:[0,2,3,6,5,4,7,9,10,11,12],homedir:6,tempfil:7,job:[11,2],entir:[3,1,5,4,7,8,9,10],homebrew:0,"2pm":3,addit:[6,4,7,8,9,10],southeast:8,admin:[3,9],goal:[7,11],equal:[5,4,11],ohai_foo:11,etc:[0,3,5,6,7,8,9,10,11],instanc:[8,9,10,7],comment:[4,6,1],english:6,guidelin:4,chmod:[4,9,6,7],distil:5,rpm:[0,4],mailto:[],quit:[0,4,1],evalu:[10,11],platform:[10,5,6,12],decent:[],compos:7,compon:[],json:[2,6,5,4,9,10,11],besid:4,treat:[5,4,1],ungroup:[],immedi:[10,6,7],"2677m":6,yournam:[7,11],capistrano:5,global_var:1,vmware:6,togeth:[6,1],ador:3,atlanta:[8,9,11],present:[3,10,6],authorized_kei:[0,6],multi:[3,5,7],plain:3,align:[],ansible_virtualization_typ:6,defin:[10,9,6,7],ultra:3,layer:[9,5],almost:[5,6],virt:6,site:[5,1],lightweight:9,revis:0,michaeldehaan:[],surprisingli:7,halt:1,welcom:[3,9],cross:5,member:[6,2],handl:[3,4,10,6],inc:6,ansibl:[0,1,2,3,4,5,6,7,8,9,10,11,12],difficult:5,http:[9,6],structur:[10,6],denot:8,effect:[],libvirt:6,php:11,distutil:0,audit:[3,10,1],off:[3,5,10,1],center:[],seth:5,exampl:[0,1,2,6,5,4,7,8,9,10,11],command:[0,3,6,5,4,7,8,9,10,11],filesystem:10,undefin:6,latest:[0,6,7,11],lest:3,tunabl:1,paus:6,less:[0,5,3],additon:0,heavili:5,skill:2,simultan:11,web:[9,5,11,12],host5:9,cleanup:10,host3:[8,9],host2:[8,9],host1:[8,9],smart:11,knob:1,branch:[0,6],xmlrpc:9,dest:[10,9,6,7,11],piec:9,know:[2,6,5,4,8,9],nor:6,password:[0,5,6,7,10,11],recurs:[6,11],python3:0,python2:0,loss:5,motorola:3,like:[0,1,2,3,4,5,6,7,8,9,10,11],success:[4,6,7],amazonaw:9,necessari:11,cellspac:[],async:10,architectur:[3,5,10],page:[0,5,11,2,3],ansible_hostnam:[10,6,11],shed:5,revers:[3,6],captur:4,twitter:[],linux:[0,5,6,12,3],"export":[0,9],home:6,librari:[4,6,1,2],tmp:[9,6,7,11],lead:[5,12],avoid:[11,0,6,7,3],thank:5,overlap:[],update_cach:6,encourag:[5,1],slight:9,importerror:4,usag:[1,6,5,4,8,10,11],symlink:[0,6],vhost:7,host:[0,1,3,6,5,4,7,8,9,10,11,12],although:4,simpler:[5,11],about:[0,1,2,3,4,5,6,7,9,10,11],actual:[4,10,5,6,7],disabl:7,ntp_server:[8,11],own:[1,6,5,4,7,9,10],automat:[4,9,6,1,11],ec2_public_dns_nam:9,some_serv:8,hang:7,merg:[5,4],transfer:[4,6,7,11],intention:[],trigger:[5,6,7],"8agepocvjdhyzr7pahfxzgudgktgrl2qzryukcmwo1czbmbhci5fzimvths9":6,replac:[],"var":[8,10,6,1,7],individu:[8,1],simplejson:[0,4,6],subscrib:[],nnwugi:[],continu:4,ec2_plac:9,eas:5,eat:11,count:7,succe:4,made:[3,6,5,4,7,8,10],whether:[9,4,5,6],arg2:6,writeabl:7,asynchron:[10,7],record:2,below:[0,9,6,7],limit:[10,11],otherwis:[4,6],problem:[3,5,2],epel:0,pin:6,is_favcolor_blu:10,filenam:10,ec2_tag_nam:9,implement:[9,5,4,7],ini:[8,9],ing:6,probabl:[0,5,4,1,7],boot:6,detail:[9,7,11],virtual:[6,7],capabilit:[],other:[0,1,2,3,4,5,6,7,8,9,10,11,12],futur:[10,4,1],rememb:11,varieti:[9,5,4],riak:12,ec2_external_inventori:9,repeat:[10,1],"class":[9,7],debian:[0,10,6],stai:10,sphinx:[],scientif:0,reliabl:5,rule:[10,1,11],portion:[8,6],emerg:3,name_of_host:[],"8btwaryr":6},objtypes:{},titles:["Getting Started","Best Practices","YAML Syntax","Introducing Ansible","Module Development","FAQ","Ansible Modules","Playbooks","Inventory & Patterns","API & Integrations","Advanced Playbooks","Command Line","Who Uses Ansible"],objnames:{},filenames:["gettingstarted","bestpractices","YAMLSyntax","index","moduledev","faq","modules","playbooks","patterns","api","playbooks2","examples","who_uses_ansible"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{facter_operatingsystem:10,kickstart:10,comprimis:3,poorli:[],four:[8,12],prefix:[10,9,6,7,11],sleep:10,consider:9,whose:10,tweet:12,ebuild:0,aur:0,under:[10,7],spec:7,everi:[0,1,2,7,10,11],risk:10,vastli:7,ansible_virtualization_rol:6,redact:6,upstream:0,affect:[4,6],macaddress:6,reg:[],ansible_librari:[],shlex:4,vars_prompt:[10,1],saltstack:[],x86_64:[9,6],awwxvv:6,seper:[1,5,6,7,8,10],direct:[5,7],chef:[3,5],second:[9,10,11],tag_key_valu:9,even:[0,5,7,8,9,10,11],hide:10,thunder:5,scp:11,"new":[10,5,6],net:[0,2,6,5,4,8,9,11,12],ever:[3,9,4,7,8],told:7,manipul:[6,11],abov:[6,4,7,9,10,11],controlmast:[0,5],eckersberg:[5,2],hera:[],never:[9,4,5,6],here:[0,1,3,4,7,9,10,11,12],herd:5,"malm\u00f6":12,path:[1,6,4,7,8,9,10,11],interpret:8,datetim:4,permit:[],aka:10,ansible_ssh_arg:0,somethingels:10,brought:[],unix:[3,5],cobblerd:9,ec2_:9,total:7,unit:4,highli:4,describ:[1,7],would:[0,1,6,5,4,7,8,9,10,11],h3d850bdf:[],ansible_memtotal_mb:6,noarch:0,dehaan:[3,12],overhead:3,typo:4,recommend:[4,6,1],type:[9,4,10,5,6],tell:[0,8,6,11,3],notif:5,notic:5,warn:4,ec2_architectur:9,relai:7,ansible_transport:0,must:[4,10,9,6,7],join:3,restor:6,setup:[0,1,3,6,4,7,9,10,11],work:[0,1,3,5,6,7,8,9,10,11],erb:5,virttyp:6,ansible_ssh_host_key_rsa_publ:6,root:[0,1,3,5,7,10,11],overrid:[0,9],os_default:10,give:2,rpath:3,indic:[6,7],app_serv:10,somefil:7,want:[0,1,2,6,5,4,7,9,10,11],end:[5,6,7],hoc:[3,5,6,7,11],quot:[10,11],how:[1,2,6,5,4,7,8,9,10,11],hop:5,yum:[0,1,6,4,7,10,11],perspect:9,updat:[10,6,11],recogn:[7,11],passwordless:11,after:[1,6,5,4,7,8,9,11],lab:[3,5],diagram:[],befor:[3,6,5,4,7,10,11],ohai_:[6,7],ec2_image_id:9,arch:0,parallel:[3,5,10,7,11],attempt:7,interpol:10,ansible_product_seri:6,bootstrap:[3,5,6],credenti:11,exclud:8,greek:[],unpaus:6,maintain:[0,9],environ:[0,10,9,6],enter:10,exclus:10,idontknow:[],order:[3,5,6,1,7],oper:[10,6,7,11],frontend:10,over:[0,3,5,8,9,10,11],fall:10,orang:2,becaus:[1,2,5,4,9,10,11],ec2_previous_st:9,rpmbuild:0,ansible_interfac:6,zeu:[],gather_fact:10,vari:10,myfil:6,streamlin:10,cli:[9,11],img:[],fix:0,better:[6,11],offic:3,easier:[5,4,1,2,11],them:[0,1,2,3,4,5,6,7,8,10,11],thei:[3,6,5,4,7,8,9,10,11,12],fragment:6,etc_acme_conf_acm:1,safe:[0,7],ec2_ten:9,"break":7,glorifi:[],jinja2:[0,5,6,7,10,11],ec2_ip_address:9,mgmt:9,httpd_sys_content_t:6,ec2_region:9,choic:0,vidal:5,bonu:9,timeout:10,each:[1,2,6,5,4,7,8,9,10],debug:2,side:3,mean:[2,6,5,4,7,9,10],exactli:[10,6],playbooks2:[],logo:[],some_password:10,contend:5,network:[3,5,10],dss:6,content:[10,4,7],adapt:[9,6],got:5,forth:7,a1b1c1d1:9,site_fact:[10,4],ntp:[8,11],nightmar:3,free:[9,0,5,10,12],standard:[8,4],dotnet:2,fixm:[],reconfigur:[5,10,1],openssh:[0,5,3],traceback:4,isv:12,ansible_form_factor:6,isn:[3,5,4],suppos:[8,10,4,7],rang:[3,6],render:6,wast:[],restrict:4,hook:6,unlik:[5,7],alreadi:[0,3,6,5,4,7,9],van_halen_port:7,massiv:3,primari:[9,6],rewritten:[],top:[10,5,4,1,7],sometim:[10,6],destination_vari:9,master:9,too:[3,2,5,4,9,11],similarli:[9,10],john:[5,2],iptabl:[],ansible_memfree_mb:6,tool:[0,3,5,9,10,11],took:5,"80ghz":6,somewhat:9,technic:[0,9,6],freemem:6,silli:[],target:[8,1,7],keyword:[5,10],provid:[1,2,6,5,4,7,9,10,11],tree:[4,9,6],project:[0,1,2,3,5,7,10,12],ansible_distribution_releas:6,minut:[5,11],uses_cv:2,recheck:4,provis:5,fashion:5,"_authorized_kei":[],runner:9,ram:5,mind:[5,4],raw:[0,6],aforement:8,seem:[5,10,7],seek:6,someapp:6,sudo_us:7,contact:[0,9,6],blue:10,though:[0,1,3,6,5,4,7,9],bruce:0,limitless:10,deleg:[],regular:7,bsd:[0,5],boxsubscrib:[],simplic:3,don:[0,1,3,6,5,4,7,8,10,11],doc:[],doe:[0,6,5,4,7,8,9,10,11],declar:7,wildcard:8,libpq:6,came:9,cobbler_external_inventori:9,random:7,syntax:[3,1,2,5,7,10,11],kerber:[0,3],pkg:[10,6,7,11],radic:3,identifi:5,pki:5,ec2_private_ip_address:9,absolut:[6,11],northeast:8,acquir:3,explain:[9,4],configur:[0,1,2,3,5,6,7,8,9,10,11],apach:[5,10,7,11],ec2_instance_typ:9,version:[0,1,6,7,8,10,11],ldap:9,stop:[0,1,2,6,5,4,7,8,9,10,11],amazon:9,saturn:[],bar:[8,9,6,7],host_var:8,excel:[3,5,10,8],"public":[10,9,6],reload:6,bad:4,respond:7,daemonless:[],resist:1,result:[3,6,5,4,7,9,10],fail:[9,5,4,7],themselv:[],hammer:[],best:[3,1,6,5,4,7,9,10],subject:[5,10],heterogen:1,databas:[3,10,9,6,7],discoveri:6,figur:5,simplest:[9,4],awai:[5,10],irc:[0,2,6,5,4,8,9,11,12],approach:[9,3,5,10],attribut:[10,6],login_us:6,manpag:[],extens:5,add:[0,1,6,5,4,9,10,11],recent:5,kitchen:12,easi:[0,1,3,5,6,8,10,11],howev:[0,5,4,11,8],against:[3,5,10,7,8],logic:[],somelist:10,login:7,com:[0,6,4,8,9,12],compromis:5,assur:[10,7],height:[],written:[0,3,4,7,9,10,11],guid:[],assum:[8,9,6],speak:6,multiplay:3,ansible_library_path:4,three:[3,6,8],been:[9,3,5,6,11],much:[3,2,5,6,7,10,11],interest:[0,9],basic:[0,1,2,5,4,7,8,9,10,11],tini:10,quickli:[3,11],life:3,ani:[0,1,3,6,5,4,7,9,10,11],enterprisei:9,child:3,emploi:2,ugli:10,exception:5,east:9,servic:[1,6,4,7,8,9,10,11],ec2_security_group_id:9,vars_fil:[10,1,7],aim:5,tabl:[],conf:[1,6,7,9,10,11],module_nam:[8,9],somekei:4,sever:[9,12,5,7,2],inventori:[0,1,3,6,7,8,9,10,11],perform:[0,5,10,7,3],suggest:6,make:[0,1,6,5,4,7,8,9,10,11],transpar:0,complex:[3,5,10,7],split:[8,4],complet:[1,2,5,7,9,10],wheel:[10,6],ansible_arch2:[],fragil:[],selevel:6,rail:5,hand:10,rais:[10,4],ownership:11,refin:[],tune:10,speakerdeck:3,kept:[5,7],scenario:9,ansible_:10,hypothet:[],tho:[],client:[],"_concatenated_valu":[],thi:[0,1,2,3,4,5,6,7,8,9,10,11],endif:10,programm:[9,5],everyth:[0,10],left:[],protocol:6,just:[0,1,2,3,4,5,6,7,9,10,11],photo:12,laptop:9,human:[7,2],braces_syntax:[],yet:[0,9,6,11,3],languag:[0,2,3,6,5,4,7,8,9,10],expos:1,spread:3,els:[0,7],ffffff:4,save:[4,10,6,7],hat:[3,5],applic:[3,5,6,7,9,10,12],quirk:2,fusion:6,background:11,daemon:5,specif:[1,5,7,8,9,10,11],arbitrari:[5,10],manual:[5,7,11],remind:[10,4,1],el6:6,unnecessari:[],groups_logo_sm:[],right:[],deal:4,maxim:5,dead:3,born:5,intern:[9,4],heritag:[],successfulli:[3,9],txt:[6,11],forcibl:[],bottom:7,tracker:[0,3],condit:[10,7],foo:[6,7,8,9,10,11],localhost:6,core:[3,4,5,6,11],plu:[],sensibl:0,web2:9,web1:9,promot:[],repositori:1,peer:5,"super":3,chapter:7,sshd:3,postgresql:6,surround:11,simul:10,"2ydx8":6,commit:1,produc:[4,6,12],bounc:[6,7],contriv:[],halon_system_timeout:8,wrap:1,install_recommend:6,storag:8,eth0:6,ec2_vpc_id:9,git:[0,1,6,5,4,8,10,11],fabric:5,suffici:10,support:[0,3,5,6,7,9,10,11],happi:3,avail:[0,1,2,6,5,4,7,8,9,10,11],width:[],reli:[3,5,10],gid:6,wordpress:7,call:[1,2,6,4,7,8,9,10],war:3,fork:[9,5,10,11],head:[6,11],python26:0,form:[10,4,7,2],offer:[],altogeth:3,batman:0,forg:6,groupfil:8,"true":[0,10,4,7,2],freenod:[0,2,3,6,5,4,8,9,11,12],absent:[6,11],inquir:4,maximum:10,until:[10,4,1],ansible_fqdn:6,rerun:7,featur:[0,1,3,5,6,7,8,10],"abstract":5,fedoraproject:[],cobbler:[9,3,5],desir:[4,1,7],ship:[4,6],check:[10,6,11],assembl:6,pipe:11,encrypt:5,tip:[8,10,1,7],role:[10,6,1,7],test:[9,0,4,5,6],tie:9,unlimit:[],maxrequestsperchild:8,node:[0,3,6,5,4,7,9,10,11],intend:4,phoenix:8,devop:3,intent:[],consid:[4,1,7],faster:10,anywher:[],ignor:[4,7],time:[0,1,2,6,5,4,7,8,9,10,11],push:[3,5,10,7],concept:[9,10,1,11],vpc:9,"5rxgmiicbrh":6,skip:[10,7],consum:5,invent:[],skim:3,operatingsystem:10,decid:[5,4,7,11],middl:[],depend:[0,6,5,4,10,11],zone:9,graph:[5,12],readabl:[1,7],decis:10,southwest:8,sourc:[0,1,2,3,4,5,6,7,9,10,11,12],string:[4,6,7],somelog:6,word:[3,9],brows:4,jdk:6,administr:[],level:[6,7,2],did:[10,9,4],item:[9,10,2],team:5,quick:0,ansible_product_nam:6,prevent:4,slower:0,trend:6,ec2_platform:9,anaconda:10,port:[8,5,11],favcolor:[10,9,4,11],ansible_distribution_vers:6,current:[0,10,5,4,11],suspect:[],ceec4eif7ya:6,gener:[0,5,4,7,9,10,11],address:[1,5,6,8,9,10],along:[4,6,7],wait:10,box:[3,6,11],precursor:3,extrem:[0,5,10],bob:7,commonli:[11,2],ourselv:7,scpnmy8rks7fyk8ulx0pei:6,regardless:[5,7,2],extra:[5,10,1],tweak:1,modul:[0,1,3,6,5,4,7,9,10,11],userdel:6,prefer:[8,10,4,11],mzdywqlw:6,leav:[10,4,1],instal:[0,3,6,5,4,7,10,11],httpd:[8,10,6,7,11],prove:10,is_cento:10,visit:3,perl:[3,11],live:[0,10],handler:[11,6,1,7],criteria:10,msg:[9,4],scope:6,checkout:[0,4,10,6,3],ntpserver:9,idempot:[3,6,5,4,7,11],share:[0,10,9,4,3],claus:10,accept:[4,6],easiest:[0,9,10,3],get_xml:6,ibm:3,module_arg:9,prepar:4,uniqu:9,cat:[],whatev:[3,10,4],purpos:[3,8,6,1,7],claim:1,hostvar:10,facter_hostnam:[7,11],chip:3,agent:[0,5,11,3],critic:3,occur:7,alwai:[4,5,6,7],multipl:[3,1,5,6,7,8,9,10,11],ping:[0,9,6],uptim:9,write:[3,1,2,6,5,4,7,10,11],purg:6,somevalu:[10,4],parameter:7,map:[9,7],product:10,mar:[],max:11,clone:[0,4],usabl:7,membership:[10,11],mai:[0,1,2,3,6,4,7,9,10,11],underscor:9,data:[3,2,6,5,4,7,8,9,10,12],man:[],poseidon:[],practic:[3,1,2,5,6,7,10],seuser:6,explicit:[],predic:6,inform:[5,6,7,9,10,11],"switch":5,mango:2,combin:2,talk:[0,7,8],ec2_statu:9,nbsp:[],ec2_id:9,still:[0,5,4,7,9,10],mainli:[5,10],ec2_virtualization_typ:9,facter_:[6,7],jid:11,overlord:[],group:[0,1,2,3,4,5,6,7,8,9,10,11],monitor:[3,9],polici:[3,6],yaml:[3,1,2,5,7,8,10],curli:11,pythonpath:[],mail:[0,1,2,3,4,5,6,7,8,9,10,11,12],job_statu:[],main:[3,1,4,7,9,10],xyz:[],security_group_pete_s_fancy_group:9,non:[3,4,6,7,8],env:0,initi:6,l6pmiam1a8ywep:6,half:5,now:[0,3,6,5,4,7,9,10,11],discuss:5,setyp:6,shoudl:6,down:[9,6,7],term:11,name:[1,2,6,4,7,8,9,10,11],config:[3,9,7],didn:[5,11],crypto:3,separ:[9,7],arg1:6,laserllama:3,yeah:[],ensur:[0,5,6,7,10,11],contrib:4,backport:[0,6],facter:[10,5,6,7,11],happen:[9,5],subnet:9,shown:4,space:[3,6],infrar:[],profil:9,intermix:[],skylin:12,internet:3,correct:[9,5,10,7,2],ksmeta:9,lag:6,migrat:3,argv:4,args_fil:4,theori:7,org:[0,6,11,8],care:[6,7],reusabl:4,wai:[0,1,6,5,4,7,8,9,10,11],frequenc:10,synchron:[10,7],thing:[0,1,2,5,4,7,8,10,11],place:3,raleigh:[3,11,8],router:6,think:[10,5,4,1],frequent:[9,10],first:[0,3,5,6,8,10,11],origin:6,directli:[6,4,7,8,9,11],onc:[1,5,4,7,8,10],arrai:10,yourself:7,"long":[0,3,5,6,9,10,11],oppos:11,open:[10,5,4,7],somegroup:6,given:[10,5,6,1,11],unlink:6,convent:[9,4],gif:[],fierc:[],white:4,friend:12,grant:6,especi:[3,5,10],copi:[0,10,9,6,11],specifi:[0,2,6,5,4,7,9,10,11],retyp:0,netmask:6,github:[0,1,2,3,6,4,7,9,10,12],mostli:1,than:[0,1,2,6,5,4,7,9,10,11],cmdb:9,wide:5,ec2_private_dns_nam:9,were:[5,10,7,11],pre:[],sai:[0,3,5,6,7,10,11],nicer:[],id_webservergroup:9,argument:[6,4,7,8,9,11],dash:[9,2],loki:[],sat:5,engin:12,squar:[],alias:[],destroi:6,note:[0,6,4,7,9,10,11],forc:[0,6],ideal:5,denomin:1,take:[4,5,6,7,11],noth:[6,7,2],channel:[0,2,3,6,5,4,8,9,11,12],begin:[11,2],sure:[9,10,7,11],normal:[9,11],track:[0,10,11,8],beta:[],pair:[9,4,2],adopt:5,meanwhil:5,runtim:10,show:[10,7,11],cheat:5,aggregr:4,geographi:1,permiss:[0,11],hack:[0,4],rotat:7,xml:2,onli:[0,3,6,5,4,7,9,10,11],explicitli:[6,7],transact:10,activ:12,behind:[5,6],somevar:10,analyz:10,analyt:12,nearli:[6,2],variou:[10,5,6,7],get:[0,2,3,6,5,4,7,9,10,11,12],soon:[],repo:[4,6,11,8],ssl:[3,5],cannot:[10,6,7],ssh:[0,3,5,6,8,9,10,11],requir:[0,1,3,6,5,4,9,10,11],some_file_path_foo:1,where:[0,1,6,5,4,9,10],summari:7,wiki:[],hierachi:[],testserv:6,ansible_product_vers:6,fff:[],ansible_distribut:[10,6],concern:7,detect:6,ansible_ssh_host_key_dsa_publ:6,innov:[],review:[10,5,6,1,7],enumer:10,enough:[8,5,11],ansible_system_vendor:6,between:[0,1,3,5,7,10],"import":[10,9,4,7,11],across:[9,5],cycl:0,come:[3,4,1,7],timmi:7,region:9,contract:9,tutori:4,abc123:9,mani:[6,4,7,9,10,11],setenforc:7,among:[5,10],color:[10,4],overview:2,inspir:5,period:10,colon:[8,7],inventory_hostnam:10,webapp:[5,11],poll:[10,11],other_vari:10,coupl:5,west:9,rebuild:[],rubi:[3,2,6,5,4,10,11],those:[9,10,7,11],"case":[3,6,5,4,7,9,10,11],md5sum:6,straighten:5,trick:7,exist:[3,5,6,7,8,9,10,11],default_releas:6,newhost:6,advantag:10,ec2_stat:9,worri:[5,10],destin:[9,6],myapp:[10,11],rktgjk2httvs6gigvsuwwfod7:6,chkconfig:[],http_port:[8,7],develop:[0,1,2,3,4,5,6,7,10],ansible_architectur:6,author:[3,6,1],media:12,same:[0,1,2,6,7,8,9,10,11],binari:[0,5],html:5,pad:[],pai:11,document:[3,1,2,5,4,7,9,10,11],week:[3,12],webserv:[3,1,6,7,8,9,10,11],closest:12,ec2_subnet_id:9,nest:[4,10,6],driven:[3,9],capabl:1,fruit:2,interventori:[],improv:[4,12],extern:[3,9,10,1],appropri:[9,10,5,6,11],choos:[0,5,6,7,3],without:[0,5,4],model:[3,5],dereferenc:[],execut:[0,1,3,6,5,4,7,9,10,11],when:[0,1,6,5,4,7,9,10,11],rest:[],kill:7,speed:0,aws_access_key_id:9,versu:[0,5,1],miscellan:1,except:[9,4],littl:[9,3,5],otherus:11,blob:9,notori:5,vulner:5,real:[0,10,7],around:[0,5],ohai:[10,5,6,7,11],read:[0,2,3,4,9,11],dark:9,world:[0,5,10,7],intel:6,whitespac:1,realtim:12,ak123:9,integ:6,server:[3,5,6,7,8,9,10,11],rycsbf1d8e5ptxesxhqs4iq:6,output:[9,4,5,6,7],manag:[0,1,2,3,4,5,6,7,8,9,10,11],ec2_kernel:9,assmebl:6,sneaker:[],titan:[],ansible_processor:6,noon:3,definit:[],legal:[4,1],moon:[],exit:[9,4,7],complic:[3,5],refer:[10,9,6,7,11],ansible_swaptotal_mb:6,power:[0,1,3,5,7,9,10],broken:1,found:[10,9,4],"throw":5,earlier:7,src:[10,9,6,7,11],stone:4,central:[3,5,10],acm:[8,6,1,11],wolf:9,industri:[3,5,12],mytempl:6,effici:[5,10],terminolog:9,somescript:6,multinod:5,puppetmast:3,your:[0,1,3,6,5,4,7,8,9,10,11,12],charli:6,stare:4,log:[4,10,5,6,7],area:[],aren:5,privileged_us:[],start:[0,1,2,3,5,6,7,9,11],interfac:[9,5],low:6,lot:[3,1,4,10,11,12],ipv6:6,bundl:1,vpc_destination_vari:9,congratul:0,strawberri:2,dirti:[0,6],possibl:[1,4,7,8,9,10,11],"default":[0,3,5,6,8,9,10,11],ansible_fact:4,stacktrac:4,connect:[0,5,10,3],tasti:2,uid:6,creat:[0,3,5,6,7,9,10,11],certain:[10,5,6,7],deep:7,strongli:[5,1],deferenc:[],file:[0,1,2,3,6,4,7,8,9,10,11],my_custom_fact_can_be_used_now:10,again:[9,5,4,7],googl:[0,1,2,3,4,5,6,7,8,9,10,11,12],compel:[],event:[4,5,6,7],valid:4,you:[0,1,2,3,4,5,6,7,8,9,10,11,12],external_var:10,poor:4,sequenc:3,symbol:6,signficantli:0,briefli:7,"60k":[3,5],postgresql_us:6,directori:[1,2,6,4,7,10,11],invest:5,descript:[6,1,7],chown:6,potenti:10,appl:2,cpu:6,all:[0,1,2,3,4,5,6,7,8,9,10,11,12],forget:[10,11],selinux:[6,7],lack:[],month:0,abil:[5,7],follow:[0,5,6,8,9,10,11],alt:[],children:8,nors:[],articl:3,program:[3,2,6,5,4,7,11],mcollect:[],arbitari:2,introduc:3,liter:6,tag_name_redi:9,"1pm":3,fals:[10,2],faq:[3,5],failur:[9,5,4,7],veri:[0,1,3,5,6,7,9,10,11],condition:7,database_serv:8,list:[0,1,2,3,4,5,6,7,8,9,10,11,12],pbx:12,sane:5,stderr:4,small:[9,3,5,10,2],testuser2:10,testuser1:10,enterpris:[0,12],zero:[4,7],design:[3,5,11,8],pass:[0,6,4,7,9,10,11],further:[5,10,2],ec2_spot_instance_request_id:9,what:[0,1,2,3,4,5,6,7,9,10,12],sub:[],section:[0,1,5,7,8,10,11],abl:[3,10,1],delet:[6,7,11],abbrevi:2,ec2_state_reason:9,method:9,movement:3,hasn:5,full:[10,6,7],hash:[8,10,9,4,2],shouldn:[5,10],first_available_fil:10,strong:3,modifi:[9,4],valu:[2,6,4,7,9,10,11,12],search:12,ahead:[0,7],likin:5,memcach:[10,7],prior:10,amount:9,pick:[5,11],action:[10,9,6,7],via:[0,9,10,3],shorthand:[10,4],factnam:10,ec2_state_cod:9,managememnt:[],href:[],select:[1,6,4,7,8,10],distinct:[],stdout:9,two:[3,9,6,7,8],rhel:0,demo:11,taken:[5,7],kick:[3,10,11],more:[0,1,3,5,6,7,8,9,10,11],flat:7,door:5,hundr:12,flag:[0,7],particular:[6,7,8,9,10,11],known:6,compani:[5,12],cach:[9,6],none:[0,9,6],pkgbuild:0,hous:[],dev:[5,6],remain:[],learn:[0,1,2,3,5,4,7,8,10],prompt:[10,7,11],yamllint:2,moduledev:[],templat:[1,6,5,4,7,9,10,11],minimum:[10,4,7],explor:[0,9],cygat:12,cours:[5,10,1],newlin:[],secur:[9,3,10,5,6],rather:[5,10],anoth:[3,1,2,5,6,7,10,11],simpl:[3,1,2,5,7,9,10,11],distro:9,resourc:[10,5,6,7],referenc:[8,7],variant:0,ff0000:4,neccesssari:[],args_data:4,associ:[9,2],"short":[0,5,10],django:6,caus:0,help:[0,1,2,3,4,5,6,7,8,9,10,11],xmpp:5,mission:3,uvh:0,through:[0,6,11,3],hierarchi:[],hell:3,suffer:5,paramet:[4,10,6,7],style:[4,10,6],psycopg2:6,cowsai:[10,7],pend:[],rapidli:[9,10],might:[8,10,9,4,7],wouldn:[9,5],good:[0,3,5,4,7,9,10],"return":[6,5,4,7,9,10],food:2,framework:[9,3,5],botnet:[3,5],odin:[],neccessari:[10,6],instruct:[0,5],authent:6,mysteri:10,easili:[0,3,5,9,10,11],achiev:4,fulli:[0,6],only_if:[10,7],ansible_kernel:6,subsystem:[3,5,6],harm:[],mental:5,hard:5,idea:[0,1,2,3,4,5,6,7,8,9,10,11],crontab:10,realli:[3,2,6,5,4,7],expect:[9,10,7],variablenam:[],beyond:[10,12],orient:7,hostnam:[8,10,9,6,7],safeti:[],bubbl:[10,6,7],print:[9,4],yaml_to_ini:8,qualifi:6,postgr:[6,7],proxi:[8,10],advanc:[0,1,3,5,7,9,10],pub:11,reason:[3,5,4,7,9,10],base:[3,10,5,6,1],believ:5,ask:[0,7,11],bash:[0,5,4,11,3],basi:7,pyyaml:0,sytem:5,launch:[10,7],drupal:12,omit:1,ansible_system:6,assign:[8,9,10,1],feed:[],sdwippefq74nppvuelhpkkaiojjnn1zuhfol:6,notifi:[11,5,4,1,7],obviou:[],feel:[9,10,2],exchang:10,number:[3,10,5,6,8],placehold:[10,7],done:[0,1,5,6,8,10],least:1,blank:6,stabl:0,differ:[0,1,3,5,6,7,8,9,10,11],list_vm:6,guest:6,script:[3,1,5,4,8,9,10,11],interact:[9,11],construct:[9,5,10,1,7],camelot:10,make_databas:6,statement:[4,7],banana:[],store:[8,9,6,12],option:[0,1,6,5,4,7,8,9,10,11],part:[3,10,5,6],ec2_key_nam:9,consult:12,reinstal:[],jump:[0,3],kind:[5,4],grep:[],remot:[0,10,6,7,11],remov:[8,10,6,11],reus:[5,10,7],architect:3,str:4,jvmdhw:6,toward:10,cleaner:10,comput:[9,5],well:[0,1,3,6,5,4,7,8,9,10,11],group_var:8,packag:[0,1,6,5,4,7,10,11],imagin:[],built:[9,0,5,10,11],equival:[10,6],self:[5,4],also:[0,1,2,3,4,5,6,7,8,9,10,11,12],build:[9,0,4,5,6],brace:11,distribut:[0,5,1,12,3],passwd:6,previou:10,reach:[3,1],most:[0,1,2,3,5,6,7,9,11],plai:[3,10,7],plan:5,alpha:6,bug:[0,3],cover:[9,5,10,11],roughli:0,clojur:4,clean:5,pars:[5,4],usual:[7,11],awesom:[3,6,7,12],commerc:12,ansible_processor_count:6,alphanumer:9,devolv:[],mpd_ring:[],particularli:[9,10,7],fine:[0,4,1],find:[9,4,7],impact:[5,12],firewal:[3,10],nosql:12,pretti:[9,5,10],solut:[5,12],security_group_default:9,olympu:[],yml:[10,1,7],remedi:10,long_running_oper:11,financ:3,nativ:[0,10],basho:12,him:12,restart:[1,5,6,7,8,11],mdehaan:[6,11],dollar_sign_syntax:[],common:[10,9,4,1,2],wrote:4,set:[0,1,3,6,5,4,7,8,9,10,11],dump:4,creator:12,security_group_webserv:9,see:[0,1,2,6,5,4,7,8,9,10,11,12],sec:10,arg:4,disadvantag:3,setsebool:7,expert:[5,12],someth:[1,5,4,7,9,10],restructur:7,hold:10,experi:5,altern:[10,11],solo:[],numer:[],aserv:0,solv:[],tag_aws_cloudformation_log:9,foo_port:[],popul:9,both:[0,5,4,9,10,11],last:[0,3],delimit:6,boto:9,thor:[],uncrypt:7,context:6,whole:5,load:[],simpli:[9,6,1,7],point:[9,10,1],etc_other_conf_oth:1,header:8,shutdown:[10,6],suppli:6,asdf:[],backend:[],unsuccess:7,devic:6,due:[0,5,4],empti:9,ran:3,host4:9,escape_pod:8,strategi:5,wish:[0,1,2,7,9,10],fire:[3,5,10],imag:[],convert:[9,4],append:6,gap:5,understand:[3,4,7],func:[3,5],educ:4,look:[3,6,4,7,8,9,10,11],straight:11,batch:5,"while":[3,5,10,1,7],unifi:[],match:[4,7],behavior:[10,6,12],error:[4,10,5,6],loop:[10,7],pack:9,pragmat:[],motd:[9,7,11],max_client:7,readm:4,jpg:[],itself:[9,5],cento:[0,10,6],fedora:[0,12],minim:[0,4],belong:9,shorter:4,higher:10,optim:1,painless:3,moment:9,temporari:[],user:[0,1,3,5,6,7,9,10,11],yesterdai:3,createhom:6,lower:[3,5,4],task:[3,1,5,7,10,11],older:6,entri:3,spent:5,expens:9,endfor:10,spend:5,explan:4,ec2_monitor:9,amp:[8,9],love:[],centos6:9,async_wrapp:4,appli:[8,10,6,7],input:[10,4],bin:[0,6,4,7,8,9,10,11],march:4,format:[3,2,5,6,7,8,9,11],judgement:6,nginx:6,game:3,quest:10,bit:[10,5,6,7],ec2_ownerid:9,xaby9ud5brbfvkedu:6,name_of_fact:[],knock:5,capital_of_assyria:[],signal:5,"98dbcgqw5hme89cjgzro5ktkc5yu":6,manifest:5,"boolean":2,popular:[3,12],postgresql_db:6,often:[9,10,5,6,1],simplifi:11,creation:11,some:[0,1,3,6,5,4,7,8,9,10,11,12],back:[0,5,10,7,11],scale:[5,10],ec2_tag_kei:9,per:[9,10],pem:0,larg:[5,10],either:[9,10,5,6],machin:[0,1,3,6,5,4,7,11],run:[0,2,3,6,5,4,7,8,9,10,11],lose:11,step:[3,10,5,6,7],squeez:6,meantim:5,major:9,impor:[],ec2_launch_tim:9,othervar:[],ansible_eth0:[10,6],block:10,fulfil:7,steelhous:12,primarili:6,unreach:7,intl:[],within:[9,8,5,10,7],contributor:12,chang:[0,1,3,6,4,7,8,10,11],bserver:0,rxp33wfphjwjwvhatfci1nrbaudqi:6,ansible_python_vers:6,group_nam:10,question:[0,1,2,3,4,5,6,7,8,9,10,11],fast:[0,5,3],custom:[3,5,10],includ:[1,6,4,7,8,9,10,11,12],suit:[5,7],forward:3,datastructur:9,foosbal:[8,6],lint:2,link:[4,6],newer:0,line:[0,2,3,6,5,4,7,8,9,10,11],info:[9,6,11],concaten:6,caller:6,planet:3,schmooz:12,ec2_dns_nam:9,highlight:[],similar:[10,9,6,11],curv:[3,5],constant:1,parser:4,doesn:[3,9,10,11,2],repres:[9,7,2],chat:[0,2,3,6,5,4,8,9,11,12],bracket:8,coder:5,crypt:[6,11],chgrp:[],likes_emac:2,transport:[0,5,3],peopl:[3,10,12],nice:[3,7],draw:3,asciidoc:[],meaning:[],far:[11,2],hello:0,jupit:[],pluggabl:[3,5],code:[0,1,3,6,5,4,7,9,10,11,12],async_statu:11,privat:[0,9,10],sensit:10,elsewher:11,friendli:3,send:10,autostart:6,sens:[0,9,7],fatal:7,blindingli:[],sent:4,sensic:3,logtre:6,signfic:4,asdf1234l:6,implicitli:5,ec2_root_device_typ:9,relev:[10,5,4],recip:0,magic:[10,5,4,7],id_rsa:[0,11],michael:[3,12],fewer:10,"try":[0,3,5,4,7,9,10],p2xkxaczh6fc:6,pleas:[9,0,5],malici:5,impli:6,natur:[],cron:[5,10],download:0,ansible_python_interpret:8,folk:[0,4,12],index:9,turn:[3,10,5,4],compar:5,access:[0,3,6,9,10,11],experiment:10,can:[0,1,2,3,4,5,6,7,8,9,10,11],chose:[],let:[0,2,3,6,4,7,9,11],ubuntu:[9,6],becom:10,sinc:[9,6,1,11],great:[3,1,5,4,7,10,12],convers:8,hypervisor:6,technolog:3,"_some_str":7,later:[0,1,6,4,7,8,10,11],typic:[5,7,11],maker:12,control:[3,1,6,5,4,7,8,9,10,11],heart:9,win:[],app:[5,10],apt:[10,6,1,11],api:[9,3,4,5,6],cloud:5,fed:[6,7],from:[0,1,2,3,4,5,6,7,8,9,10,11,12],usa:8,commun:[9,3,5,7],"8b3satjxmpgbfbueebwubk5ejl":6,doubl:11,upgrad:[6,7,11],next:[0,7,8],few:9,usr:[0,6,4,7,8,9,11],sort:[5,6,12],dbserver:[8,10,1],impress:10,sbin:[10,6,7,11],trail:1,train:5,login_password:6,ansible_nocolor:10,starter:[4,7],account:[0,6,7,11],retriev:10,tunnel:3,alia:8,openjdk:6,alic:7,ec2_ramdisk:9,fetch:[10,6],proof:4,employe:[5,2],tar:0,process:[3,5,6,7,11],lock:[5,10],sudo:[0,3,5,6,7,11],high:[4,11],knows_oop:2,tag:[0,10,9,6],tab:7,tarbal:[],onlin:2,surfac:[3,5],lame:2,"_assembl":[],lepton:4,subdirectori:6,srv:[10,9,6,7,11],panic:10,stock:[],express:[3,2,4,7,9,10],gentoo:0,watch:3,attent:11,tier:3,philosophi:3,ansible_host:0,drop:4,orchestr:[3,5,7],correspond:6,element:[9,10],issu:[0,5,1,3],allow:[0,1,5,4,9,10,11],aws_secret_access_kei:9,move:[6,7],elit:2,comma:[9,6],release_vers:10,bunch:[],somecommand:7,taboot:5,infrastructur:[0,1,3,5,7,8],anyon:5,ansible_product_uuid:6,dag:12,greater:8,python:[0,2,3,6,5,4,8,9,10,11],auto:[9,4],dai:[3,5],devel:[],mention:7,rubygem:11,instead:[0,1,5,6,10,11],strive:4,multiprocess:5,anyth:[9,4,5,6],edit:[0,9,6],slide:3,mode:[0,5,6,7,10,11],grok:3,bump:0,usernam:[],ec2:[3,9],our:[3,12,11,2],patch:5,pitfal:4,special:9,out:[3,1,6,5,4,7,8,9,10,11],variabl:[0,1,3,6,5,4,7,8,9,10,11],reboot:[6,7,11],security_group_:9,rel:[8,6,1],"_default":6,leverag:0,ref:[],login_host:6,red:[9,3,5,4,11],clarifi:[],insid:[9,10],unpars:4,ansible_machin:6,dictionari:[10,9,4,2],releas:[0,1,5,6,7,10],indent:2,could:[9,10,5,4,7],put:[0,1,6,7,8,10,11],fqdn:10,keep:[0,1,4,8,9,10],outsid:9,adrian:5,retain:5,stuck:7,localdomain:6,softwar:[3,1,5,6,9,10,11],qualiti:4,scene:6,echo:[0,9,10,11],date:[0,4],puppet:[9,3,5,6],submit:5,owner:[6,11],prioriti:6,ansible_lo:6,perfectli:0,mkdir:11,system:[0,1,3,6,5,4,7,8,9,10,11],messag:[9,4,5,6],attack:[3,5],pattern_goes_her:8,termin:11,"final":6,ipv4:[10,6],shell:[3,1,6,4,7,9,11],ec2_descript:9,hassl:3,rst:[],nobodi:4,dive:7,richer:5,intervert:10,charact:[9,2],sweden:12,favorit:10,deprec:8,sysadmin:5,ansible_processor_cor:6,have:[0,1,2,3,4,5,6,7,8,9,10,11,12],close:[3,4],need:[0,1,2,3,4,5,6,7,8,9,10,11],cfengin:5,border:[],paramiko:[0,5],mix:[8,10,7],baisc:[],tag_name_web:9,which:[0,1,2,3,5,6,7,8,9,10],datacent:[8,1],with_item:10,divers:3,singl:[1,5,6,7,9,10,11],ec2_security_group_nam:9,unless:[10,5,6,7],deploy:[11,0,5,7,3],who:[3,9,6,7,12],discov:[3,10,7],deploi:[3,5,6,7,10,11],comparison:[3,5],why:[5,1],serol:6,urg:1,inventory_hostname_short:10,gather:[10,5,6,7],request:6,self_destruct_countdown:8,snapshot:6,fact:[3,6,5,4,7,10,11],text:[],verbos:[4,6,7],bring:[5,7],playbook:[0,1,2,3,4,5,6,7,8,9,10,11],trivial:[0,9,6,3],anywai:8,varnam:7,redirect:11,locat:[8,10,6,7],tire:5,should:[0,1,2,3,4,5,6,7,9,12],ansible_swapfree_mb:6,won:[7,11],ec2_root_device_nam:9,"5px":[],local:[10,5,6],contribut:[0,11,12,3],pull:[9,5,10],familiar:9,autom:[5,1,11],increas:10,ansible_ssh_port:[],enabl:6,organ:[6,1,12],sha:6,stuff:[3,11],integr:[3,9,6],contain:[3,1,5,4,7,10],ymwaaaebalnasqn10tngsrde5arbsw8ctojqlyybciqgpytzw8zenerfxt7ij3fw3jh:6,view:3,legaci:6,cthy5bws9kmyjmeo0kfumh8hy4maxdokhq7dhbpircjs5jptogxirezjba67r6:6,nodeinfo:6,skynet:6,gmail:[],statu:[4,10,6,11],extend:[3,5,10,1,7],pattern:[0,1,3,7,8,9,10,11],state:[6,5,4,7,8,10,11],viper:10,progress:[],email:[3,1,12],kei:[0,2,3,6,5,4,7,9,10,11,12],homedir:6,tempfil:7,job:[11,2],entir:[3,1,5,4,7,8,9,10],homebrew:0,"2pm":3,addit:[6,4,7,8,9,10],southeast:8,admin:[3,9],goal:[7,11],equal:[5,4,11],ohai_foo:11,etc:[0,3,5,6,7,8,9,10,11],instanc:[8,9,10,7],comment:[4,6,1],english:6,guidelin:4,chmod:[4,9,6,7],distil:5,rpm:[0,4],mailto:[],quit:[0,4,1],evalu:[10,11],platform:[10,5,6,12],addition:[10,7],decent:[],compos:7,compon:[],json:[2,6,5,4,9,10,11],besid:4,treat:[5,4,1],ungroup:[],immedi:[10,6,7],"2677m":6,yournam:[7,11],capistrano:5,global_var:1,vmware:6,togeth:[6,1],ador:3,atlanta:[8,9,11],present:[3,10,6],authorized_kei:[0,6],multi:[3,5,7],plain:3,align:[],ansible_virtualization_typ:6,defin:[10,9,6,7],ultra:3,layer:[9,5],almost:[5,6],virt:6,site:[5,10,1],lightweight:9,revis:0,michaeldehaan:[],surprisingli:[],halt:1,welcom:[3,9],cross:5,member:[6,2],handl:[3,4,10,6],inc:6,ansibl:[0,1,2,3,4,5,6,7,8,9,10,11,12],difficult:5,http:[9,6],structur:[10,6],denot:8,effect:[],libvirt:6,php:11,distutil:0,audit:[3,10,1],off:[3,5,10,1],center:[],seth:5,exampl:[0,1,2,6,5,4,7,8,9,10,11],command:[0,3,6,5,4,7,8,9,10,11],filesystem:10,undefin:6,latest:[0,6,7,11],lest:3,tunabl:1,paus:6,less:[0,5,3],additon:0,starbuck:10,heavili:5,skill:2,simultan:11,web:[9,5,11,12],host5:9,cleanup:10,host3:[8,9],host2:[8,9],host1:[8,9],smart:11,knob:1,branch:[0,6],xmlrpc:9,dest:[10,9,6,7,11],piec:9,know:[2,6,5,4,8,9,10],nor:6,password:[0,5,6,7,10,11],recurs:[6,11],python3:0,python2:0,loss:5,motorola:3,like:[0,1,2,3,4,5,6,7,8,9,10,11],success:[4,6,7],amazonaw:9,necessari:11,cellspac:[],async:10,architectur:[3,5,10],page:[0,5,11,2,3],ansible_hostnam:[10,6,11],shed:5,revers:[3,6],captur:4,twitter:[],linux:[0,5,6,12,3],"export":[0,9],home:6,librari:[4,6,1,2],tmp:[9,6,7,11],lead:[5,12],avoid:[11,0,6,7,3],thank:5,overlap:[],update_cach:6,encourag:[5,10,1,7],slight:9,importerror:4,usag:[1,6,5,4,8,10,11],symlink:[0,6],vhost:7,host:[0,1,3,6,5,4,7,8,9,10,11,12],although:4,simpler:[5,11],about:[0,1,2,3,4,5,6,7,9,10,11],actual:[4,10,5,6],disabl:7,ntp_server:[8,11],own:[1,6,5,4,7,9,10],automat:[4,9,6,1,11],ec2_public_dns_nam:9,some_serv:8,hang:7,merg:[5,4],transfer:[4,6,7,11],intention:[],trigger:[5,6,7],"8agepocvjdhyzr7pahfxzgudgktgrl2qzryukcmwo1czbmbhci5fzimvths9":6,replac:[],"var":[8,10,6,1,7],individu:[8,1],simplejson:[0,4,6],subscrib:[],nnwugi:[],continu:4,ec2_plac:9,eas:5,eat:11,count:7,succe:4,made:[3,6,5,4,7,8,10],whether:[9,4,5,6],arg2:6,writeabl:7,asynchron:[10,7],record:2,below:[0,9,6,7],limit:[10,11],otherwis:[4,10,6],problem:[3,5,2],epel:0,pin:6,is_favcolor_blu:10,filenam:10,ec2_tag_nam:9,implement:[9,5,4],ini:[8,9],ing:6,probabl:[0,5,4,1,7],boot:6,detail:[9,7,11],virtual:[6,7],capabilit:[],other:[0,1,2,3,4,5,6,7,8,9,10,11,12],futur:[10,4,1],rememb:[7,11],varieti:[9,5,4],riak:12,ec2_external_inventori:9,repeat:[10,1],"class":[9,7],debian:[0,10,6],stai:10,sphinx:[],scientif:0,reliabl:5,rule:[10,1,11],portion:[8,6],emerg:3,name_of_host:[],"8btwaryr":6},objtypes:{},titles:["Getting Started","Best Practices","YAML Syntax","Introducing Ansible","Module Development","FAQ","Ansible Modules","Playbooks","Inventory & Patterns","API & Integrations","Advanced Playbooks","Command Line","Who Uses Ansible"],objnames:{},filenames:["gettingstarted","bestpractices","YAMLSyntax","index","moduledev","faq","modules","playbooks","patterns","api","playbooks2","examples","who_uses_ansible"]}) \ No newline at end of file diff --git a/who_uses_ansible.html b/who_uses_ansible.html index 2f1a36cba2..a82f3a931f 100644 --- a/who_uses_ansible.html +++ b/who_uses_ansible.html @@ -257,7 +257,7 @@ s.parentNode.insertBefore(ga, s);

© Copyright 2012 Michael DeHaan.
- Last updated on Jul 30, 2012.
+ Last updated on Jul 31, 2012.