Commit b12eeec8 by Michael DeHaan

Rebuild

parent f542e10c
...@@ -187,15 +187,25 @@ s.parentNode.insertBefore(ga, s); ...@@ -187,15 +187,25 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="api-integrations"> <div class="section" id="api-integrations">
<h1>API &amp; Integrations<a class="headerlink" href="#api-integrations" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#table-of-contents">API &amp; Integrations</a><a class="headerlink" href="#api-integrations" title="Permalink to this headline"></a></h1>
<p>There are two major ways to use Ansible from an API perspective. The primary way <p>There are two major ways to use Ansible from an API perspective. The primary way
is to use the Ansible python API to control nodes. Ansible is written in its own is to use the Ansible python API to control nodes. Ansible is written in its own
API so you have a considerable amount of power there.</p> API so you have a considerable amount of power there.</p>
<p>Also covered here, Ansible&#8217;s <p>Also covered here, Ansible&#8217;s
list of hosts, groups, and variables assigned to each host can be driven from list of hosts, groups, and variables assigned to each host can be driven from
external sources. We&#8217;ll start with the Python API.</p> external sources. We&#8217;ll start with the Python API.</p>
<div class="contents topic" id="table-of-contents">
<p class="topic-title first"><cite>Table of contents</cite></p>
<ul class="simple">
<li><a class="reference internal" href="#api-integrations" id="id2">API &amp; Integrations</a><ul>
<li><a class="reference internal" href="#python-api" id="id3">Python API</a></li>
<li><a class="reference internal" href="#external-inventory" id="id4">External Inventory</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="python-api"> <div class="section" id="python-api">
<h2>Python API<a class="headerlink" href="#python-api" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">Python API</a><a class="headerlink" href="#python-api" title="Permalink to this headline"></a></h2>
<p>The Python API is very powerful, and is how the ansible CLI and ansible-playbook <p>The Python API is very powerful, and is how the ansible CLI and ansible-playbook
are implemented.</p> are implemented.</p>
<p>It&#8217;s pretty simple:</p> <p>It&#8217;s pretty simple:</p>
...@@ -263,7 +273,7 @@ command line tools <tt class="docutils literal"><span class="pre">ansible</span> ...@@ -263,7 +273,7 @@ command line tools <tt class="docutils literal"><span class="pre">ansible</span>
</div> </div>
</div> </div>
<div class="section" id="external-inventory"> <div class="section" id="external-inventory">
<h2>External Inventory<a class="headerlink" href="#external-inventory" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">External Inventory</a><a class="headerlink" href="#external-inventory" title="Permalink to this headline"></a></h2>
<p>Often a user of a configuration management system will want to keep inventory <p>Often a user of a configuration management system will want to keep inventory
in a different system. Frequent examples include LDAP, <a class="reference external" href="http://cobbler.github.com">Cobbler</a>, in a different system. Frequent examples include LDAP, <a class="reference external" href="http://cobbler.github.com">Cobbler</a>,
or a piece of expensive enterprisey CMDB software. Ansible easily supports all or a piece of expensive enterprisey CMDB software. Ansible easily supports all
...@@ -422,9 +432,9 @@ e.g. ...@@ -422,9 +432,9 @@ e.g.
</ul> </ul>
<p>Both <tt class="docutils literal"><span class="pre">ec2_security_group_ids</span></tt> and <tt class="docutils literal"><span class="pre">ec2_security_group_names</span></tt> are comma-separated lists of all security groups. Each EC2 tag is a variable in the format <tt class="docutils literal"><span class="pre">ec2_tag_KEY</span></tt>.</p> <p>Both <tt class="docutils literal"><span class="pre">ec2_security_group_ids</span></tt> and <tt class="docutils literal"><span class="pre">ec2_security_group_names</span></tt> are comma-separated lists of all security groups. Each EC2 tag is a variable in the format <tt class="docutils literal"><span class="pre">ec2_tag_KEY</span></tt>.</p>
<p>To see the complete list of variables available for an instance, run the script by itself:</p> <p>To see the complete list of variables available for an instance, run the script by itself:</p>
<blockquote> <div class="highlight-python"><pre>cd examples/scripts
<div>cd examples/scripts ./ec2_external_inventory.py --host ec2-12-12-12-12.compute-1.amazonaws.com</pre>
./ec2_external_inventory.py &#8211;host ec2-12-12-12-12.compute-1.amazonaws.com</div></blockquote> </div>
<div class="admonition-see-also admonition seealso"> <div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p> <p class="first admonition-title">See also</p>
<dl class="last docutils"> <dl class="last docutils">
......
...@@ -182,24 +182,37 @@ s.parentNode.insertBefore(ga, s); ...@@ -182,24 +182,37 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="best-practices"> <div class="section" id="best-practices">
<h1>Best Practices<a class="headerlink" href="#best-practices" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Best Practices</a><a class="headerlink" href="#best-practices" title="Permalink to this headline"></a></h1>
<p>Here are some tips for making the most of Ansible.</p> <p>Here are some tips for making the most of Ansible.</p>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#best-practices" id="id1">Best Practices</a><ul>
<li><a class="reference internal" href="#always-mention-state" id="id2">Always Mention State</a></li>
<li><a class="reference internal" href="#group-by-roles" id="id3">Group By Roles</a></li>
<li><a class="reference internal" href="#directory-organization" id="id4">Directory Organization</a></li>
<li><a class="reference internal" href="#bundling-ansible-modules-with-playbooks" id="id5">Bundling Ansible Modules With Playbooks</a></li>
<li><a class="reference internal" href="#miscellaneous-tips" id="id6">Miscellaneous Tips</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="always-mention-state"> <div class="section" id="always-mention-state">
<h2>Always Mention State<a class="headerlink" href="#always-mention-state" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Always Mention State</a><a class="headerlink" href="#always-mention-state" title="Permalink to this headline"></a></h2>
<p>The &#8216;state&#8217; parameter is optional to a lot of modules. Whether <p>The &#8216;state&#8217; parameter is optional to a lot of modules. Whether
&#8216;state=present&#8217; or &#8216;state=absent&#8217;, it&#8217;s always best to leave that &#8216;state=present&#8217; or &#8216;state=absent&#8217;, it&#8217;s always best to leave that
parameter in your playbooks to make it clear, especially as some parameter in your playbooks to make it clear, especially as some
modules support additional states.</p> modules support additional states.</p>
</div> </div>
<div class="section" id="group-by-roles"> <div class="section" id="group-by-roles">
<h2>Group By Roles<a class="headerlink" href="#group-by-roles" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Group By Roles</a><a class="headerlink" href="#group-by-roles" title="Permalink to this headline"></a></h2>
<p>A system can be in multiple groups. See <a class="reference internal" href="patterns.html"><em>Inventory &amp; Patterns</em></a>. Having groups named after things like <p>A system can be in multiple groups. See <a class="reference internal" href="patterns.html"><em>Inventory &amp; Patterns</em></a>. Having groups named after things like
<em>webservers</em> and <em>dbservers</em> is repeated in the examples because it&#8217;s a very powerful concept.</p> <em>webservers</em> and <em>dbservers</em> is repeated in the examples because it&#8217;s a very powerful concept.</p>
<p>This allows playbooks to target machines based on role, as well as to assign role specific variables <p>This allows playbooks to target machines based on role, as well as to assign role specific variables
using the group variable system.</p> using the group variable system.</p>
</div> </div>
<div class="section" id="directory-organization"> <div class="section" id="directory-organization">
<h2>Directory Organization<a class="headerlink" href="#directory-organization" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Directory Organization</a><a class="headerlink" href="#directory-organization" title="Permalink to this headline"></a></h2>
<p>Playbooks should be organized like this:</p> <p>Playbooks should be organized like this:</p>
<div class="highlight-python"><pre># root of source control repository <div class="highlight-python"><pre># root of source control repository
├── acme/ ├── acme/
...@@ -240,14 +253,9 @@ these sections do, see <a class="reference internal" href="playbooks.html"><em>P ...@@ -240,14 +253,9 @@ these sections do, see <a class="reference internal" href="playbooks.html"><em>P
are contained in &#8216;acme/handlers/main.yml&#8217;. As a reminder, handlers are mostly just used to notify services to restart are contained in &#8216;acme/handlers/main.yml&#8217;. As a reminder, handlers are mostly just used to notify services to restart
when things change, and these are described in <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a>.</p> when things change, and these are described in <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a>.</p>
<p>Including more than one setup file or more than one handlers file is of course legal.</p> <p>Including more than one setup file or more than one handlers file is of course legal.</p>
<p>Having playbooks be able to include other playbooks is coming in a
future release. See <a class="reference external" href="https://github.com/ansible/ansible/issues/538">Issue 538</a>.</p>
<p>Until then, to manage your entire site, simply execute all of your playbooks together, in the order desired.
You don&#8217;t have to do this though. It&#8217;s fine to select sections of your infrastructure to manage at a single time.
You may wish to construct simple shell scripts to wrap calls to ansible-playbook.</p>
</div> </div>
<div class="section" id="bundling-ansible-modules-with-playbooks"> <div class="section" id="bundling-ansible-modules-with-playbooks">
<h2>Bundling Ansible Modules With Playbooks<a class="headerlink" href="#bundling-ansible-modules-with-playbooks" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Bundling Ansible Modules With Playbooks</a><a class="headerlink" href="#bundling-ansible-modules-with-playbooks" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.5.</span></p> <span class="versionmodified">New in version 0.5.</span></p>
<p>If a playbook has a &#8221;./library&#8221; directory relative to it&#8217;s YAML file, <p>If a playbook has a &#8221;./library&#8221; directory relative to it&#8217;s YAML file,
...@@ -256,7 +264,7 @@ automatically be in the ansible module path. This is a great way to ...@@ -256,7 +264,7 @@ automatically be in the ansible module path. This is a great way to
keep modules that go with a playbook together.</p> keep modules that go with a playbook together.</p>
</div> </div>
<div class="section" id="miscellaneous-tips"> <div class="section" id="miscellaneous-tips">
<h2>Miscellaneous Tips<a class="headerlink" href="#miscellaneous-tips" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Miscellaneous Tips</a><a class="headerlink" href="#miscellaneous-tips" title="Permalink to this headline"></a></h2>
<p>When you can do something simply, do something simply. Do not reach <p>When you can do something simply, do something simply. Do not reach
to use every feature of Ansible together, all at once. Use what works to use every feature of Ansible together, all at once. Use what works
for you. For example, you should probably not need &#8216;vars&#8217;, for you. For example, you should probably not need &#8216;vars&#8217;,
......
...@@ -186,14 +186,31 @@ s.parentNode.insertBefore(ga, s); ...@@ -186,14 +186,31 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="command-line-examples-and-next-steps"> <div class="section" id="command-line-examples-and-next-steps">
<h1>Command Line Examples And Next Steps<a class="headerlink" href="#command-line-examples-and-next-steps" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Command Line Examples And Next Steps</a><a class="headerlink" href="#command-line-examples-and-next-steps" title="Permalink to this headline"></a></h1>
<p>The following examples show how to use <cite>/usr/bin/ansible</cite> for running <p>The following examples show how to use <cite>/usr/bin/ansible</cite> for running
ad hoc tasks. Start here.</p> ad hoc tasks. Start here.</p>
<p>For configuration management and deployments, you&#8217;ll want to pick up on <p>For configuration management and deployments, you&#8217;ll want to pick up on
using <cite>/usr/bin/ansible-playbook</cite> &#8211; the concepts port over directly. using <cite>/usr/bin/ansible-playbook</cite> &#8211; the concepts port over directly.
(See <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a> for more information about those)</p> (See <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a> for more information about those)</p>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#command-line-examples-and-next-steps" id="id1">Command Line Examples And Next Steps</a><ul>
<li><a class="reference internal" href="#parallelism-and-shell-commands" id="id2">Parallelism and Shell Commands</a></li>
<li><a class="reference internal" href="#file-transfer" id="id3">File Transfer</a></li>
<li><a class="reference internal" href="#managing-packages" id="id4">Managing Packages</a></li>
<li><a class="reference internal" href="#users-and-groups" id="id5">Users and Groups</a></li>
<li><a class="reference internal" href="#deploying-from-source-control" id="id6">Deploying From Source Control</a></li>
<li><a class="reference internal" href="#managing-services" id="id7">Managing Services</a></li>
<li><a class="reference internal" href="#time-limited-background-operations" id="id8">Time Limited Background Operations</a></li>
<li><a class="reference internal" href="#limiting-selected-hosts" id="id9">Limiting Selected Hosts</a></li>
<li><a class="reference internal" href="#configuration-defaults" id="id10">Configuration &amp; Defaults</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="parallelism-and-shell-commands"> <div class="section" id="parallelism-and-shell-commands">
<h2>Parallelism and Shell Commands<a class="headerlink" href="#parallelism-and-shell-commands" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Parallelism and Shell Commands</a><a class="headerlink" href="#parallelism-and-shell-commands" title="Permalink to this headline"></a></h2>
<p>Let&#8217;s use ansible&#8217;s command line tool to reboot all web servers in Atlanta, 10 at a time. First, let&#8217;s <p>Let&#8217;s use ansible&#8217;s command line tool to reboot all web servers in Atlanta, 10 at a time. First, let&#8217;s
set up SSH-agent so it can remember our credentials:</p> set up SSH-agent so it can remember our credentials:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ssh-agent bash <div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ssh-agent bash
...@@ -257,7 +274,7 @@ get it there. This is commonly referred to as &#8216;idempotence&#8217;, and is ...@@ -257,7 +274,7 @@ get it there. This is commonly referred to as &#8216;idempotence&#8217;, and is
However, we also recognize that running <em>ad hoc</em> commands is equally important, so Ansible easily supports both.</p> However, we also recognize that running <em>ad hoc</em> commands is equally important, so Ansible easily supports both.</p>
</div> </div>
<div class="section" id="file-transfer"> <div class="section" id="file-transfer">
<h2>File Transfer<a class="headerlink" href="#file-transfer" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">File Transfer</a><a class="headerlink" href="#file-transfer" title="Permalink to this headline"></a></h2>
<p>Here&#8217;s another use case for the <cite>/usr/bin/ansible</cite> command line. Ansible can SCP lots of files to multiple machines in parallel.</p> <p>Here&#8217;s another use case for the <cite>/usr/bin/ansible</cite> command line. Ansible can SCP lots of files to multiple machines in parallel.</p>
<p>To transfer a file directly to many different servers:</p> <p>To transfer a file directly to many different servers:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ansible atlanta -m copy -a <span class="s2">&quot;src=/etc/hosts dest=/tmp/hosts&quot;</span> <div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ansible atlanta -m copy -a <span class="s2">&quot;src=/etc/hosts dest=/tmp/hosts&quot;</span>
...@@ -281,7 +298,7 @@ same options can be passed directly to the <tt class="docutils literal"><span cl ...@@ -281,7 +298,7 @@ same options can be passed directly to the <tt class="docutils literal"><span cl
</div> </div>
</div> </div>
<div class="section" id="managing-packages"> <div class="section" id="managing-packages">
<h2>Managing Packages<a class="headerlink" href="#managing-packages" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Managing Packages</a><a class="headerlink" href="#managing-packages" title="Permalink to this headline"></a></h2>
<p>There are modules available for yum and apt. Here are some examples <p>There are modules available for yum and apt. Here are some examples
with <a class="reference internal" href="modules.html#yum"><em>yum</em></a>.</p> with <a class="reference internal" href="modules.html#yum"><em>yum</em></a>.</p>
<p>Ensure a package is installed, but don&#8217;t update it:</p> <p>Ensure a package is installed, but don&#8217;t update it:</p>
...@@ -305,7 +322,7 @@ for other packages for now using the command module or (better!) contribute a mo ...@@ -305,7 +322,7 @@ for other packages for now using the command module or (better!) contribute a mo
for other package managers. Stop by the mailing list for info/details.</p> for other package managers. Stop by the mailing list for info/details.</p>
</div> </div>
<div class="section" id="users-and-groups"> <div class="section" id="users-and-groups">
<h2>Users and Groups<a class="headerlink" href="#users-and-groups" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Users and Groups</a><a class="headerlink" href="#users-and-groups" title="Permalink to this headline"></a></h2>
<p>The <a class="reference internal" href="modules.html#user"><em>user</em></a> module allows easy creation and manipulation of <p>The <a class="reference internal" href="modules.html#user"><em>user</em></a> module allows easy creation and manipulation of
existing user accounts, as well as removal of user accounts that may existing user accounts, as well as removal of user accounts that may
exist:</p> exist:</p>
...@@ -318,7 +335,7 @@ exist:</p> ...@@ -318,7 +335,7 @@ exist:</p>
how to manipulate groups and group membership.</p> how to manipulate groups and group membership.</p>
</div> </div>
<div class="section" id="deploying-from-source-control"> <div class="section" id="deploying-from-source-control">
<h2>Deploying From Source Control<a class="headerlink" href="#deploying-from-source-control" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Deploying From Source Control</a><a class="headerlink" href="#deploying-from-source-control" title="Permalink to this headline"></a></h2>
<p>Deploy your webapp straight from git:</p> <p>Deploy your webapp straight from git:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ansible webservers -m git -a <span class="s2">&quot;repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD&quot;</span> <div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ansible webservers -m git -a <span class="s2">&quot;repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD&quot;</span>
</pre></div> </pre></div>
...@@ -329,7 +346,7 @@ deploying Perl/Python/PHP/Ruby directly from git and then restarting ...@@ -329,7 +346,7 @@ deploying Perl/Python/PHP/Ruby directly from git and then restarting
apache.</p> apache.</p>
</div> </div>
<div class="section" id="managing-services"> <div class="section" id="managing-services">
<h2>Managing Services<a class="headerlink" href="#managing-services" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Managing Services</a><a class="headerlink" href="#managing-services" title="Permalink to this headline"></a></h2>
<p>Ensure a service is started on all webservers:</p> <p>Ensure a service is started on all webservers:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ansible webservers -m service -a <span class="s2">&quot;name=httpd state=started&quot;</span> <div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>ansible webservers -m service -a <span class="s2">&quot;name=httpd state=started&quot;</span>
</pre></div> </pre></div>
...@@ -344,7 +361,7 @@ apache.</p> ...@@ -344,7 +361,7 @@ apache.</p>
</div> </div>
</div> </div>
<div class="section" id="time-limited-background-operations"> <div class="section" id="time-limited-background-operations">
<h2>Time Limited Background Operations<a class="headerlink" href="#time-limited-background-operations" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Time Limited Background Operations</a><a class="headerlink" href="#time-limited-background-operations" title="Permalink to this headline"></a></h2>
<p>Long running operations can be backgrounded, and their status can be <p>Long running operations can be backgrounded, and their status can be
checked on later. The same job ID is given to the same task on all checked on later. The same job ID is given to the same task on all
hosts, so you won&#8217;t lose track. If you kick hosts and don&#8217;t want hosts, so you won&#8217;t lose track. If you kick hosts and don&#8217;t want
...@@ -370,7 +387,7 @@ the remote nodes will be terminated.</p> ...@@ -370,7 +387,7 @@ the remote nodes will be terminated.</p>
shell commands or software upgrades only. Backgrounding the copy module does not do a background file transfer. <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a> also support polling, and have a simplified syntax for this.</p> shell commands or software upgrades only. Backgrounding the copy module does not do a background file transfer. <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a> also support polling, and have a simplified syntax for this.</p>
</div> </div>
<div class="section" id="limiting-selected-hosts"> <div class="section" id="limiting-selected-hosts">
<h2>Limiting Selected Hosts<a class="headerlink" href="#limiting-selected-hosts" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Limiting Selected Hosts</a><a class="headerlink" href="#limiting-selected-hosts" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>What hosts you select to manage can be additionally constrained by using the &#8216;&#8211;limit&#8217; parameter or <p>What hosts you select to manage can be additionally constrained by using the &#8216;&#8211;limit&#8217; parameter or
...@@ -394,7 +411,7 @@ what their names or IP addresses are).</p> ...@@ -394,7 +411,7 @@ what their names or IP addresses are).</p>
<p>Both of these methods can be used at the same time, and ranges can also be passed to the &#8211;limit parameter.</p> <p>Both of these methods can be used at the same time, and ranges can also be passed to the &#8211;limit parameter.</p>
</div> </div>
<div class="section" id="configuration-defaults"> <div class="section" id="configuration-defaults">
<h2>Configuration &amp; Defaults<a class="headerlink" href="#configuration-defaults" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Configuration &amp; Defaults</a><a class="headerlink" href="#configuration-defaults" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Ansible has an optional configuration file that can be used to tune settings and also eliminate the need to pass various command line flags. The config file location is controlled by the ANSIBLE_CONFIG environment variable, if set, otherwise ~/.ansible.cfg or /etc/ansible/ansible.cfg will be loaded, whichever comes first. For those running from source, a sample configuration file lives in the examples/ directory. The RPM will install configuration into /etc/ansible/ansible.cfg automatically.</p> <p>Ansible has an optional configuration file that can be used to tune settings and also eliminate the need to pass various command line flags. The config file location is controlled by the ANSIBLE_CONFIG environment variable, if set, otherwise ~/.ansible.cfg or /etc/ansible/ansible.cfg will be loaded, whichever comes first. For those running from source, a sample configuration file lives in the examples/ directory. The RPM will install configuration into /etc/ansible/ansible.cfg automatically.</p>
......
...@@ -193,14 +193,38 @@ s.parentNode.insertBefore(ga, s); ...@@ -193,14 +193,38 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="faq"> <div class="section" id="faq">
<h1>FAQ<a class="headerlink" href="#faq" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">FAQ</a><a class="headerlink" href="#faq" title="Permalink to this headline"></a></h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#faq" id="id1">FAQ</a><ul>
<li><a class="reference internal" href="#why-is-it-called-ansible" id="id2">Why Is It Called Ansible?</a></li>
<li><a class="reference internal" href="#what-inspired-ansible" id="id3">What inspired Ansible?</a></li>
<li><a class="reference internal" href="#comparisons" id="id4">Comparisons</a><ul>
<li><a class="reference internal" href="#vs-func" id="id5">vs Func?</a></li>
<li><a class="reference internal" href="#vs-puppet" id="id6">vs Puppet?</a></li>
<li><a class="reference internal" href="#vs-chef" id="id7">vs Chef?</a></li>
<li><a class="reference internal" href="#vs-capistrano-fabric" id="id8">vs Capistrano/Fabric?</a></li>
</ul>
</li>
<li><a class="reference internal" href="#other-questions" id="id9">Other Questions</a><ul>
<li><a class="reference internal" href="#what-is-ansible-s-approach-to-security" id="id10">What is Ansible&#8217;s approach to security?</a></li>
<li><a class="reference internal" href="#how-does-ansible-scale" id="id11">How does Ansible scale?</a></li>
<li><a class="reference internal" href="#are-transports-other-than-ssh-supported" id="id12">Are transports other than SSH supported?</a></li>
<li><a class="reference internal" href="#what-are-some-ideal-uses-for-ansible" id="id13">What are some ideal uses for Ansible?</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="why-is-it-called-ansible"> <div class="section" id="why-is-it-called-ansible">
<h2>Why Is It Called Ansible?<a class="headerlink" href="#why-is-it-called-ansible" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Why Is It Called Ansible?</a><a class="headerlink" href="#why-is-it-called-ansible" title="Permalink to this headline"></a></h2>
<p>One of my favorite books is Orson Scott Card&#8217;s &#8220;Ender&#8217;s Game&#8221;. In the book, the Ansible is a method of instantaneous <p>One of my favorite books is Orson Scott Card&#8217;s &#8220;Ender&#8217;s Game&#8221;. In the book, the Ansible is a method of instantaneous
long distance &#8220;hyperspace&#8221; communication with a large number of space ships. You should read it!</p> long distance &#8220;hyperspace&#8221; communication with a large number of space ships. You should read it!</p>
</div> </div>
<div class="section" id="what-inspired-ansible"> <div class="section" id="what-inspired-ansible">
<h2>What inspired Ansible?<a class="headerlink" href="#what-inspired-ansible" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">What inspired Ansible?</a><a class="headerlink" href="#what-inspired-ansible" title="Permalink to this headline"></a></h2>
<p>Back when I worked for Red Hat and working on <a class="reference external" href="http://cobbler.github.com/">Cobbler</a>, several of us identified a gap between <p>Back when I worked for Red Hat and working on <a class="reference external" href="http://cobbler.github.com/">Cobbler</a>, several of us identified a gap between
provisioning (Cobbler) and configuration management solutions (cfengine, Puppet, etc). provisioning (Cobbler) and configuration management solutions (cfengine, Puppet, etc).
There was a need for a way to do ad-hoc tasks efficiently, and various parallel There was a need for a way to do ad-hoc tasks efficiently, and various parallel
...@@ -232,9 +256,9 @@ best&#8217;, and distills all of the ideas behind all of these other tools to th ...@@ -232,9 +256,9 @@ best&#8217;, and distills all of the ideas behind all of these other tools to th
<p>I&#8217;d like to know what you think of it. Hop by the mailing list and say hi.</p> <p>I&#8217;d like to know what you think of it. Hop by the mailing list and say hi.</p>
</div> </div>
<div class="section" id="comparisons"> <div class="section" id="comparisons">
<h2>Comparisons<a class="headerlink" href="#comparisons" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Comparisons</a><a class="headerlink" href="#comparisons" title="Permalink to this headline"></a></h2>
<div class="section" id="vs-func"> <div class="section" id="vs-func">
<h3>vs Func?<a class="headerlink" href="#vs-func" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">vs Func?</a><a class="headerlink" href="#vs-func" title="Permalink to this headline"></a></h3>
<p>Ansible uses SSH by default instead of SSL and custom daemons, and requires <p>Ansible uses SSH by default instead of SSL and custom daemons, and requires
no extra software to run on managed machines. You can also write modules no extra software to run on managed machines. You can also write modules
in any language as long as they return JSON. Ansible&#8217;s API, of course, is in any language as long as they return JSON. Ansible&#8217;s API, of course, is
...@@ -243,7 +267,7 @@ a configuration management and multinode orchestration layer (<a class="referenc ...@@ -243,7 +267,7 @@ a configuration management and multinode orchestration layer (<a class="referenc
that Func didn&#8217;t have.</p> that Func didn&#8217;t have.</p>
</div> </div>
<div class="section" id="vs-puppet"> <div class="section" id="vs-puppet">
<h3>vs Puppet?<a class="headerlink" href="#vs-puppet" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">vs Puppet?</a><a class="headerlink" href="#vs-puppet" title="Permalink to this headline"></a></h3>
<p>First off, Ansible wouldn&#8217;t have happened without Puppet. Puppet took configuration <p>First off, Ansible wouldn&#8217;t have happened without Puppet. Puppet took configuration
management ideas from cfengine and made them sane. However, I still think they can management ideas from cfengine and made them sane. However, I still think they can
be much simpler.</p> be much simpler.</p>
...@@ -271,7 +295,7 @@ in jinja2 in a way just like Puppet does with erb. Ansible also has it&#8217;s ...@@ -271,7 +295,7 @@ in jinja2 in a way just like Puppet does with erb. Ansible also has it&#8217;s
so usage of facter is not required to get variables about the system.</p> so usage of facter is not required to get variables about the system.</p>
</div> </div>
<div class="section" id="vs-chef"> <div class="section" id="vs-chef">
<h3>vs Chef?<a class="headerlink" href="#vs-chef" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">vs Chef?</a><a class="headerlink" href="#vs-chef" title="Permalink to this headline"></a></h3>
<p>Much in the ways Ansible is different from Puppet. Chef is notoriously hard <p>Much in the ways Ansible is different from Puppet. Chef is notoriously hard
to set up on the server, and requires that you know how to program in Ruby to to set up on the server, and requires that you know how to program in Ruby to
use the language. As such, it seems to have a pretty good following mainly use the language. As such, it seems to have a pretty good following mainly
...@@ -292,7 +316,7 @@ submit a patch or module.</p> ...@@ -292,7 +316,7 @@ submit a patch or module.</p>
has it&#8217;s own facts so you do not need to use ohai unless you want to.</p> has it&#8217;s own facts so you do not need to use ohai unless you want to.</p>
</div> </div>
<div class="section" id="vs-capistrano-fabric"> <div class="section" id="vs-capistrano-fabric">
<h3>vs Capistrano/Fabric?<a class="headerlink" href="#vs-capistrano-fabric" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">vs Capistrano/Fabric?</a><a class="headerlink" href="#vs-capistrano-fabric" title="Permalink to this headline"></a></h3>
<p>These tools aren&#8217;t really well suited to doing idempotent configuration and are <p>These tools aren&#8217;t really well suited to doing idempotent configuration and are
typically about pushing software out for web deployment and automating steps.</p> typically about pushing software out for web deployment and automating steps.</p>
<p>Meanwhile Ansible is designed for other types of configuration management, and contains some <p>Meanwhile Ansible is designed for other types of configuration management, and contains some
...@@ -303,9 +327,9 @@ useful for sysadmins (not just web developers), and can also be used for firing ...@@ -303,9 +327,9 @@ useful for sysadmins (not just web developers), and can also be used for firing
</div> </div>
</div> </div>
<div class="section" id="other-questions"> <div class="section" id="other-questions">
<h2>Other Questions<a class="headerlink" href="#other-questions" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Other Questions</a><a class="headerlink" href="#other-questions" title="Permalink to this headline"></a></h2>
<div class="section" id="what-is-ansible-s-approach-to-security"> <div class="section" id="what-is-ansible-s-approach-to-security">
<h3>What is Ansible&#8217;s approach to security?<a class="headerlink" href="#what-is-ansible-s-approach-to-security" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">What is Ansible&#8217;s approach to security?</a><a class="headerlink" href="#what-is-ansible-s-approach-to-security" title="Permalink to this headline"></a></h3>
<p>Ansible aims to not develop custom daemon or PKI code but rely heavily on OpenSSH, which is extremely well <p>Ansible aims to not develop custom daemon or PKI code but rely heavily on OpenSSH, which is extremely well
peer reviewed and the most widely used security subsystem in the industry. As a result, Ansible peer reviewed and the most widely used security subsystem in the industry. As a result, Ansible
has a lower attack surface than any configuration management tool featuring daemons that run has a lower attack surface than any configuration management tool featuring daemons that run
...@@ -320,7 +344,7 @@ free RAM and compute resources, which should be relevant to users wanting to max ...@@ -320,7 +344,7 @@ free RAM and compute resources, which should be relevant to users wanting to max
computing investments.</p> computing investments.</p>
</div> </div>
<div class="section" id="how-does-ansible-scale"> <div class="section" id="how-does-ansible-scale">
<h3>How does Ansible scale?<a class="headerlink" href="#how-does-ansible-scale" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">How does Ansible scale?</a><a class="headerlink" href="#how-does-ansible-scale" title="Permalink to this headline"></a></h3>
<p>Whether in single-execution mode or using ansible playbooks, ansible can <p>Whether in single-execution mode or using ansible playbooks, ansible can
run multiple commands in seperate parallel forks, thanks to the magic behind run multiple commands in seperate parallel forks, thanks to the magic behind
Python&#8217;s multiprocessing module.</p> Python&#8217;s multiprocessing module.</p>
...@@ -345,7 +369,7 @@ model.</p> ...@@ -345,7 +369,7 @@ model.</p>
<p>If you&#8217;d like to discuss scaling strategies further, please hop on the mailing list.</p> <p>If you&#8217;d like to discuss scaling strategies further, please hop on the mailing list.</p>
</div> </div>
<div class="section" id="are-transports-other-than-ssh-supported"> <div class="section" id="are-transports-other-than-ssh-supported">
<h3>Are transports other than SSH supported?<a class="headerlink" href="#are-transports-other-than-ssh-supported" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">Are transports other than SSH supported?</a><a class="headerlink" href="#are-transports-other-than-ssh-supported" title="Permalink to this headline"></a></h3>
<p>Currently SSH (you can choose between paramiko or the openssh binaries) <p>Currently SSH (you can choose between paramiko or the openssh binaries)
and local connections are supported. The interface is actually pluggable so a and local connections are supported. The interface is actually pluggable so a
small patch could bring transport over message bus or XMPP as an option.</p> small patch could bring transport over message bus or XMPP as an option.</p>
...@@ -353,7 +377,7 @@ small patch could bring transport over message bus or XMPP as an option.</p> ...@@ -353,7 +377,7 @@ small patch could bring transport over message bus or XMPP as an option.</p>
are all abstracted away from the core implementation so it is very easy to extend.</p> are all abstracted away from the core implementation so it is very easy to extend.</p>
</div> </div>
<div class="section" id="what-are-some-ideal-uses-for-ansible"> <div class="section" id="what-are-some-ideal-uses-for-ansible">
<h3>What are some ideal uses for Ansible?<a class="headerlink" href="#what-are-some-ideal-uses-for-ansible" title="Permalink to this headline"></a></h3> <h3><a class="toc-backref" href="#contents">What are some ideal uses for Ansible?</a><a class="headerlink" href="#what-are-some-ideal-uses-for-ansible" title="Permalink to this headline"></a></h3>
<p>One of the best use cases? Complex multi-node cloud deployments using playbooks. Another good <p>One of the best use cases? Complex multi-node cloud deployments using playbooks. Another good
example is for configuration management where you example is for configuration management where you
are starting from a clean OS with no extra software installed, adopting systems are starting from a clean OS with no extra software installed, adopting systems
......
...@@ -189,9 +189,22 @@ s.parentNode.insertBefore(ga, s); ...@@ -189,9 +189,22 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="getting-started"> <div class="section" id="getting-started">
<h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Getting Started</a><a class="headerlink" href="#getting-started" title="Permalink to this headline"></a></h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#getting-started" id="id1">Getting Started</a><ul>
<li><a class="reference internal" href="#requirements" id="id2">Requirements</a></li>
<li><a class="reference internal" href="#python-2-6-epel-instructions-for-rhel-and-centos-5" id="id3">Python 2.6 EPEL instructions for RHEL and CentOS 5</a></li>
<li><a class="reference internal" href="#getting-ansible" id="id4">Getting Ansible</a></li>
<li><a class="reference internal" href="#choosing-between-paramiko-and-native-ssh" id="id5">Choosing Between Paramiko and Native SSH</a></li>
<li><a class="reference internal" href="#your-first-commands" id="id6">Your first commands</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="requirements"> <div class="section" id="requirements">
<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Requirements</a><a class="headerlink" href="#requirements" title="Permalink to this headline"></a></h2>
<p>Requirements for Ansible are extremely minimal.</p> <p>Requirements for Ansible are extremely minimal.</p>
<p>Ansible is written for Python 2.6. If you are running Python 2.5 on an &#8220;Enterprise Linux&#8221; variant, <p>Ansible is written for Python 2.6. If you are running Python 2.5 on an &#8220;Enterprise Linux&#8221; variant,
your distribution can easily install 2.6 (see instructions in the next section). Newer versions your distribution can easily install 2.6 (see instructions in the next section). Newer versions
...@@ -218,7 +231,7 @@ though.)</p> ...@@ -218,7 +231,7 @@ though.)</p>
</div> </div>
</div> </div>
<div class="section" id="python-2-6-epel-instructions-for-rhel-and-centos-5"> <div class="section" id="python-2-6-epel-instructions-for-rhel-and-centos-5">
<h2>Python 2.6 EPEL instructions for RHEL and CentOS 5<a class="headerlink" href="#python-2-6-epel-instructions-for-rhel-and-centos-5" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Python 2.6 EPEL instructions for RHEL and CentOS 5</a><a class="headerlink" href="#python-2-6-epel-instructions-for-rhel-and-centos-5" title="Permalink to this headline"></a></h2>
<p>These distributions don&#8217;t have Python 2.6 by default, but it is easily <p>These distributions don&#8217;t have Python 2.6 by default, but it is easily
installable. If you have not already done so, <a class="reference external" href="http://fedoraproject.org/wiki/EPEL">configure EPEL</a></p> installable. If you have not already done so, <a class="reference external" href="http://fedoraproject.org/wiki/EPEL">configure EPEL</a></p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>yum install python26 python26-PyYAML python26-paramiko python26-jinja2 <div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>yum install python26 python26-PyYAML python26-paramiko python26-jinja2
...@@ -226,7 +239,7 @@ installable. If you have not already done so, <a class="reference external" href ...@@ -226,7 +239,7 @@ installable. If you have not already done so, <a class="reference external" href
</div> </div>
</div> </div>
<div class="section" id="getting-ansible"> <div class="section" id="getting-ansible">
<h2>Getting Ansible<a class="headerlink" href="#getting-ansible" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Getting Ansible</a><a class="headerlink" href="#getting-ansible" title="Permalink to this headline"></a></h2>
<p>If you are interested in using all the latest features, you may wish to keep up to date <p>If you are interested in using all the latest features, you may wish to keep up to date
with the development branch of the git checkout. This also makes it easiest to contribute with the development branch of the git checkout. This also makes it easiest to contribute
back to the project.</p> back to the project.</p>
...@@ -310,7 +323,7 @@ project page:</p> ...@@ -310,7 +323,7 @@ project page:</p>
</div> </div>
</div> </div>
<div class="section" id="choosing-between-paramiko-and-native-ssh"> <div class="section" id="choosing-between-paramiko-and-native-ssh">
<h2>Choosing Between Paramiko and Native SSH<a class="headerlink" href="#choosing-between-paramiko-and-native-ssh" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Choosing Between Paramiko and Native SSH</a><a class="headerlink" href="#choosing-between-paramiko-and-native-ssh" title="Permalink to this headline"></a></h2>
<p>By default, ansible uses paramiko to talk to managed nodes over SSH. Paramiko is fast, works <p>By default, ansible uses paramiko to talk to managed nodes over SSH. Paramiko is fast, works
very transparently, requires no configuration, and is a good choice for most users. very transparently, requires no configuration, and is a good choice for most users.
However, it does not support some advanced SSH features that folks will want to use.</p> However, it does not support some advanced SSH features that folks will want to use.</p>
...@@ -327,7 +340,7 @@ are roughly the same speed. Without CM, the binary ssh transport is signficantl ...@@ -327,7 +340,7 @@ are roughly the same speed. Without CM, the binary ssh transport is signficantl
<p>If none of this makes sense to you, the default paramiko option is probably fine.</p> <p>If none of this makes sense to you, the default paramiko option is probably fine.</p>
</div> </div>
<div class="section" id="your-first-commands"> <div class="section" id="your-first-commands">
<h2>Your first commands<a class="headerlink" href="#your-first-commands" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Your first commands</a><a class="headerlink" href="#your-first-commands" title="Permalink to this headline"></a></h2>
<p>Now that you&#8217;ve installed Ansible, it&#8217;s time to test it.</p> <p>Now that you&#8217;ve installed Ansible, it&#8217;s time to test it.</p>
<p>Edit (or create) /etc/ansible/hosts and put one or more remote systems in it, for <p>Edit (or create) /etc/ansible/hosts and put one or more remote systems in it, for
which you have your SSH key in <tt class="docutils literal"><span class="pre">authorized_keys</span></tt>:</p> which you have your SSH key in <tt class="docutils literal"><span class="pre">authorized_keys</span></tt>:</p>
......
...@@ -187,13 +187,31 @@ s.parentNode.insertBefore(ga, s); ...@@ -187,13 +187,31 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="module-development"> <div class="section" id="module-development">
<h1>Module Development<a class="headerlink" href="#module-development" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Module Development</a><a class="headerlink" href="#module-development" title="Permalink to this headline"></a></h1>
<p>Ansible modules are reusable units of magic that can be used by the Ansible API, <p>Ansible modules are reusable units of magic that can be used by the Ansible API,
or by the <cite>ansible</cite> or <cite>ansible-playbook</cite> programs.</p> or by the <cite>ansible</cite> or <cite>ansible-playbook</cite> programs.</p>
<p>Modules can be written in any language and are found in the path specified <p>Modules can be written in any language and are found in the path specified
by <cite>ANSIBLE_LIBRARY_PATH</cite> or the <tt class="docutils literal"><span class="pre">--module-path</span></tt> command line option.</p> by <cite>ANSIBLE_LIBRARY_PATH</cite> or the <tt class="docutils literal"><span class="pre">--module-path</span></tt> command line option.</p>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#module-development" id="id2">Module Development</a><ul>
<li><a class="reference internal" href="#tutorial" id="id3">Tutorial</a></li>
<li><a class="reference internal" href="#testing-modules" id="id4">Testing Modules</a></li>
<li><a class="reference internal" href="#reading-input" id="id5">Reading Input</a></li>
<li><a class="reference internal" href="#module-provided-facts" id="id6">Module Provided &#8216;Facts&#8217;</a></li>
<li><a class="reference internal" href="#common-module-boilerplate" id="id7">Common Module Boilerplate</a></li>
<li><a class="reference internal" href="#common-pitfalls" id="id8">Common Pitfalls</a></li>
<li><a class="reference internal" href="#conventions-recomendations" id="id9">Conventions/Recomendations</a></li>
<li><a class="reference internal" href="#shorthand-vs-json" id="id10">Shorthand Vs JSON</a></li>
<li><a class="reference internal" href="#sharing-your-module" id="id11">Sharing Your Module</a></li>
<li><a class="reference internal" href="#getting-your-module-into-core" id="id12">Getting Your Module Into Core</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="tutorial"> <div class="section" id="tutorial">
<h2>Tutorial<a class="headerlink" href="#tutorial" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Tutorial</a><a class="headerlink" href="#tutorial" title="Permalink to this headline"></a></h2>
<p>Let&#8217;s build a module to get and set the system time. For starters, let&#8217;s build <p>Let&#8217;s build a module to get and set the system time. For starters, let&#8217;s build
a module that just outputs the current time.</p> a module that just outputs the current time.</p>
<p>We are going to use Python here but any language is possible. Only File I/O and outputing to standard <p>We are going to use Python here but any language is possible. Only File I/O and outputing to standard
...@@ -223,7 +241,7 @@ you&#8217;ll turn to stone. Nobody ever executes async_wrapper directly.</p> ...@@ -223,7 +241,7 @@ you&#8217;ll turn to stone. Nobody ever executes async_wrapper directly.</p>
</div> </div>
</div> </div>
<div class="section" id="testing-modules"> <div class="section" id="testing-modules">
<h2>Testing Modules<a class="headerlink" href="#testing-modules" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Testing Modules</a><a class="headerlink" href="#testing-modules" title="Permalink to this headline"></a></h2>
<p>There&#8217;s a useful test script in the source checkout for ansible:</p> <p>There&#8217;s a useful test script in the source checkout for ansible:</p>
<div class="highlight-python"><pre>git clone git@github.com:ansible/ansible.git <div class="highlight-python"><pre>git clone git@github.com:ansible/ansible.git
chmod +x ansible/hacking/test-module</pre> chmod +x ansible/hacking/test-module</pre>
...@@ -238,7 +256,7 @@ chmod +x ansible/hacking/test-module</pre> ...@@ -238,7 +256,7 @@ chmod +x ansible/hacking/test-module</pre>
<p>If you did not, you might have a typo in your module, so recheck it and try again.</p> <p>If you did not, you might have a typo in your module, so recheck it and try again.</p>
</div> </div>
<div class="section" id="reading-input"> <div class="section" id="reading-input">
<h2>Reading Input<a class="headerlink" href="#reading-input" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Reading Input</a><a class="headerlink" href="#reading-input" title="Permalink to this headline"></a></h2>
<p>Let&#8217;s modify the module to allow setting the current time. We&#8217;ll do this by seeing <p>Let&#8217;s modify the module to allow setting the current time. We&#8217;ll do this by seeing
if a key value pair in the form <cite>time=&lt;string&gt;</cite> is passed in to the module.</p> if a key value pair in the form <cite>time=&lt;string&gt;</cite> is passed in to the module.</p>
<p>Ansible internally saves arguments to an arguments file. So we must read the file <p>Ansible internally saves arguments to an arguments file. So we must read the file
...@@ -342,7 +360,7 @@ a lot shorter than this:</p> ...@@ -342,7 +360,7 @@ a lot shorter than this:</p>
</div> </div>
</div> </div>
<div class="section" id="module-provided-facts"> <div class="section" id="module-provided-facts">
<h2>Module Provided &#8216;Facts&#8217;<a class="headerlink" href="#module-provided-facts" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Module Provided &#8216;Facts&#8217;</a><a class="headerlink" href="#module-provided-facts" title="Permalink to this headline"></a></h2>
<p>The &#8216;setup&#8217; module that ships with Ansible provides many variables about a system that can be used in playbooks <p>The &#8216;setup&#8217; module that ships with Ansible provides many variables about a system that can be used in playbooks
and templates. However, it&#8217;s possible to also add your own facts without modifying the system module. To do and templates. However, it&#8217;s possible to also add your own facts without modifying the system module. To do
this, just have the module return a <cite>ansible_facts</cite> key, like so, along with other return data:</p> this, just have the module return a <cite>ansible_facts</cite> key, like so, along with other return data:</p>
...@@ -363,7 +381,7 @@ A good idea might be make a module called &#8216;site_facts&#8217; and always ca ...@@ -363,7 +381,7 @@ A good idea might be make a module called &#8216;site_facts&#8217; and always ca
we&#8217;re always open to improving the selection of core facts in Ansible as well.</p> we&#8217;re always open to improving the selection of core facts in Ansible as well.</p>
</div> </div>
<div class="section" id="common-module-boilerplate"> <div class="section" id="common-module-boilerplate">
<h2>Common Module Boilerplate<a class="headerlink" href="#common-module-boilerplate" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Common Module Boilerplate</a><a class="headerlink" href="#common-module-boilerplate" title="Permalink to this headline"></a></h2>
<p>As mentioned, if you are writing a module in Python, there are some very powerful shortcuts you can use. <p>As mentioned, if you are writing a module in Python, there are some very powerful shortcuts you can use.
Modules are still transferred as one file, but an arguments file is no longer needed, so these are not Modules are still transferred as one file, but an arguments file is no longer needed, so these are not
only shorter in terms of code, they are actually FASTER in terms of execution time.</p> only shorter in terms of code, they are actually FASTER in terms of execution time.</p>
...@@ -405,7 +423,7 @@ can function outside of Ansible.</p> ...@@ -405,7 +423,7 @@ can function outside of Ansible.</p>
class is required.</p> class is required.</p>
</div> </div>
<div class="section" id="common-pitfalls"> <div class="section" id="common-pitfalls">
<h2>Common Pitfalls<a class="headerlink" href="#common-pitfalls" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Common Pitfalls</a><a class="headerlink" href="#common-pitfalls" title="Permalink to this headline"></a></h2>
<p>You should also never do this in a module:</p> <p>You should also never do this in a module:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="k">print</span> <span class="s">&quot;some status message&quot;</span> <div class="highlight-python"><div class="highlight"><pre><span class="k">print</span> <span class="s">&quot;some status message&quot;</span>
</pre></div> </pre></div>
...@@ -422,7 +440,7 @@ will still be shown in Ansible, but the command will not succeed.</p> ...@@ -422,7 +440,7 @@ will still be shown in Ansible, but the command will not succeed.</p>
you about these kind of things.</p> you about these kind of things.</p>
</div> </div>
<div class="section" id="conventions-recomendations"> <div class="section" id="conventions-recomendations">
<h2>Conventions/Recomendations<a class="headerlink" href="#conventions-recomendations" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Conventions/Recomendations</a><a class="headerlink" href="#conventions-recomendations" title="Permalink to this headline"></a></h2>
<p>As a reminder from the example code above, here are some basic conventions <p>As a reminder from the example code above, here are some basic conventions
and guidelines:</p> and guidelines:</p>
<ul class="simple"> <ul class="simple">
...@@ -439,7 +457,7 @@ and guidelines:</p> ...@@ -439,7 +457,7 @@ and guidelines:</p>
</ul> </ul>
</div> </div>
<div class="section" id="shorthand-vs-json"> <div class="section" id="shorthand-vs-json">
<h2>Shorthand Vs JSON<a class="headerlink" href="#shorthand-vs-json" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Shorthand Vs JSON</a><a class="headerlink" href="#shorthand-vs-json" title="Permalink to this headline"></a></h2>
<p>To make it easier to write modules in bash and in cases where a JSON <p>To make it easier to write modules in bash and in cases where a JSON
module might not be available, it is acceptable for a module to return module might not be available, it is acceptable for a module to return
key=value output all on one line, like this. The Ansible parser key=value output all on one line, like this. The Ansible parser
...@@ -450,7 +468,7 @@ will know what to do:</p> ...@@ -450,7 +468,7 @@ will know what to do:</p>
JSON is probably the simplest way to go.</p> JSON is probably the simplest way to go.</p>
</div> </div>
<div class="section" id="sharing-your-module"> <div class="section" id="sharing-your-module">
<h2>Sharing Your Module<a class="headerlink" href="#sharing-your-module" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Sharing Your Module</a><a class="headerlink" href="#sharing-your-module" title="Permalink to this headline"></a></h2>
<p>If you think your module is generally useful to others, a good place to share it <p>If you think your module is generally useful to others, a good place to share it
is in <a class="reference external" href="https://github.com/ansible/ansible-resources">Ansible Resources</a>. This is maintained is in <a class="reference external" href="https://github.com/ansible/ansible-resources">Ansible Resources</a>. This is maintained
as a simple repo with pointers to other github projects.</p> as a simple repo with pointers to other github projects.</p>
...@@ -459,7 +477,7 @@ We would like to build up as many of these as possible in as many languages as p ...@@ -459,7 +477,7 @@ We would like to build up as many of these as possible in as many languages as p
<p><a class="reference external" href="http://groups.google.com/group/ansible-project">Ansible Mailing List</a></p> <p><a class="reference external" href="http://groups.google.com/group/ansible-project">Ansible Mailing List</a></p>
</div> </div>
<div class="section" id="getting-your-module-into-core"> <div class="section" id="getting-your-module-into-core">
<h2>Getting Your Module Into Core<a class="headerlink" href="#getting-your-module-into-core" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Getting Your Module Into Core</a><a class="headerlink" href="#getting-your-module-into-core" title="Permalink to this headline"></a></h2>
<p>High-quality modules with minimal dependencies <p>High-quality modules with minimal dependencies
can be included in the core, but core modules (just due to the programming can be included in the core, but core modules (just due to the programming
preferences of the developers) will need to be implemented in Python and use preferences of the developers) will need to be implemented in Python and use
......
...@@ -149,6 +149,7 @@ s.parentNode.insertBefore(ga, s); ...@@ -149,6 +149,7 @@ s.parentNode.insertBefore(ga, s);
class="dropdown-toggle">Page</a> class="dropdown-toggle">Page</a>
<span class="localtoc"><ul> <span class="localtoc"><ul>
<li><a class="reference internal" href="#">Ansible Modules</a><ul> <li><a class="reference internal" href="#">Ansible Modules</a><ul>
<li><a class="reference internal" href="#introduction">Introduction</a></li>
<li><a class="reference internal" href="#apt-repository">apt_repository</a></li> <li><a class="reference internal" href="#apt-repository">apt_repository</a></li>
<li><a class="reference internal" href="#apt">apt</a></li> <li><a class="reference internal" href="#apt">apt</a></li>
<li><a class="reference internal" href="#assemble">assemble</a></li> <li><a class="reference internal" href="#assemble">assemble</a></li>
...@@ -211,7 +212,52 @@ s.parentNode.insertBefore(ga, s); ...@@ -211,7 +212,52 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="ansible-modules"> <div class="section" id="ansible-modules">
<h1>Ansible Modules<a class="headerlink" href="#ansible-modules" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Ansible Modules</a><a class="headerlink" href="#ansible-modules" title="Permalink to this headline"></a></h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#ansible-modules" id="id34">Ansible Modules</a><ul>
<li><a class="reference internal" href="#introduction" id="id35">Introduction</a></li>
<li><a class="reference internal" href="#apt-repository" id="id36">apt_repository</a></li>
<li><a class="reference internal" href="#apt" id="id37">apt</a></li>
<li><a class="reference internal" href="#assemble" id="id38">assemble</a></li>
<li><a class="reference internal" href="#authorized-key" id="id39">authorized_key</a></li>
<li><a class="reference internal" href="#command" id="id40">command</a></li>
<li><a class="reference internal" href="#copy" id="id41">copy</a></li>
<li><a class="reference internal" href="#easy-install" id="id42">easy_install</a></li>
<li><a class="reference internal" href="#facter" id="id43">facter</a></li>
<li><a class="reference internal" href="#fetch" id="id44">fetch</a></li>
<li><a class="reference internal" href="#file" id="id45">file</a></li>
<li><a class="reference internal" href="#get-url" id="id46">get_url</a></li>
<li><a class="reference internal" href="#git" id="id47">git</a></li>
<li><a class="reference internal" href="#group" id="id48">group</a></li>
<li><a class="reference internal" href="#mount" id="id49">mount</a></li>
<li><a class="reference internal" href="#mysql-db" id="id50">mysql_db</a></li>
<li><a class="reference internal" href="#mysql-user" id="id51">mysql_user</a></li>
<li><a class="reference internal" href="#nagios" id="id52">nagios</a></li>
<li><a class="reference internal" href="#ohai" id="id53">ohai</a></li>
<li><a class="reference internal" href="#ping" id="id54">ping</a></li>
<li><a class="reference internal" href="#pip" id="id55">pip</a></li>
<li><a class="reference internal" href="#postgresql-db" id="id56">postgresql_db</a></li>
<li><a class="reference internal" href="#postgresql-user" id="id57">postgresql_user</a></li>
<li><a class="reference internal" href="#raw" id="id58">raw</a></li>
<li><a class="reference internal" href="#service" id="id59">service</a></li>
<li><a class="reference internal" href="#setup" id="id60">setup</a></li>
<li><a class="reference internal" href="#shell" id="id61">shell</a></li>
<li><a class="reference internal" href="#subversion" id="id62">subversion</a></li>
<li><a class="reference internal" href="#supervisorctl" id="id63">supervisorctl</a></li>
<li><a class="reference internal" href="#template" id="id64">template</a></li>
<li><a class="reference internal" href="#user" id="id65">user</a></li>
<li><a class="reference internal" href="#virt" id="id66">virt</a></li>
<li><a class="reference internal" href="#yum" id="id67">yum</a></li>
<li><a class="reference internal" href="#additional-contrib-modules" id="id68">Additional Contrib Modules</a></li>
<li><a class="reference internal" href="#writing-your-own-modules" id="id69">Writing your own modules</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="introduction">
<h2><a class="toc-backref" href="#contents">Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h2>
<p>Ansible ships with a number of modules (called the &#8216;module library&#8217;) <p>Ansible ships with a number of modules (called the &#8216;module library&#8217;)
that can be executed directly on remote hosts or through <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a>. that can be executed directly on remote hosts or through <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a>.
Users can also write their own modules. These modules can control system Users can also write their own modules. These modules can control system
...@@ -237,61 +283,9 @@ not have to write modules in any particular language &#8211; you get to choose.< ...@@ -237,61 +283,9 @@ not have to write modules in any particular language &#8211; you get to choose.<
playbooks, these modules can trigger &#8216;change events&#8217; in the form of notifying &#8216;handlers&#8217; playbooks, these modules can trigger &#8216;change events&#8217; in the form of notifying &#8216;handlers&#8217;
to run additional tasks.</p> to run additional tasks.</p>
<p>Let&#8217;s see what&#8217;s available in the Ansible module library, out of the box:</p> <p>Let&#8217;s see what&#8217;s available in the Ansible module library, out of the box:</p>
<table border="1" class="docutils"> </div>
<colgroup>
<col width="33%" />
<col width="33%" />
<col width="33%" />
</colgroup>
<tbody valign="top">
<tr><td><a class="reference internal" href="#apt-repository"><em>apt_repository</em></a></td>
<td><a class="reference internal" href="#apt"><em>apt</em></a></td>
<td><a class="reference internal" href="#assemble"><em>assemble</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#authorized-key"><em>authorized_key</em></a></td>
<td><a class="reference internal" href="#command"><em>command</em></a></td>
<td><a class="reference internal" href="#copy"><em>copy</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#easy-install"><em>easy_install</em></a></td>
<td><a class="reference internal" href="#facter"><em>facter</em></a></td>
<td><a class="reference internal" href="#fetch"><em>fetch</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#file"><em>file</em></a></td>
<td><a class="reference internal" href="#get-url"><em>get_url</em></a></td>
<td><a class="reference internal" href="#git"><em>git</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#group"><em>group</em></a></td>
<td><a class="reference internal" href="#mount"><em>mount</em></a></td>
<td><a class="reference internal" href="#mysql-db"><em>mysql_db</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#mysql-user"><em>mysql_user</em></a></td>
<td><a class="reference internal" href="#nagios"><em>nagios</em></a></td>
<td><a class="reference internal" href="#ohai"><em>ohai</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#ping"><em>ping</em></a></td>
<td><a class="reference internal" href="#pip"><em>pip</em></a></td>
<td><a class="reference internal" href="#postgresql-db"><em>postgresql_db</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#postgresql-user"><em>postgresql_user</em></a></td>
<td><a class="reference internal" href="#raw"><em>raw</em></a></td>
<td><a class="reference internal" href="#service"><em>service</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#setup"><em>setup</em></a></td>
<td><a class="reference internal" href="#shell"><em>shell</em></a></td>
<td><a class="reference internal" href="#supervisorctl"><em>supervisorctl</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#template"><em>template</em></a></td>
<td><a class="reference internal" href="#user"><em>user</em></a></td>
<td><a class="reference internal" href="#virt"><em>virt</em></a></td>
</tr>
<tr><td><a class="reference internal" href="#yum"><em>yum</em></a></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<div class="section" id="apt-repository"> <div class="section" id="apt-repository">
<span id="id1"></span><h2>apt_repository<a class="headerlink" href="#apt-repository" title="Permalink to this headline"></a></h2> <span id="id1"></span><h2><a class="toc-backref" href="#contents">apt_repository</a><a class="headerlink" href="#apt-repository" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Manages apt repositores</p> <p>Manages apt repositores</p>
...@@ -328,7 +322,7 @@ apt_repository repo='deb http://archive.canonical.com/ubuntu hardy partner'</pre ...@@ -328,7 +322,7 @@ apt_repository repo='deb http://archive.canonical.com/ubuntu hardy partner'</pre
</div> </div>
</div> </div>
<div class="section" id="apt"> <div class="section" id="apt">
<span id="id2"></span><h2>apt<a class="headerlink" href="#apt" title="Permalink to this headline"></a></h2> <span id="id2"></span><h2><a class="toc-backref" href="#contents">apt</a><a class="headerlink" href="#apt" title="Permalink to this headline"></a></h2>
<p>Manages apt-packages (such as for Debian/Ubuntu).</p> <p>Manages apt-packages (such as for Debian/Ubuntu).</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -395,7 +389,7 @@ apt pkg=openjdk-6-jdk state=latest install-recommends=no</pre> ...@@ -395,7 +389,7 @@ apt pkg=openjdk-6-jdk state=latest install-recommends=no</pre>
</div> </div>
</div> </div>
<div class="section" id="assemble"> <div class="section" id="assemble">
<span id="id3"></span><h2>assemble<a class="headerlink" href="#assemble" title="Permalink to this headline"></a></h2> <span id="id3"></span><h2><a class="toc-backref" href="#contents">assemble</a><a class="headerlink" href="#assemble" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.5.</span></p> <span class="versionmodified">New in version 0.5.</span></p>
<p>Assembles a configuration file from fragments. Often a particular <p>Assembles a configuration file from fragments. Often a particular
...@@ -442,7 +436,7 @@ sorting order. Puppet calls this idea &#8220;fragments&#8221;.</p> ...@@ -442,7 +436,7 @@ sorting order. Puppet calls this idea &#8220;fragments&#8221;.</p>
</div> </div>
</div> </div>
<div class="section" id="authorized-key"> <div class="section" id="authorized-key">
<span id="id4"></span><h2>authorized_key<a class="headerlink" href="#authorized-key" title="Permalink to this headline"></a></h2> <span id="id4"></span><h2><a class="toc-backref" href="#contents">authorized_key</a><a class="headerlink" href="#authorized-key" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.5.</span></p> <span class="versionmodified">New in version 0.5.</span></p>
<p>Adds or removes an authorized key for a user from a remote host.</p> <p>Adds or removes an authorized key for a user from a remote host.</p>
...@@ -483,7 +477,7 @@ sorting order. Puppet calls this idea &#8220;fragments&#8221;.</p> ...@@ -483,7 +477,7 @@ sorting order. Puppet calls this idea &#8220;fragments&#8221;.</p>
</div> </div>
</div> </div>
<div class="section" id="command"> <div class="section" id="command">
<span id="id5"></span><h2>command<a class="headerlink" href="#command" title="Permalink to this headline"></a></h2> <span id="id5"></span><h2><a class="toc-backref" href="#contents">command</a><a class="headerlink" href="#command" title="Permalink to this headline"></a></h2>
<p>The command module takes the command name followed by a list of <p>The command module takes the command name followed by a list of
arguments, space delimited.</p> arguments, space delimited.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
...@@ -538,7 +532,7 @@ the user&#8217;s environment.</p> ...@@ -538,7 +532,7 @@ the user&#8217;s environment.</p>
<p>The <cite>creates=</cite> and <cite>chdir</cite> options will not be passed to the actual executable.</p> <p>The <cite>creates=</cite> and <cite>chdir</cite> options will not be passed to the actual executable.</p>
</div> </div>
<div class="section" id="copy"> <div class="section" id="copy">
<span id="id6"></span><h2>copy<a class="headerlink" href="#copy" title="Permalink to this headline"></a></h2> <span id="id6"></span><h2><a class="toc-backref" href="#contents">copy</a><a class="headerlink" href="#copy" title="Permalink to this headline"></a></h2>
<p>The copy module moves a file on the local box to remote locations. In addition to the options <p>The copy module moves a file on the local box to remote locations. In addition to the options
listed below, the arguments available to the <cite>file</cite> module can also be passed to the copy listed below, the arguments available to the <cite>file</cite> module can also be passed to the copy
module.</p> module.</p>
...@@ -580,7 +574,7 @@ relative.</td> ...@@ -580,7 +574,7 @@ relative.</td>
</div> </div>
</div> </div>
<div class="section" id="easy-install"> <div class="section" id="easy-install">
<span id="id7"></span><h2>easy_install<a class="headerlink" href="#easy-install" title="Permalink to this headline"></a></h2> <span id="id7"></span><h2><a class="toc-backref" href="#contents">easy_install</a><a class="headerlink" href="#easy-install" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>The easy_install module installs Python libraries.</p> <p>The easy_install module installs Python libraries.</p>
...@@ -624,7 +618,7 @@ easy_install name=flask virtualenv=/srv/webapps/my_app/venv</pre> ...@@ -624,7 +618,7 @@ easy_install name=flask virtualenv=/srv/webapps/my_app/venv</pre>
</div> </div>
</div> </div>
<div class="section" id="facter"> <div class="section" id="facter">
<span id="id8"></span><h2>facter<a class="headerlink" href="#facter" title="Permalink to this headline"></a></h2> <span id="id8"></span><h2><a class="toc-backref" href="#contents">facter</a><a class="headerlink" href="#facter" title="Permalink to this headline"></a></h2>
<p>Runs the discovery program &#8216;facter&#8217; on the remote system, returning <p>Runs the discovery program &#8216;facter&#8217; on the remote system, returning
JSON data that can be useful for inventory purposes.</p> JSON data that can be useful for inventory purposes.</p>
<p>Requires that &#8216;facter&#8217; and &#8216;ruby-json&#8217; be installed on the remote end.</p> <p>Requires that &#8216;facter&#8217; and &#8216;ruby-json&#8217; be installed on the remote end.</p>
...@@ -635,7 +629,7 @@ module behind the scenes.</p> ...@@ -635,7 +629,7 @@ module behind the scenes.</p>
</div> </div>
</div> </div>
<div class="section" id="fetch"> <div class="section" id="fetch">
<span id="id9"></span><h2>fetch<a class="headerlink" href="#fetch" title="Permalink to this headline"></a></h2> <span id="id9"></span><h2><a class="toc-backref" href="#contents">fetch</a><a class="headerlink" href="#fetch" title="Permalink to this headline"></a></h2>
<p>This module works like &#8216;copy&#8217;, but in reverse. It is used for fetching files <p>This module works like &#8216;copy&#8217;, but in reverse. It is used for fetching files
from remote machines and storing them locally in a file tree, organized by hostname.</p> from remote machines and storing them locally in a file tree, organized by hostname.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
...@@ -673,7 +667,7 @@ be saved into &#8216;/foo/host.example.com/tmp/bar&#8217;</td> ...@@ -673,7 +667,7 @@ be saved into &#8216;/foo/host.example.com/tmp/bar&#8217;</td>
</div> </div>
</div> </div>
<div class="section" id="file"> <div class="section" id="file">
<span id="id10"></span><h2>file<a class="headerlink" href="#file" title="Permalink to this headline"></a></h2> <span id="id10"></span><h2><a class="toc-backref" href="#contents">file</a><a class="headerlink" href="#file" title="Permalink to this headline"></a></h2>
<p>Sets attributes of files, symlinks, and directories, or removes files/symlinks/directories. Many other modules <p>Sets attributes of files, symlinks, and directories, or removes files/symlinks/directories. Many other modules
support the same options as the file module &#8211; including &#8216;copy&#8217;, &#8216;template&#8217;, and &#8216;assmeble&#8217;.</p> support the same options as the file module &#8211; including &#8216;copy&#8217;, &#8216;template&#8217;, and &#8216;assmeble&#8217;.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
...@@ -771,7 +765,7 @@ file path=/some/path state=directory context=default</pre> ...@@ -771,7 +765,7 @@ file path=/some/path state=directory context=default</pre>
</div> </div>
</div> </div>
<div class="section" id="get-url"> <div class="section" id="get-url">
<span id="id11"></span><h2>get_url<a class="headerlink" href="#get-url" title="Permalink to this headline"></a></h2> <span id="id11"></span><h2><a class="toc-backref" href="#contents">get_url</a><a class="headerlink" href="#get-url" title="Permalink to this headline"></a></h2>
<p>Downloads files from http, https, or ftp to the remote server. The remote server must have direct <p>Downloads files from http, https, or ftp to the remote server. The remote server must have direct
access to the remote resource.</p> access to the remote resource.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
...@@ -821,7 +815,7 @@ small local files. prior to 0.6, acts if &#8216;yes&#8217; by default.</td> ...@@ -821,7 +815,7 @@ small local files. prior to 0.6, acts if &#8216;yes&#8217; by default.</td>
</div> </div>
</div> </div>
<div class="section" id="git"> <div class="section" id="git">
<span id="id12"></span><h2>git<a class="headerlink" href="#git" title="Permalink to this headline"></a></h2> <span id="id12"></span><h2><a class="toc-backref" href="#contents">git</a><a class="headerlink" href="#git" title="Permalink to this headline"></a></h2>
<p>Deploys software (or files) from git checkouts.</p> <p>Deploys software (or files) from git checkouts.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -872,7 +866,7 @@ discarded. Prior to 0.7, this was always &#8216;yes&#8217; and could not be dis ...@@ -872,7 +866,7 @@ discarded. Prior to 0.7, this was always &#8216;yes&#8217; and could not be dis
</div> </div>
</div> </div>
<div class="section" id="group"> <div class="section" id="group">
<span id="id13"></span><h2>group<a class="headerlink" href="#group" title="Permalink to this headline"></a></h2> <span id="id13"></span><h2><a class="toc-backref" href="#contents">group</a><a class="headerlink" href="#group" title="Permalink to this headline"></a></h2>
<p>Adds or removes groups.</p> <p>Adds or removes groups.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -917,7 +911,7 @@ discarded. Prior to 0.7, this was always &#8216;yes&#8217; and could not be dis ...@@ -917,7 +911,7 @@ discarded. Prior to 0.7, this was always &#8216;yes&#8217; and could not be dis
</div> </div>
</div> </div>
<div class="section" id="mount"> <div class="section" id="mount">
<span id="id14"></span><h2>mount<a class="headerlink" href="#mount" title="Permalink to this headline"></a></h2> <span id="id14"></span><h2><a class="toc-backref" href="#contents">mount</a><a class="headerlink" href="#mount" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>The mount module controls active and configured mount points (fstab).</p> <p>The mount module controls active and configured mount points (fstab).</p>
...@@ -977,7 +971,7 @@ configured in fstab. &#8216;absent&#8217;, and &#8216;present&#8217; only deal ...@@ -977,7 +971,7 @@ configured in fstab. &#8216;absent&#8217;, and &#8216;present&#8217; only deal
</table> </table>
</div> </div>
<div class="section" id="mysql-db"> <div class="section" id="mysql-db">
<span id="id15"></span><h2>mysql_db<a class="headerlink" href="#mysql-db" title="Permalink to this headline"></a></h2> <span id="id15"></span><h2><a class="toc-backref" href="#contents">mysql_db</a><a class="headerlink" href="#mysql-db" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>Add or remove MySQL databases from a remote host.</p> <p>Add or remove MySQL databases from a remote host.</p>
...@@ -1044,7 +1038,7 @@ finally fall back to using the MySQL default login of &#8216;root&#8217; with no ...@@ -1044,7 +1038,7 @@ finally fall back to using the MySQL default login of &#8216;root&#8217; with no
</div> </div>
</div> </div>
<div class="section" id="mysql-user"> <div class="section" id="mysql-user">
<span id="id16"></span><h2>mysql_user<a class="headerlink" href="#mysql-user" title="Permalink to this headline"></a></h2> <span id="id16"></span><h2><a class="toc-backref" href="#contents">mysql_user</a><a class="headerlink" href="#mysql-user" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>Adds or removes a user from a MySQL database.</p> <p>Adds or removes a user from a MySQL database.</p>
...@@ -1122,7 +1116,7 @@ finally fall back to using the MySQL default login of &#8216;root&#8217; with no ...@@ -1122,7 +1116,7 @@ finally fall back to using the MySQL default login of &#8216;root&#8217; with no
</div> </div>
</div> </div>
<div class="section" id="nagios"> <div class="section" id="nagios">
<span id="id17"></span><h2>nagios<a class="headerlink" href="#nagios" title="Permalink to this headline"></a></h2> <span id="id17"></span><h2><a class="toc-backref" href="#contents">nagios</a><a class="headerlink" href="#nagios" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Perform common tasks in Nagios related to downtime and notifications.</p> <p>Perform common tasks in Nagios related to downtime and notifications.</p>
...@@ -1294,7 +1288,7 @@ receive this error if that is the case:</p> ...@@ -1294,7 +1288,7 @@ receive this error if that is the case:</p>
</ol> </ol>
</div> </div>
<div class="section" id="ohai"> <div class="section" id="ohai">
<span id="id18"></span><h2>ohai<a class="headerlink" href="#ohai" title="Permalink to this headline"></a></h2> <span id="id18"></span><h2><a class="toc-backref" href="#contents">ohai</a><a class="headerlink" href="#ohai" title="Permalink to this headline"></a></h2>
<p>Similar to the <a class="reference internal" href="#facter"><em>facter</em></a> module, this returns JSON inventory data. <p>Similar to the <a class="reference internal" href="#facter"><em>facter</em></a> module, this returns JSON inventory data.
Ohai data is a bit more verbose and nested than facter.</p> Ohai data is a bit more verbose and nested than facter.</p>
<p>Requires that &#8216;ohai&#8217; be installed on the remote end.</p> <p>Requires that &#8216;ohai&#8217; be installed on the remote end.</p>
...@@ -1305,7 +1299,7 @@ Ohai data is a bit more verbose and nested than facter.</p> ...@@ -1305,7 +1299,7 @@ Ohai data is a bit more verbose and nested than facter.</p>
</div> </div>
</div> </div>
<div class="section" id="ping"> <div class="section" id="ping">
<span id="id19"></span><h2>ping<a class="headerlink" href="#ping" title="Permalink to this headline"></a></h2> <span id="id19"></span><h2><a class="toc-backref" href="#contents">ping</a><a class="headerlink" href="#ping" title="Permalink to this headline"></a></h2>
<p>A trivial test module, this module always returns &#8216;pong&#8217; on <p>A trivial test module, this module always returns &#8216;pong&#8217; on
successful contact. It does not make sense in playbooks, but is useful successful contact. It does not make sense in playbooks, but is useful
from /usr/bin/ansible:</p> from /usr/bin/ansible:</p>
...@@ -1313,7 +1307,7 @@ from /usr/bin/ansible:</p> ...@@ -1313,7 +1307,7 @@ from /usr/bin/ansible:</p>
</div> </div>
</div> </div>
<div class="section" id="pip"> <div class="section" id="pip">
<span id="id20"></span><h2>pip<a class="headerlink" href="#pip" title="Permalink to this headline"></a></h2> <span id="id20"></span><h2><a class="toc-backref" href="#contents">pip</a><a class="headerlink" href="#pip" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Manages Python library dependencies.</p> <p>Manages Python library dependencies.</p>
...@@ -1371,7 +1365,7 @@ pip requirements=/srv/webapps/my_app/src/requirements.txt virtualenv=/srv/webapp ...@@ -1371,7 +1365,7 @@ pip requirements=/srv/webapps/my_app/src/requirements.txt virtualenv=/srv/webapp
</div> </div>
</div> </div>
<div class="section" id="postgresql-db"> <div class="section" id="postgresql-db">
<span id="id22"></span><h2>postgresql_db<a class="headerlink" href="#postgresql-db" title="Permalink to this headline"></a></h2> <span id="id22"></span><h2><a class="toc-backref" href="#contents">postgresql_db</a><a class="headerlink" href="#postgresql-db" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>Add or remove PostgreSQL databases from a remote host.</p> <p>Add or remove PostgreSQL databases from a remote host.</p>
...@@ -1435,7 +1429,7 @@ host before using this module.</p> ...@@ -1435,7 +1429,7 @@ host before using this module.</p>
</div> </div>
</div> </div>
<div class="section" id="postgresql-user"> <div class="section" id="postgresql-user">
<span id="id23"></span><h2>postgresql_user<a class="headerlink" href="#postgresql-user" title="Permalink to this headline"></a></h2> <span id="id23"></span><h2><a class="toc-backref" href="#contents">postgresql_user</a><a class="headerlink" href="#postgresql-user" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>Add or remove PostgreSQL users (roles) from a remote host and, optionally, grant the users <p>Add or remove PostgreSQL users (roles) from a remote host and, optionally, grant the users
...@@ -1532,7 +1526,7 @@ happened and separately if the user was removed or not.</p> ...@@ -1532,7 +1526,7 @@ happened and separately if the user was removed or not.</p>
</div> </div>
</div> </div>
<div class="section" id="raw"> <div class="section" id="raw">
<span id="id24"></span><h2>raw<a class="headerlink" href="#raw" title="Permalink to this headline"></a></h2> <span id="id24"></span><h2><a class="toc-backref" href="#contents">raw</a><a class="headerlink" href="#raw" title="Permalink to this headline"></a></h2>
<p>Executes a low-down and dirty SSH command, not going through the module subsystem.</p> <p>Executes a low-down and dirty SSH command, not going through the module subsystem.</p>
<p>This is useful and should only be done in two cases. The first case is installing <p>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 python-simplejson on older (python 2.4 and before) hosts that need it as a dependency
...@@ -1547,7 +1541,7 @@ for this module.</p> ...@@ -1547,7 +1541,7 @@ for this module.</p>
</div> </div>
</div> </div>
<div class="section" id="service"> <div class="section" id="service">
<span id="id25"></span><h2>service<a class="headerlink" href="#service" title="Permalink to this headline"></a></h2> <span id="id25"></span><h2><a class="toc-backref" href="#contents">service</a><a class="headerlink" href="#service" title="Permalink to this headline"></a></h2>
<p>Controls services on remote machines.</p> <p>Controls services on remote machines.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -1600,7 +1594,7 @@ service name=foo pattern=/usr/bin/foo state=started</pre> ...@@ -1600,7 +1594,7 @@ service name=foo pattern=/usr/bin/foo state=started</pre>
</div> </div>
</div> </div>
<div class="section" id="setup"> <div class="section" id="setup">
<span id="id26"></span><h2>setup<a class="headerlink" href="#setup" title="Permalink to this headline"></a></h2> <span id="id26"></span><h2><a class="toc-backref" href="#contents">setup</a><a class="headerlink" href="#setup" title="Permalink to this headline"></a></h2>
<p>This module is automatically called by playbooks to gather useful variables about remote hosts that can be used <p>This module is automatically called by playbooks to gather useful variables about remote hosts that can be used
in playbooks. It can also be executed directly by /usr/bin/ansible to check what variables are available in playbooks. It can also be executed directly by /usr/bin/ansible to check what variables are available
to a host.</p> to a host.</p>
...@@ -1682,7 +1676,7 @@ on your remote systems.</p> ...@@ -1682,7 +1676,7 @@ on your remote systems.</p>
</div> </div>
</div> </div>
<div class="section" id="shell"> <div class="section" id="shell">
<span id="id27"></span><h2>shell<a class="headerlink" href="#shell" title="Permalink to this headline"></a></h2> <span id="id27"></span><h2><a class="toc-backref" href="#contents">shell</a><a class="headerlink" href="#shell" title="Permalink to this headline"></a></h2>
<p>The shell module takes the command name followed by a list of <p>The shell module takes the command name followed by a list of
arguments, space delimited. It is almost exactly like the command module arguments, space delimited. It is almost exactly like the command module
but runs the command through the user&#8217;s configured shell on the remote node.</p> but runs the command through the user&#8217;s configured shell on the remote node.</p>
...@@ -1732,7 +1726,7 @@ your best judgement.</p> ...@@ -1732,7 +1726,7 @@ your best judgement.</p>
</div> </div>
</div> </div>
<div class="section" id="subversion"> <div class="section" id="subversion">
<span id="id28"></span><h2>subversion<a class="headerlink" href="#subversion" title="Permalink to this headline"></a></h2> <span id="id28"></span><h2><a class="toc-backref" href="#contents">subversion</a><a class="headerlink" href="#subversion" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Deploys a subversion repository.</p> <p>Deploys a subversion repository.</p>
...@@ -1774,7 +1768,7 @@ discarded. If no, this module will fail if it encounters modified files.</td> ...@@ -1774,7 +1768,7 @@ discarded. If no, this module will fail if it encounters modified files.</td>
</div> </div>
</div> </div>
<div class="section" id="supervisorctl"> <div class="section" id="supervisorctl">
<span id="id29"></span><h2>supervisorctl<a class="headerlink" href="#supervisorctl" title="Permalink to this headline"></a></h2> <span id="id29"></span><h2><a class="toc-backref" href="#contents">supervisorctl</a><a class="headerlink" href="#supervisorctl" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Manage the state of a program or group of programs running via Supervisord</p> <p>Manage the state of a program or group of programs running via Supervisord</p>
...@@ -1810,7 +1804,7 @@ discarded. If no, this module will fail if it encounters modified files.</td> ...@@ -1810,7 +1804,7 @@ discarded. If no, this module will fail if it encounters modified files.</td>
</div> </div>
</div> </div>
<div class="section" id="template"> <div class="section" id="template">
<span id="id30"></span><h2>template<a class="headerlink" href="#template" title="Permalink to this headline"></a></h2> <span id="id30"></span><h2><a class="toc-backref" href="#contents">template</a><a class="headerlink" href="#template" title="Permalink to this headline"></a></h2>
<p>Templates a file out to a remote server.</p> <p>Templates a file out to a remote server.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -1850,7 +1844,7 @@ a relative or absolute path.</td> ...@@ -1850,7 +1844,7 @@ a relative or absolute path.</td>
</div> </div>
</div> </div>
<div class="section" id="user"> <div class="section" id="user">
<span id="id31"></span><h2>user<a class="headerlink" href="#user" title="Permalink to this headline"></a></h2> <span id="id31"></span><h2><a class="toc-backref" href="#contents">user</a><a class="headerlink" href="#user" title="Permalink to this headline"></a></h2>
<p>Creates user accounts, manipulates existing user accounts, and removes user accounts.</p> <p>Creates user accounts, manipulates existing user accounts, and removes user accounts.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -1949,7 +1943,7 @@ user name=mdehaan state=absent force=yes</pre> ...@@ -1949,7 +1943,7 @@ user name=mdehaan state=absent force=yes</pre>
</div> </div>
</div> </div>
<div class="section" id="virt"> <div class="section" id="virt">
<span id="id32"></span><h2>virt<a class="headerlink" href="#virt" title="Permalink to this headline"></a></h2> <span id="id32"></span><h2><a class="toc-backref" href="#contents">virt</a><a class="headerlink" href="#virt" title="Permalink to this headline"></a></h2>
<p>Manages virtual machines supported by libvirt. Requires that libvirt be installed <p>Manages virtual machines supported by libvirt. Requires that libvirt be installed
on the managed machine.</p> on the managed machine.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
...@@ -2009,7 +2003,7 @@ ansible host -m virt -a "command=virttype"</pre> ...@@ -2009,7 +2003,7 @@ ansible host -m virt -a "command=virttype"</pre>
</div> </div>
</div> </div>
<div class="section" id="yum"> <div class="section" id="yum">
<span id="id33"></span><h2>yum<a class="headerlink" href="#yum" title="Permalink to this headline"></a></h2> <span id="id33"></span><h2><a class="toc-backref" href="#contents">yum</a><a class="headerlink" href="#yum" title="Permalink to this headline"></a></h2>
<p>Will install, upgrade, remove, and list packages with the yum package manager.</p> <p>Will install, upgrade, remove, and list packages with the yum package manager.</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
...@@ -2051,11 +2045,11 @@ yum name=httpd state=installed</pre> ...@@ -2051,11 +2045,11 @@ yum name=httpd state=installed</pre>
</div> </div>
</div> </div>
<div class="section" id="additional-contrib-modules"> <div class="section" id="additional-contrib-modules">
<h2>Additional Contrib Modules<a class="headerlink" href="#additional-contrib-modules" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Additional Contrib Modules</a><a class="headerlink" href="#additional-contrib-modules" title="Permalink to this headline"></a></h2>
<p>In addition to the following built-in modules, community modules are available at <a class="reference external" href="http://github.com/ansible/ansible-resources">Ansible Resources</a>.</p> <p>In addition to the following built-in modules, community modules are available at <a class="reference external" href="http://github.com/ansible/ansible-resources">Ansible Resources</a>.</p>
</div> </div>
<div class="section" id="writing-your-own-modules"> <div class="section" id="writing-your-own-modules">
<h2>Writing your own modules<a class="headerlink" href="#writing-your-own-modules" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Writing your own modules</a><a class="headerlink" href="#writing-your-own-modules" title="Permalink to this headline"></a></h2>
<p>See <a class="reference internal" href="moduledev.html"><em>Module Development</em></a>.</p> <p>See <a class="reference internal" href="moduledev.html"><em>Module Development</em></a>.</p>
<div class="admonition-see-also admonition seealso"> <div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p> <p class="first admonition-title">See also</p>
......
...@@ -184,12 +184,27 @@ s.parentNode.insertBefore(ga, s); ...@@ -184,12 +184,27 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="inventory-patterns"> <div class="section" id="inventory-patterns">
<span id="patterns"></span><h1>Inventory &amp; Patterns<a class="headerlink" href="#inventory-patterns" title="Permalink to this headline"></a></h1> <span id="patterns"></span><h1><a class="toc-backref" href="#table-of-contents">Inventory &amp; Patterns</a><a class="headerlink" href="#inventory-patterns" title="Permalink to this headline"></a></h1>
<p>Ansible works against multiple systems in your infrastructure at the <p>Ansible works against multiple systems in your infrastructure at the
same time. It does this by selecting portions of systems listed in same time. It does this by selecting portions of systems listed in
Ansible&#8217;s inventory file, which defaults to /etc/ansible/hosts.</p> Ansible&#8217;s inventory file, which defaults to /etc/ansible/hosts.</p>
<div class="contents topic" id="table-of-contents">
<p class="topic-title first"><cite>Table of contents</cite></p>
<ul class="simple">
<li><a class="reference internal" href="#inventory-patterns" id="id1">Inventory &amp; Patterns</a><ul>
<li><a class="reference internal" href="#hosts-and-groups" id="id2">Hosts and Groups</a></li>
<li><a class="reference internal" href="#selecting-targets" id="id3">Selecting Targets</a></li>
<li><a class="reference internal" href="#host-variables" id="id4">Host Variables</a></li>
<li><a class="reference internal" href="#group-variables" id="id5">Group Variables</a></li>
<li><a class="reference internal" href="#groups-of-groups-and-group-variables" id="id6">Groups of Groups, and Group Variables</a></li>
<li><a class="reference internal" href="#splitting-out-host-and-group-specific-data" id="id7">Splitting Out Host and Group Specific Data</a></li>
<li><a class="reference internal" href="#yaml-inventory" id="id8">YAML Inventory</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="hosts-and-groups"> <div class="section" id="hosts-and-groups">
<span id="inventoryformat"></span><h2>Hosts and Groups<a class="headerlink" href="#hosts-and-groups" title="Permalink to this headline"></a></h2> <span id="inventoryformat"></span><h2><a class="toc-backref" href="#table-of-contents">Hosts and Groups</a><a class="headerlink" href="#hosts-and-groups" title="Permalink to this headline"></a></h2>
<p>The format for /etc/ansible/hosts is an INI format and looks like this:</p> <p>The format for /etc/ansible/hosts is an INI format and looks like this:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">mail</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span> <div class="highlight-python"><div class="highlight"><pre><span class="n">mail</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span>
...@@ -217,7 +232,7 @@ after the hostname with a colon.</p> ...@@ -217,7 +232,7 @@ after the hostname with a colon.</p>
<p>Leading zeros can be included or removed, as desired, and the ranges are inclusive.</p> <p>Leading zeros can be included or removed, as desired, and the ranges are inclusive.</p>
</div> </div>
<div class="section" id="selecting-targets"> <div class="section" id="selecting-targets">
<h2>Selecting Targets<a class="headerlink" href="#selecting-targets" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">Selecting Targets</a><a class="headerlink" href="#selecting-targets" title="Permalink to this headline"></a></h2>
<p>We&#8217;ll go over how to use the command line in <a class="reference internal" href="examples.html"><em>Command Line Examples And Next Steps</em></a> section, however, basically it looks like this:</p> <p>We&#8217;ll go over how to use the command line in <a class="reference internal" href="examples.html"><em>Command Line Examples And Next Steps</em></a> section, however, basically it looks like this:</p>
<div class="highlight-python"><pre>ansible &lt;pattern_goes_here&gt; -m &lt;module_name&gt; -a &lt;arguments&gt;</pre> <div class="highlight-python"><pre>ansible &lt;pattern_goes_here&gt; -m &lt;module_name&gt; -a &lt;arguments&gt;</pre>
</div> </div>
...@@ -256,7 +271,7 @@ wildcards:</p> ...@@ -256,7 +271,7 @@ wildcards:</p>
<p>Easy enough. See <a class="reference internal" href="examples.html"><em>Command Line Examples And Next Steps</em></a> and then <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a> for how to do things to selected hosts.</p> <p>Easy enough. See <a class="reference internal" href="examples.html"><em>Command Line Examples And Next Steps</em></a> and then <a class="reference internal" href="playbooks.html"><em>Playbooks</em></a> for how to do things to selected hosts.</p>
</div> </div>
<div class="section" id="host-variables"> <div class="section" id="host-variables">
<h2>Host Variables<a class="headerlink" href="#host-variables" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">Host Variables</a><a class="headerlink" href="#host-variables" title="Permalink to this headline"></a></h2>
<p>It is easy to assign variables to hosts that will be used later in playbooks:</p> <p>It is easy to assign variables to hosts that will be used later in playbooks:</p>
<div class="highlight-python"><pre>[atlanta] <div class="highlight-python"><pre>[atlanta]
host1 http_port=80 maxRequestsPerChild=808 host1 http_port=80 maxRequestsPerChild=808
...@@ -264,7 +279,7 @@ host2 http_port=303 maxRequestsPerChild=909</pre> ...@@ -264,7 +279,7 @@ host2 http_port=303 maxRequestsPerChild=909</pre>
</div> </div>
</div> </div>
<div class="section" id="group-variables"> <div class="section" id="group-variables">
<h2>Group Variables<a class="headerlink" href="#group-variables" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">Group Variables</a><a class="headerlink" href="#group-variables" title="Permalink to this headline"></a></h2>
<p>Variables can also be applied to an entire group at once:</p> <p>Variables can also be applied to an entire group at once:</p>
<div class="highlight-python"><pre>[atlanta] <div class="highlight-python"><pre>[atlanta]
host1 host1
...@@ -276,7 +291,7 @@ proxy=proxy.atlanta.example.com</pre> ...@@ -276,7 +291,7 @@ proxy=proxy.atlanta.example.com</pre>
</div> </div>
</div> </div>
<div class="section" id="groups-of-groups-and-group-variables"> <div class="section" id="groups-of-groups-and-group-variables">
<h2>Groups of Groups, and Group Variables<a class="headerlink" href="#groups-of-groups-and-group-variables" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">Groups of Groups, and Group Variables</a><a class="headerlink" href="#groups-of-groups-and-group-variables" title="Permalink to this headline"></a></h2>
<p>It is also possible to make groups of groups and assign <p>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 variables to groups. These variables can be used by /usr/bin/ansible-playbook, but not
/usr/bin/ansible:</p> /usr/bin/ansible:</p>
...@@ -308,7 +323,7 @@ southeast</pre> ...@@ -308,7 +323,7 @@ southeast</pre>
seperate from the inventory file, see the next section.</p> seperate from the inventory file, see the next section.</p>
</div> </div>
<div class="section" id="splitting-out-host-and-group-specific-data"> <div class="section" id="splitting-out-host-and-group-specific-data">
<h2>Splitting Out Host and Group Specific Data<a class="headerlink" href="#splitting-out-host-and-group-specific-data" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">Splitting Out Host and Group Specific Data</a><a class="headerlink" href="#splitting-out-host-and-group-specific-data" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>In addition to the storing variables directly in the INI file, host <p>In addition to the storing variables directly in the INI file, host
...@@ -339,7 +354,7 @@ variable called &#8216;ansible_python_interpreter&#8217; to the Python ...@@ -339,7 +354,7 @@ variable called &#8216;ansible_python_interpreter&#8217; to the Python
interpreter path you would like to use.</p> interpreter path you would like to use.</p>
</div> </div>
<div class="section" id="yaml-inventory"> <div class="section" id="yaml-inventory">
<h2>YAML Inventory<a class="headerlink" href="#yaml-inventory" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#table-of-contents">YAML Inventory</a><a class="headerlink" href="#yaml-inventory" title="Permalink to this headline"></a></h2>
<p class="deprecated"> <p class="deprecated">
<span class="versionmodified">Deprecated since version 0.7.</span></p> <span class="versionmodified">Deprecated since version 0.7.</span></p>
<p>Ansible&#8217;s YAML inventory format is deprecated and will be removed in <p>Ansible&#8217;s YAML inventory format is deprecated and will be removed in
......
...@@ -149,6 +149,7 @@ s.parentNode.insertBefore(ga, s); ...@@ -149,6 +149,7 @@ s.parentNode.insertBefore(ga, s);
class="dropdown-toggle">Page</a> class="dropdown-toggle">Page</a>
<span class="localtoc"><ul> <span class="localtoc"><ul>
<li><a class="reference internal" href="#">Playbooks</a><ul> <li><a class="reference internal" href="#">Playbooks</a><ul>
<li><a class="reference internal" href="#introduction">Introduction</a></li>
<li><a class="reference internal" href="#playbook-language-example">Playbook Language Example</a></li> <li><a class="reference internal" href="#playbook-language-example">Playbook Language Example</a></li>
<li><a class="reference internal" href="#basics">Basics</a><ul> <li><a class="reference internal" href="#basics">Basics</a><ul>
<li><a class="reference internal" href="#hosts-and-users">Hosts and Users</a></li> <li><a class="reference internal" href="#hosts-and-users">Hosts and Users</a></li>
...@@ -188,7 +189,24 @@ s.parentNode.insertBefore(ga, s); ...@@ -188,7 +189,24 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="playbooks"> <div class="section" id="playbooks">
<h1>Playbooks<a class="headerlink" href="#playbooks" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Playbooks</a><a class="headerlink" href="#playbooks" title="Permalink to this headline"></a></h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#playbooks" id="id2">Playbooks</a><ul>
<li><a class="reference internal" href="#introduction" id="id3">Introduction</a></li>
<li><a class="reference internal" href="#playbook-language-example" id="id4">Playbook Language Example</a></li>
<li><a class="reference internal" href="#basics" id="id5">Basics</a></li>
<li><a class="reference internal" href="#running-operations-on-change" id="id6">Running Operations On Change</a></li>
<li><a class="reference internal" href="#include-files-and-encouraging-reuse" id="id7">Include Files And Encouraging Reuse</a></li>
<li><a class="reference internal" href="#executing-a-playbook" id="id8">Executing A Playbook</a></li>
<li><a class="reference internal" href="#tips-and-tricks" id="id9">Tips and Tricks</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="introduction">
<h2><a class="toc-backref" href="#contents">Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h2>
<p>Playbooks are a completely different way to use ansible than in task execution mode, and are <p>Playbooks are a completely different way to use ansible than in task execution mode, and are
particularly powerful. Simply put, playbooks are the basis for a really simple particularly powerful. Simply put, playbooks are the basis for a really simple
configuration management and multi-machine deployment system, configuration management and multi-machine deployment system,
...@@ -204,8 +222,9 @@ remote systems are in spec.</p> ...@@ -204,8 +222,9 @@ remote systems are in spec.</p>
<p>Let&#8217;s dive in and see how they work. As you go, you may wish to open <p>Let&#8217;s dive in and see how they work. As you go, you may wish to open
the <a class="reference external" href="https://github.com/ansible/ansible/tree/devel/examples/playbooks">github examples directory</a> in the <a class="reference external" href="https://github.com/ansible/ansible/tree/devel/examples/playbooks">github examples directory</a> in
another tab, so you can apply the theory to what things look like in practice.</p> another tab, so you can apply the theory to what things look like in practice.</p>
</div>
<div class="section" id="playbook-language-example"> <div class="section" id="playbook-language-example">
<h2>Playbook Language Example<a class="headerlink" href="#playbook-language-example" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Playbook Language Example</a><a class="headerlink" href="#playbook-language-example" title="Permalink to this headline"></a></h2>
<p>Playbooks are expressed in YAML format and have a minimum of syntax. <p>Playbooks are expressed in YAML format and have a minimum of syntax.
Each playbook is composed of one or more &#8216;plays&#8217; in a list.</p> Each playbook is composed of one or more &#8216;plays&#8217; in a list.</p>
<p>The goal of a play is map a group of hosts to some well defined roles, represented by <p>The goal of a play is map a group of hosts to some well defined roles, represented by
...@@ -238,7 +257,7 @@ server group, then more commands back on the webservers group, etc.</p> ...@@ -238,7 +257,7 @@ server group, then more commands back on the webservers group, etc.</p>
<p>Below, we&#8217;ll break down what the various features of the playbook language are.</p> <p>Below, we&#8217;ll break down what the various features of the playbook language are.</p>
</div> </div>
<div class="section" id="basics"> <div class="section" id="basics">
<h2>Basics<a class="headerlink" href="#basics" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Basics</a><a class="headerlink" href="#basics" title="Permalink to this headline"></a></h2>
<div class="section" id="hosts-and-users"> <div class="section" id="hosts-and-users">
<h3>Hosts and Users<a class="headerlink" href="#hosts-and-users" title="Permalink to this headline"></a></h3> <h3>Hosts and Users<a class="headerlink" href="#hosts-and-users" title="Permalink to this headline"></a></h3>
<p>For each play in a playbook, you get to choose which machines in your infrastructure <p>For each play in a playbook, you get to choose which machines in your infrastructure
...@@ -378,7 +397,7 @@ make more sense to break up tasks using the &#8216;include:&#8217; directive. W ...@@ -378,7 +397,7 @@ make more sense to break up tasks using the &#8216;include:&#8217; directive. W
</div> </div>
</div> </div>
<div class="section" id="running-operations-on-change"> <div class="section" id="running-operations-on-change">
<h2>Running Operations On Change<a class="headerlink" href="#running-operations-on-change" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Running Operations On Change</a><a class="headerlink" href="#running-operations-on-change" title="Permalink to this headline"></a></h2>
<p>As we&#8217;ve mentioned, modules are written to be &#8216;idempotent&#8217; and can relay when <p>As we&#8217;ve mentioned, modules are written to be &#8216;idempotent&#8217; and can relay when
they have made a change on the remote system. Playbooks recognize this and 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.</p> have a basic event system that can be used to respond to change.</p>
...@@ -415,7 +434,7 @@ won&#8217;t need them for much else.</p> ...@@ -415,7 +434,7 @@ won&#8217;t need them for much else.</p>
</div> </div>
</div> </div>
<div class="section" id="include-files-and-encouraging-reuse"> <div class="section" id="include-files-and-encouraging-reuse">
<h2>Include Files And Encouraging Reuse<a class="headerlink" href="#include-files-and-encouraging-reuse" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Include Files And Encouraging Reuse</a><a class="headerlink" href="#include-files-and-encouraging-reuse" title="Permalink to this headline"></a></h2>
<p>Suppose you want to reuse lists of tasks between plays or playbooks. You can use <p>Suppose you want to reuse lists of tasks between plays or playbooks. You can use
include files to do this. Use of included task lists is a great way to define a role 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 that system is going to fulfill. Remember, the goal of a play in a playbook is to map
...@@ -477,14 +496,14 @@ ability for hosts to conditionally skip tasks).</p> ...@@ -477,14 +496,14 @@ ability for hosts to conditionally skip tasks).</p>
</div> </div>
</div> </div>
<div class="section" id="executing-a-playbook"> <div class="section" id="executing-a-playbook">
<h2>Executing A Playbook<a class="headerlink" href="#executing-a-playbook" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Executing A Playbook</a><a class="headerlink" href="#executing-a-playbook" title="Permalink to this headline"></a></h2>
<p>Now that you&#8217;ve learned playbook syntax, how do you run a playbook? It&#8217;s simple. <p>Now that you&#8217;ve learned playbook syntax, how do you run a playbook? It&#8217;s simple.
Let&#8217;s run a playbook using a parallelism level of 10:</p> Let&#8217;s run a playbook using a parallelism level of 10:</p>
<div class="highlight-python"><pre>ansible-playbook playbook.yml -f 10</pre> <div class="highlight-python"><pre>ansible-playbook playbook.yml -f 10</pre>
</div> </div>
</div> </div>
<div class="section" id="tips-and-tricks"> <div class="section" id="tips-and-tricks">
<h2>Tips and Tricks<a class="headerlink" href="#tips-and-tricks" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Tips and Tricks</a><a class="headerlink" href="#tips-and-tricks" title="Permalink to this headline"></a></h2>
<p>Look at the bottom of the playbook execution for a summary of the nodes that were executed <p>Look at the bottom of the playbook execution for a summary of the nodes that were executed
and how they performed. General failures and fatal &#8220;unreachable&#8221; communication attempts are and how they performed. General failures and fatal &#8220;unreachable&#8221; communication attempts are
kept seperate in the counts.</p> kept seperate in the counts.</p>
......
...@@ -198,13 +198,42 @@ s.parentNode.insertBefore(ga, s); ...@@ -198,13 +198,42 @@ s.parentNode.insertBefore(ga, s);
<br/> <br/>
<div class="section" id="advanced-playbooks"> <div class="section" id="advanced-playbooks">
<h1>Advanced Playbooks<a class="headerlink" href="#advanced-playbooks" title="Permalink to this headline"></a></h1> <h1><a class="toc-backref" href="#contents">Advanced Playbooks</a><a class="headerlink" href="#advanced-playbooks" title="Permalink to this headline"></a></h1>
<p>Here are some advanced features of the playbooks language. Using all of these features <p>Here are some advanced features of the playbooks language. Using all of these features
are not neccessary, but many of them will prove useful. If a feature doesn&#8217;t seem immediately are not neccessary, but many of them will prove useful. If a feature doesn&#8217;t seem immediately
relevant, feel free to skip it. For many people, the features documented in <cite>playbooks</cite> will relevant, feel free to skip it. For many people, the features documented in <cite>playbooks</cite> will
be 90% or more of what they use in Ansible.</p> be 90% or more of what they use in Ansible.</p>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#advanced-playbooks" id="id1">Advanced Playbooks</a><ul>
<li><a class="reference internal" href="#tags" id="id2">Tags</a></li>
<li><a class="reference internal" href="#playbooks-including-playbooks" id="id3">Playbooks Including Playbooks</a></li>
<li><a class="reference internal" href="#ignoring-failed-commands" id="id4">Ignoring Failed Commands</a></li>
<li><a class="reference internal" href="#accessing-complex-variable-data" id="id5">Accessing Complex Variable Data</a></li>
<li><a class="reference internal" href="#accessing-information-about-other-hosts" id="id6">Accessing Information About Other Hosts</a></li>
<li><a class="reference internal" href="#variable-file-seperation" id="id7">Variable File Seperation</a></li>
<li><a class="reference internal" href="#prompting-for-sensitive-data" id="id8">Prompting For Sensitive Data</a></li>
<li><a class="reference internal" href="#passing-variables-on-the-command-line" id="id9">Passing Variables On The Command Line</a></li>
<li><a class="reference internal" href="#conditional-execution" id="id10">Conditional Execution</a></li>
<li><a class="reference internal" href="#conditional-imports" id="id11">Conditional Imports</a></li>
<li><a class="reference internal" href="#loop-shorthand" id="id12">Loop Shorthand</a></li>
<li><a class="reference internal" href="#selecting-files-and-templates-based-on-variables" id="id13">Selecting Files And Templates Based On Variables</a></li>
<li><a class="reference internal" href="#asynchronous-actions-and-polling" id="id14">Asynchronous Actions and Polling</a></li>
<li><a class="reference internal" href="#local-playbooks" id="id15">Local Playbooks</a></li>
<li><a class="reference internal" href="#turning-off-facts" id="id16">Turning Off Facts</a></li>
<li><a class="reference internal" href="#pull-mode-playbooks" id="id17">Pull-Mode Playbooks</a></li>
<li><a class="reference internal" href="#register-variables" id="id18">Register Variables</a></li>
<li><a class="reference internal" href="#rolling-updates" id="id19">Rolling Updates</a></li>
<li><a class="reference internal" href="#delegation" id="id20">Delegation</a></li>
<li><a class="reference internal" href="#understanding-variable-precedence" id="id21">Understanding Variable Precedence</a></li>
<li><a class="reference internal" href="#style-points" id="id22">Style Points</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="tags"> <div class="section" id="tags">
<h2>Tags<a class="headerlink" href="#tags" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Tags</a><a class="headerlink" href="#tags" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>If you have a large playbook it may become useful to be able to run a <p>If you have a large playbook it may become useful to be able to run a
...@@ -229,7 +258,7 @@ specific part of the configuration. Both plays and tasks support a ...@@ -229,7 +258,7 @@ specific part of the configuration. Both plays and tasks support a
</div> </div>
</div> </div>
<div class="section" id="playbooks-including-playbooks"> <div class="section" id="playbooks-including-playbooks">
<h2>Playbooks Including Playbooks<a class="headerlink" href="#playbooks-including-playbooks" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Playbooks Including Playbooks</a><a class="headerlink" href="#playbooks-including-playbooks" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.6.</span></p> <span class="versionmodified">New in version 0.6.</span></p>
<p>To further advance the concept of include files, playbook files can <p>To further advance the concept of include files, playbook files can
...@@ -245,7 +274,7 @@ all of your systems like this:</p> ...@@ -245,7 +274,7 @@ all of your systems like this:</p>
what parts of those plays.</p> what parts of those plays.</p>
</div> </div>
<div class="section" id="ignoring-failed-commands"> <div class="section" id="ignoring-failed-commands">
<h2>Ignoring Failed Commands<a class="headerlink" href="#ignoring-failed-commands" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Ignoring Failed Commands</a><a class="headerlink" href="#ignoring-failed-commands" title="Permalink to this headline"></a></h2>
<p class="deprecated"> <p class="deprecated">
<span class="versionmodified">Deprecated since version 0.6.</span></p> <span class="versionmodified">Deprecated since version 0.6.</span></p>
<p>Generally playbooks will stop executing any more steps on a host that <p>Generally playbooks will stop executing any more steps on a host that
...@@ -257,7 +286,7 @@ write a task that looks like this:</p> ...@@ -257,7 +286,7 @@ write a task that looks like this:</p>
</div> </div>
</div> </div>
<div class="section" id="accessing-complex-variable-data"> <div class="section" id="accessing-complex-variable-data">
<h2>Accessing Complex Variable Data<a class="headerlink" href="#accessing-complex-variable-data" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Accessing Complex Variable Data</a><a class="headerlink" href="#accessing-complex-variable-data" title="Permalink to this headline"></a></h2>
<p>Some provided facts, like networking information, are made available as nested data structures. To access <p>Some provided facts, like networking information, are made available as nested data structures. To access
them a simple &#8216;$foo&#8217; is not sufficient, but it is still easy to do. Here&#8217;s how we get an IP address:</p> them a simple &#8216;$foo&#8217; is not sufficient, but it is still easy to do. Here&#8217;s how we get an IP address:</p>
<div class="highlight-python"><pre>${ansible_eth0.ipv4.address}</pre> <div class="highlight-python"><pre>${ansible_eth0.ipv4.address}</pre>
...@@ -272,7 +301,7 @@ that is preferred:</p> ...@@ -272,7 +301,7 @@ that is preferred:</p>
</div> </div>
</div> </div>
<div class="section" id="accessing-information-about-other-hosts"> <div class="section" id="accessing-information-about-other-hosts">
<h2>Accessing Information About Other Hosts<a class="headerlink" href="#accessing-information-about-other-hosts" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Accessing Information About Other Hosts</a><a class="headerlink" href="#accessing-information-about-other-hosts" title="Permalink to this headline"></a></h2>
<p>If your database server wants to check the value of a &#8216;fact&#8217; from another node, or an inventory variable <p>If your database server wants to check the value of a &#8216;fact&#8217; from another node, or an inventory variable
assigned to another node, it&#8217;s easy to do so within a template or even an action line:</p> assigned to another node, it&#8217;s easy to do so within a template or even an action line:</p>
<div class="highlight-python"><pre>${hostvars.hostname.factname}</pre> <div class="highlight-python"><pre>${hostvars.hostname.factname}</pre>
...@@ -302,7 +331,7 @@ period.</p> ...@@ -302,7 +331,7 @@ period.</p>
<p>Don&#8217;t worry about any of this unless you think you need it. You&#8217;ll know when you do.</p> <p>Don&#8217;t worry about any of this unless you think you need it. You&#8217;ll know when you do.</p>
</div> </div>
<div class="section" id="variable-file-seperation"> <div class="section" id="variable-file-seperation">
<h2>Variable File Seperation<a class="headerlink" href="#variable-file-seperation" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Variable File Seperation</a><a class="headerlink" href="#variable-file-seperation" title="Permalink to this headline"></a></h2>
<p>It&#8217;s a great idea to keep your playbooks under source control, but <p>It&#8217;s a great idea to keep your playbooks under source control, but
you may wish to make the playbook source public while keeping certain you may wish to make the playbook source public while keeping certain
important variables private. Similarly, sometimes you may just important variables private. Similarly, sometimes you may just
...@@ -335,7 +364,7 @@ similar files, this is covered in <a class="reference internal" href="patterns.h ...@@ -335,7 +364,7 @@ similar files, this is covered in <a class="reference internal" href="patterns.h
</div> </div>
</div> </div>
<div class="section" id="prompting-for-sensitive-data"> <div class="section" id="prompting-for-sensitive-data">
<h2>Prompting For Sensitive Data<a class="headerlink" href="#prompting-for-sensitive-data" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Prompting For Sensitive Data</a><a class="headerlink" href="#prompting-for-sensitive-data" title="Permalink to this headline"></a></h2>
<p>You may wish to prompt the user for certain input, and can <p>You may wish to prompt the user for certain input, and can
do so with the similarly named &#8216;vars_prompt&#8217; section. This has uses do so with the similarly named &#8216;vars_prompt&#8217; section. This has uses
beyond security, for instance, you may use the same playbook for all beyond security, for instance, you may use the same playbook for all
...@@ -364,7 +393,7 @@ some other options, but otherwise works equivalently:</p> ...@@ -364,7 +393,7 @@ some other options, but otherwise works equivalently:</p>
</div> </div>
</div> </div>
<div class="section" id="passing-variables-on-the-command-line"> <div class="section" id="passing-variables-on-the-command-line">
<h2>Passing Variables On The Command Line<a class="headerlink" href="#passing-variables-on-the-command-line" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Passing Variables On The Command Line</a><a class="headerlink" href="#passing-variables-on-the-command-line" title="Permalink to this headline"></a></h2>
<p>In addition to <cite>vars_prompt</cite> and <cite>vars_files</cite>, it is possible to send variables over <p>In addition to <cite>vars_prompt</cite> and <cite>vars_files</cite>, it is possible to send variables over
the ansible command line. This is particularly useful when writing a generic release playbook 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:</p> where you may want to pass in the version of the application to deploy:</p>
...@@ -382,7 +411,7 @@ ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"</pre> ...@@ -382,7 +411,7 @@ ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"</pre>
</div> </div>
</div> </div>
<div class="section" id="conditional-execution"> <div class="section" id="conditional-execution">
<h2>Conditional Execution<a class="headerlink" href="#conditional-execution" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Conditional Execution</a><a class="headerlink" href="#conditional-execution" title="Permalink to this headline"></a></h2>
<p>Sometimes you will want to skip a particular step on a particular host. This could be something <p>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, 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.</p> or it could be something like performing some cleanup steps if a filesystem is getting full.</p>
...@@ -417,7 +446,7 @@ there will be accessible to future tasks:</p> ...@@ -417,7 +446,7 @@ there will be accessible to future tasks:</p>
</div> </div>
</div> </div>
<div class="section" id="conditional-imports"> <div class="section" id="conditional-imports">
<h2>Conditional Imports<a class="headerlink" href="#conditional-imports" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Conditional Imports</a><a class="headerlink" href="#conditional-imports" title="Permalink to this headline"></a></h2>
<p>Sometimes you will want to do certain things differently in a playbook based on certain criteria. <p>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.</p> Having one playbook that works on multiple platforms and OS versions is a good example.</p>
<p>As an example, the name of the Apache package may be different between CentOS and Debian, <p>As an example, the name of the Apache package may be different between CentOS and Debian,
...@@ -463,7 +492,7 @@ in more streamlined &amp; auditable configuration rules &#8211; especially becau ...@@ -463,7 +492,7 @@ in more streamlined &amp; auditable configuration rules &#8211; especially becau
minimum of decision points to track.</p> minimum of decision points to track.</p>
</div> </div>
<div class="section" id="loop-shorthand"> <div class="section" id="loop-shorthand">
<h2>Loop Shorthand<a class="headerlink" href="#loop-shorthand" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Loop Shorthand</a><a class="headerlink" href="#loop-shorthand" title="Permalink to this headline"></a></h2>
<p>To save some typing, repeated tasks can be written in short-hand like so:</p> <p>To save some typing, repeated tasks can be written in short-hand like so:</p>
<div class="highlight-python"><pre>- name: add user $item <div class="highlight-python"><pre>- name: add user $item
action: user name=$item state=present groups=wheel action: user name=$item state=present groups=wheel
...@@ -484,7 +513,7 @@ minimum of decision points to track.</p> ...@@ -484,7 +513,7 @@ minimum of decision points to track.</p>
manager transactions.</p> manager transactions.</p>
</div> </div>
<div class="section" id="selecting-files-and-templates-based-on-variables"> <div class="section" id="selecting-files-and-templates-based-on-variables">
<h2>Selecting Files And Templates Based On Variables<a class="headerlink" href="#selecting-files-and-templates-based-on-variables" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Selecting Files And Templates Based On Variables</a><a class="headerlink" href="#selecting-files-and-templates-based-on-variables" title="Permalink to this headline"></a></h2>
<p>Sometimes a configuration file you want to copy, or a template you will use may depend on a variable. <p>Sometimes a configuration file you want to copy, or a template you will use may depend on a variable.
The following construct 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.</p> which is often much cleaner than putting a lot of if conditionals in a template.</p>
...@@ -498,7 +527,7 @@ CentOS and Debian:</p> ...@@ -498,7 +527,7 @@ CentOS and Debian:</p>
</div> </div>
</div> </div>
<div class="section" id="asynchronous-actions-and-polling"> <div class="section" id="asynchronous-actions-and-polling">
<h2>Asynchronous Actions and Polling<a class="headerlink" href="#asynchronous-actions-and-polling" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Asynchronous Actions and Polling</a><a class="headerlink" href="#asynchronous-actions-and-polling" title="Permalink to this headline"></a></h2>
<p>By default tasks in playbooks block, meaning the connections stay open <p>By default tasks in playbooks block, meaning the connections stay open
until the task is done on each node. If executing playbooks with until the task is done on each node. If executing playbooks with
a small parallelism value (aka <tt class="docutils literal"><span class="pre">--forks</span></tt>), you may wish that long a small parallelism value (aka <tt class="docutils literal"><span class="pre">--forks</span></tt>), you may wish that long
...@@ -548,7 +577,7 @@ tasks even faster. This also increases the efficiency of polling.</p> ...@@ -548,7 +577,7 @@ tasks even faster. This also increases the efficiency of polling.</p>
</div> </div>
</div> </div>
<div class="section" id="local-playbooks"> <div class="section" id="local-playbooks">
<h2>Local Playbooks<a class="headerlink" href="#local-playbooks" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Local Playbooks</a><a class="headerlink" href="#local-playbooks" title="Permalink to this headline"></a></h2>
<p>It may be useful to use a playbook locally, rather than by connecting over SSH. This can be useful <p>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 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.</p> to run a playbook inside a OS installer, such as an Anaconda kickstart.</p>
...@@ -562,7 +591,7 @@ connection: local</pre> ...@@ -562,7 +591,7 @@ connection: local</pre>
</div> </div>
</div> </div>
<div class="section" id="turning-off-facts"> <div class="section" id="turning-off-facts">
<h2>Turning Off Facts<a class="headerlink" href="#turning-off-facts" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Turning Off Facts</a><a class="headerlink" href="#turning-off-facts" title="Permalink to this headline"></a></h2>
<p>If you know you don&#8217;t need any fact data about your hosts, and know everything about your systems centrally, you <p>If you know you don&#8217;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 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:</p> systems, mainly, or if you are using Ansible on experimental platforms. In any play, just do this:</p>
...@@ -571,7 +600,7 @@ systems, mainly, or if you are using Ansible on experimental platforms. In any ...@@ -571,7 +600,7 @@ systems, mainly, or if you are using Ansible on experimental platforms. In any
</div> </div>
</div> </div>
<div class="section" id="pull-mode-playbooks"> <div class="section" id="pull-mode-playbooks">
<h2>Pull-Mode Playbooks<a class="headerlink" href="#pull-mode-playbooks" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Pull-Mode Playbooks</a><a class="headerlink" href="#pull-mode-playbooks" title="Permalink to this headline"></a></h2>
<p>The use of playbooks in local mode (above) is made extremely powerful with the addition of <cite>ansible-pull</cite>. <p>The use of playbooks in local mode (above) is made extremely powerful with the addition of <cite>ansible-pull</cite>.
A script for setting up ansible-pull is provided in the examples/playbooks directory of the source A script for setting up ansible-pull is provided in the examples/playbooks directory of the source
checkout.</p> checkout.</p>
...@@ -583,7 +612,7 @@ the cron frequency, logging locations, and parameters to ansible-pull.</p> ...@@ -583,7 +612,7 @@ the cron frequency, logging locations, and parameters to ansible-pull.</p>
logs from ansible-pull runs would be an excellent way to gather and analyze remote logs from ansible-pull.</p> logs from ansible-pull runs would be an excellent way to gather and analyze remote logs from ansible-pull.</p>
</div> </div>
<div class="section" id="register-variables"> <div class="section" id="register-variables">
<h2>Register Variables<a class="headerlink" href="#register-variables" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Register Variables</a><a class="headerlink" href="#register-variables" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>Often in a playbook it may be useful to store the result of a given command in a variable and access <p>Often in a playbook it may be useful to store the result of a given command in a variable and access
...@@ -603,7 +632,7 @@ instance, you could test for the existance of a particular program.</p> ...@@ -603,7 +632,7 @@ instance, you could test for the existance of a particular program.</p>
</div> </div>
</div> </div>
<div class="section" id="rolling-updates"> <div class="section" id="rolling-updates">
<h2>Rolling Updates<a class="headerlink" href="#rolling-updates" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Rolling Updates</a><a class="headerlink" href="#rolling-updates" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>By default ansible will try to manage all of the machines referenced in a play in parallel. For a rolling updates <p>By default ansible will try to manage all of the machines referenced in a play in parallel. For a rolling updates
...@@ -616,7 +645,7 @@ use case, you can define how many hosts ansible should manage at a single time b ...@@ -616,7 +645,7 @@ use case, you can define how many hosts ansible should manage at a single time b
would complete the play completely before moving on to the next 3 hosts.</p> would complete the play completely before moving on to the next 3 hosts.</p>
</div> </div>
<div class="section" id="delegation"> <div class="section" id="delegation">
<h2>Delegation<a class="headerlink" href="#delegation" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Delegation</a><a class="headerlink" href="#delegation" title="Permalink to this headline"></a></h2>
<p class="versionadded"> <p class="versionadded">
<span class="versionmodified">New in version 0.7.</span></p> <span class="versionmodified">New in version 0.7.</span></p>
<p>If you want to perform a task on one host with reference to other hosts, use the &#8216;delegate_to&#8217; keyword on a task. <p>If you want to perform a task on one host with reference to other hosts, use the &#8216;delegate_to&#8217; keyword on a task.
...@@ -654,7 +683,7 @@ a good idea:</p> ...@@ -654,7 +683,7 @@ a good idea:</p>
</div> </div>
</div> </div>
<div class="section" id="understanding-variable-precedence"> <div class="section" id="understanding-variable-precedence">
<h2>Understanding Variable Precedence<a class="headerlink" href="#understanding-variable-precedence" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Understanding Variable Precedence</a><a class="headerlink" href="#understanding-variable-precedence" title="Permalink to this headline"></a></h2>
<p>You have already learned about inventory host and group variables, &#8216;vars&#8217;, and &#8216;vars_files&#8217;.</p> <p>You have already learned about inventory host and group variables, &#8216;vars&#8217;, and &#8216;vars_files&#8217;.</p>
<p>If a variable name is defined in more than one place with the same name, priority is as follows <p>If a variable name is defined in more than one place with the same name, priority is as follows
to determine which place sets the value of the variable.</p> to determine which place sets the value of the variable.</p>
...@@ -670,7 +699,7 @@ to determine which place sets the value of the variable.</p> ...@@ -670,7 +699,7 @@ to determine which place sets the value of the variable.</p>
place to set such a default is in a group variable.</p> place to set such a default is in a group variable.</p>
</div> </div>
<div class="section" id="style-points"> <div class="section" id="style-points">
<h2>Style Points<a class="headerlink" href="#style-points" title="Permalink to this headline"></a></h2> <h2><a class="toc-backref" href="#contents">Style Points</a><a class="headerlink" href="#style-points" title="Permalink to this headline"></a></h2>
<p>Ansible playbooks are colorized. If you do not like this, set the ANSIBLE_NOCOLOR=1 environment variable.</p> <p>Ansible playbooks are colorized. If you do not like this, set the ANSIBLE_NOCOLOR=1 environment variable.</p>
<p>Ansible playbooks also look more impressive with cowsay installed, and we encourage installing this package.</p> <p>Ansible playbooks also look more impressive with cowsay installed, and we encourage installing this package.</p>
<div class="admonition-see-also admonition seealso"> <div class="admonition-see-also admonition seealso">
......
Search.setIndex({objects:{},terms:{facter_operatingsystem:10,kickstart:10,func:[3,5],poorli:[],four:[8,12],prefix:[10,9,6,7],sleep:10,consider:9,whose:10,tweet:12,ebuild:0,aur:0,under:[10,7],spec:7,everi:[1,2,6,7,10,11],risk:10,vastli:7,ansible_virtualization_rol:6,redact:6,upstream:[],affect:[4,6,7],macaddress:6,ansible_config:11,showcas:4,cmd:6,supervisorctl:6,reg:[],ansible_librari:[],shlex:4,vars_prompt:[10,1],saltstack:[],x86_64:[9,6],awwxvv:6,seper:[8,10,5,6,7],direct:[5,6,7],chef:[3,5],second:[9,10,11],tag_key_valu:9,even:[0,5,7,8,9,10],hide:10,thunder:5,scp:11,constrast:[],"new":[5,6],net:[0,2,6,5,4,8,9,11,12],ever:[3,9,4,7,8],told:7,elimin:[10,11],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,6,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:[],substr:6,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:[3,6,11,8],notif:[5,6],notic:5,warn:4,phone:[],exce:[],ec2_architectur:9,relai:7,loss:5,ansible_transport:0,must:[4,10,9,6,7],join:3,restor:6,setup:[0,1,3,6,4,7,9,10],work:[0,1,3,5,6,7,8,9,10,11],anotherdb:6,erb:5,virttyp:6,cento:[0,10,6],root:[0,1,3,5,6,7,10,11],overrid:[0,9,10],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:[4,5,6,7],hoc:[3,5,6,7,11],quot:[10,11],"1pm":3,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],dialect:[],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:[6,7],ansible_product_seri:6,bootstrap:[3,5,6],credenti:[6,11],exclud:8,greek:[],unpaus:6,maintain:[0,9,4],environ:[0,10,9,6,11],enter:10,exclus:10,idontknow:[],order:[3,1,5,6,7,10],oper:[0,10,6,7,11],frontend:10,over:[0,3,5,8,9,10,11,12],fall:[10,6],orang:2,becaus:[1,2,5,4,9,10],fifo:6,ec2_previous_st:9,rpmbuild:0,ansible_interfac:6,privileg:6,zeu:[],gather_fact:10,vari:10,myfil:6,streamlin:10,shorter:4,cli:[9,11],img:[],fix:0,better:[6,11],offic:3,mydb:6,easier:[5,4,1,2,11],them:[0,1,2,3,4,5,6,7,8,10],thei:[3,6,5,4,7,8,9,10,11,12],fragment:6,etc_acme_conf_acm:1,safe:7,ec2_ten:9,"break":7,band:[],glorifi:[],jinja2:[0,10,5,6,7],ec2_ip_address:9,mgmt:9,httpd_sys_content_t:6,ec2_region:9,choic:[0,4],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],colleagu:[],exactli:[4,10,6],playbooks2:[],logo:[],some_password:10,contend:5,network:[3,5,10],dss:6,content:[4,10,6,7],dsl:[],pool:10,adapt:[9,6],got:5,forth:7,a1b1c1d1:9,site_fact:[10,4],ntp:8,nightmar:3,situat:6,free:[0,5,6,9,10,12],standard:[8,4],dotnet:2,fixm:[],md5:4,reconfigur:[5,10,1],openssh:[0,5,3],traceback:4,isv:12,ansible_form_factor:6,isn:[3,5],suppos:[8,10,4,7,11],rang:[3,6,11,8],render:6,clariti:[],wast:[],restrict:4,hook:[],unlik:[5,7],alreadi:[0,3,6,5,4,7,9,10],van_halen_port:7,apt_repositori:6,massiv:3,primari:[9,6],rewritten:[],top:[10,5,4,1,7],sometim:[10,6],destination_vari:9,master:9,too:[9,3,5,4,2],similarli:[9,10],john:[5,2],outag:[3,10],iptabl:[],ansible_memfree_mb:6,tool:[0,3,5,9,10,11],took:[3,5],"80ghz":6,somewhat:9,technic:[0,9,6],freemem:6,basho:12,target:[11,8,1,7],keyword:[10,5,6],provid:[1,2,6,5,4,7,9,10],tree:[4,9,6],project:[0,1,2,3,5,4,7,10,12],matter:11,ansible_distribution_releas:6,minut:[5,6,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,10],bruce:0,limitless:10,deleg:10,regular:7,specifi:[0,2,6,5,4,7,9,10,11],bsd:[0,5],boxsubscrib:[],simplic:3,don:[0,1,3,6,5,4,7,8,10,11],doc:6,doe:[0,6,5,4,7,8,9,10,11],declar:7,wildcard:8,libpq:6,came:9,cobbler_external_inventori:[],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,priv:6,involv:4,absolut:[6,11],northeast:8,acquir:3,explain:4,configur:[0,1,2,3,5,6,7,8,9,10,11],apach:[10,5,6,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,report:6,saturn:[],cellspac:[],bar:[8,9,6,7],host_var:8,excel:[3,5,10,8],"public":[10,9,6],reload:6,bad:4,respond:[6,7],daemonless:[],resist:1,result:[3,6,5,4,7,9,10],fail:[6,5,4,7,9,10],themselv:[],hammer:[],best:[3,1,6,5,4,7,9,10],subject:[5,10],brazil:12,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],kitchen:12,easi:[0,1,3,6,5,4,8,10,11],howev:[0,5,4,11,8],against:[3,5,10,7,8],logic:[],somelist:10,login:[6,7],com:[0,6,4,8,9,12],compromis:5,assur:[10,7],foobar:6,height:[],written:[0,3,4,7,9,10],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,6,5,4,7,8,9,10,11],tini:10,quickli:[3,11],life:3,recomend:4,ani:[0,1,3,6,5,4,7,9,10,11],add_back_to_pool:10,mysql_us:6,dave:[],enterprisei:9,child:3,emploi:2,ugli:10,exception:5,east:9,servic:[1,6,4,7,8,9,10,11,12],ec2_security_group_id:9,vars_fil:[10,1,7],aim:5,ain:[],visit:3,conf:[10,9,6,1,7],module_nam:[8,9],somekei:4,sever:[2,5,6,7,9,12],inventori:[0,1,3,6,7,8,9,10,11],perform:[0,3,5,6,7,10],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,11],speakerdeck:3,kept:[5,7],scenario:9,thu:6,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,12],expos:1,had:10,spread:3,els:[0,10,4,7],ffffff:4,save:[4,10,6,7],hat:[3,5],gave:3,opt:6,applic:[3,5,6,7,9,10,12],supervisord:6,quirk:2,wai:[0,1,6,5,4,7,8,9,10],fusion:6,background:11,daemon:5,specif:[1,5,4,7,8,9,10,11],arbitrari:[5,10],manual:[5,7],remind:[10,4,1],el6:6,unnecessari:[],groups_logo_sm:[],www:8,right:[],deal:[4,6],maxim:5,dead:3,born:5,intern:[9,4],heritag:[],successfulli:[3,9],txt:[6,11],forcibl:[],bottom:7,cnf:6,tracker:[0,3],condit:[10,7,11],foo:[6,7,8,9,10,11],localhost:6,core:[3,4,5,6,11],plu:[],sensibl:0,web2:9,web1:9,promot:[],repositori:[6,1],peer:5,"super":3,chapter:7,sshd:3,postgresql:6,surround:[],simul:10,"2ydx8":6,commit:1,produc:[4,6,12],match:[4,7],ppa:[0,6],basenam:6,contriv:[],halon_system_timeout:8,contrib:[4,6],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,1,3,6,5,4,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,5,4,7,8,9,10],war:3,fork:[9,5,10,11],head:[6,11],python26:0,form:[4,10,6,7,2],offer:[],altogeth:3,batman:0,forg:6,groupfil:8,"true":[4,10,6,7,2],freenod:[0,2,3,6,5,4,8,9,11,12],absent:[4,6,1,11],inquir:4,maximum:10,until:[10,6,1],ansible_fqdn:6,fundament:6,featur:[0,1,3,5,6,7,8,10],"abstract":5,fedoraproject:[],plugin:9,cobbler:[9,3,5],desir:[8,4,1,7],ship:[4,5,6],check:[4,10,6,11],assembl:6,pipe:[6,11],encrypt:5,take_out_of_pool:10,tip:[8,10,6,1,7],role:[10,6,1,7],test:[0,6,5,4,9,10,12],tie:9,unlimit:[],maxrequestsperchild:8,node:[0,3,5,6,7,9,10,11],relat:6,intend:4,phoenix:8,devop:3,intent:[],consid:[4,1,7],receiv:6,longer:4,anywher:[],ignor:[10,4,7],time:[0,1,2,3,4,5,6,7,8,9,10,11],push:[3,5,10,7],concept:[9,10,1,11],vpc:9,chain:[],"5rxgmiicbrh":6,skip:[10,7],consum:5,invent:[],skim:3,operatingsystem:10,decid:[10,5,4,7,11],middl:[],depend:[0,4,5,6,10],zone:9,flask:6,graph:[5,12],readabl:[1,7],decis:10,downtim:6,southwest:8,sourc:[0,1,2,3,4,5,6,7,9,10,11,12],string:[4,6,7],somelog:6,word:[3,9,10],brows:4,jdk:6,administr:[],level:[6,7,2],did:[3,10,9,4],passno:6,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],ansible_distribution_vers:6,current:[0,6,5,4,10,11],suspect:[],ceec4eif7ya:6,deriv:[],gener:[0,6,5,4,7,9,10],address:[1,6,5,4,8,9,10,11],along:[4,7],wait:10,box:[3,6,11],precursor:3,alta:12,extrem:[0,10,5,4],bob:[6,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:[4,10,6,1],instal:[0,3,6,5,4,7,10,11],mobil:[],httpd:[8,10,6,7,11],hyperspac:5,priv1:6,priv2:6,prove:10,is_cento:10,univers:12,fail_json:4,perl:[3,11],live:[0,10,11],handler:[11,6,1,7],criteria:10,msg:[4,9,6],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,enhanc:[],accept:[4,6],easiest:[0,9,10,3],get_xml:6,ibm:3,module_arg:9,prepar:[],uniqu:9,cat:10,whatev:[3,10,4],purpos:[3,8,6,1,7],boilerpl:4,claim:1,hostvar:10,argument_spec:4,facter_hostnam:7,chip:3,agent:[0,5,11,3],critic:3,disadvantag:3,occur:7,alwai:[4,5,6,1,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,9,10],purg:6,pure:[],somevalu:[10,4],parameter:[10,7],map:[9,7],product:[10,6],mar:[],book:5,max:11,clone:[0,4],usabl:7,membership:[10,11],pattern:[0,1,3,6,7,8,9,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:[9,5,10,7,11],"switch":5,preced:10,combin:2,talk:[11,0,7,8],ender:5,ec2_statu:9,nbsp:[],ec2_id:9,still:[0,5,4,7,9,10],pointer:4,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],window:[3,10],curli:[],pythonpath:[],mail:[0,1,2,3,4,5,6,7,8,9,10,11,12],job_statu:[],main:[3,10,4,1,7],xyz:11,security_group_pete_s_fancy_group:9,non:[3,4,6,7,8],hassl:3,env:0,encod:6,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:[4,11],name:[1,2,6,4,7,8,9,10,11],config:[3,9,7,11],didn:[5,11],crypto:3,separ:[9,6,1,7],rock:[],distro:9,domain:[],arg1:6,laserllama:3,yeah:[],ensur:[0,5,6,7,10,11],wrap:1,backport:[0,6],facter:[10,5,6,7],happen:[9,4,5,6],subnet:9,shown:4,space:[3,5,6],infrar:[],profil:9,intermix:[],skylin:12,internet:3,correct:[2,5,6,7,9,10],ksmeta:9,lag:6,migrat:3,argv:4,args_fil:4,theori:7,org:[0,6,11,8],grab:[],card:5,care:[6,7],reusabl:4,couldn:3,frequenc:10,synchron:[10,7],thing:[0,1,2,5,4,7,8,10,11],place:[3,10,4],raleigh:[3,11,8],router:6,think:[10,5,4,1],frequent:[9,10],first:[0,3,6,5,4,8,10,11],origin:6,directli:[6,4,7,8,9,11],onc:[1,6,5,4,7,8,10],arrai:10,yourself:7,"long":[0,5,10,11,3],oppos:11,open:[3,5,4,7,10,12],tomorrow:12,somegroup:6,given:[10,5,6,1,11],unlink:6,convent:[9,4],gif:[],fierc:[],silenc:6,white:4,friend:12,especi:[3,5,10,1],copi:[0,10,9,6,11],motd_cont:10,retyp:0,netmask:6,github:[0,1,2,3,6,4,7,10,12],mostli:1,than:[0,1,2,3,4,5,6,7,9,10,11],cmdb:9,serv:[],wide:5,ec2_private_dns_nam:9,balanc:[3,10],were:[5,10,7,11],pre:[],sai:[0,3,5,6,7,10,11],nicer:[],id_webservergroup:9,argument:[4,9,6,7,8],dash:[9,2],loki:[],collat:6,sat:5,engin:12,squar:[],alias:4,destroi:6,note:[0,6,4,7,9,10,11],forc:6,ideal:[5,10],denomin:1,take:[6,5,4,7,10,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:[8,10,11],beta:[],pair:[9,4,2],adopt:5,meanwhil:5,runtim:10,mysql_db:6,show:[10,4,7,11],cheat:5,aggregr:4,geographi:1,permiss:[0,6,11],hack:[0,4],rotat:[3,7],xml:2,onli:[0,3,6,5,4,7,9,10,11],explicitli:[6,7],transact:10,activ:[6,12],enough:[8,5,11],dict:4,analyz:10,analyt:12,nearli:[6,2],variou:[10,5,6,7,11],get:[0,2,3,6,5,4,7,9,10,11,12],soon:[],repo:[4,9,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,through:[0,6,11,3],where:[0,1,6,5,4,9,10],summari:7,wiki:[],hour:6,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,estat:12,ansible_system_vendor:6,between:[0,1,3,5,7,10],my_app:6,"import":[10,9,4,7,11],across:[9,5],rerun:7,guitar:[],cycl:0,come:[11,3,4,1,7],timmi:7,region:[9,11],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,6],webapp:[5,6,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],mount:6,md5sum:[],straighten:5,trick:7,cast:4,invok:[],exist:[3,5,6,7,8,10,11],default_releas:6,newhost:6,advantag:[10,11],ec2_stat:9,canon:6,worri:[5,10],destin:[9,6],cluster:6,myapp:[10,11],rktgjk2httvs6gigvsuwwfod7:6,chkconfig:[],trival:4,http_port:[8,7],develop:[0,1,2,3,4,5,6,7,10,12],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],choos:[0,5,6,7,3],markup:[],without:[0,5,4],promis:[],model:[3,5],dereferenc:[],execut:[0,1,3,6,5,4,7,9,10,11],when:[1,6,5,4,7,9,10,11],rest:4,venv:6,kill:7,speed:0,aws_access_key_id:9,versu:[0,5,1],europ:12,miscellan:1,except:[9,4],littl:[3,5],otherus:11,blob:[],notori:5,vulner:5,real:[0,10,7,12,3],ignore_error:10,around:5,ohai:[10,5,6,7],read:[0,2,3,6,5,4,9,11],dark:9,mon:[],world:[0,5,10,7,12],intel:6,whitespac:1,realtim:12,ak123:9,integ:[],server:[3,5,6,7,8,9,10,11],rycsbf1d8e5ptxesxhqs4iq:6,output:[9,4,5,6,7],manag:[0,1,2,3,5,6,7,8,9,10,11],ec2_kernel:9,assmebl:6,sneaker:[],jquery_directori:[],titan:[],altalang:[],server01:[],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,4,7,9,10],broken:1,found:[3,4,9,6,10],"throw":[5,4],earlier:[0,7],src:[10,9,6,7,11],stone:4,central:[3,5,10],greatli:[],get_url:6,acm:[8,10,6,1,11],wolf:9,stand:6,act:6,industri:[3,5,12],mytempl:6,effici:[5,10],terminolog:9,anothert:6,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,8,10,11,12],ipv6:6,bundl:1,vpc_destination_vari:9,congratul:0,faster:[10,4],strawberri:2,dirti:[0,6],possibl:[1,6,4,7,8,9,10,11],"default":[0,3,6,5,4,8,9,10,11],ansible_fact:4,stacktrac:4,connect:[0,10,5,6,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],beyond:[10,12],googl:[0,1,2,3,4,5,6,7,8,9,10,11,12],compel:[],repositor:6,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,qeuz:6,cpu:6,all:[0,1,2,3,4,5,6,7,8,9,10,11,12],forget:10,selinux:[6,7],lack:[],mnt:6,month:0,scalar:4,abil:[5,7],follow:[0,5,6,8,9,10,11],alt:[],disk:6,children:8,nors:[],articl:[3,4,6],program:[3,2,6,5,4,7,10],mcollect:[],arbitari:2,introduc:3,liter:6,tag_name_redi:9,song:[],fals:[10,4,2],faq:[3,5],util:[],mechan:[],failur:[9,10,5,4,7],veri:[0,1,3,6,5,4,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:[3,2,5,6,9,10],testuser2:10,testuser1:10,enterpris:[0,12],yetanotherdb:6,strung:11,zero:[8,4,7],design:[3,5,11,8],pass:[0,6,4,7,9,10,11],further:[5,10,11,2],ec2_spot_instance_request_id:9,what:[0,1,2,3,4,5,6,7,9,10,11,12],sub:[],section:[0,1,5,7,8,10,11],abl:[3,10,6,1],delet:[6,7,11],abbrevi:2,ec2_state_reason:9,method:[9,5,11],movement:3,hasn:5,full:[10,6,7],hash:[8,10,9,4,2],shouldn:[5,10],recip:0,first_available_fil:10,strong:3,modifi:[4,9,6],fail_on_us:6,valu:[2,6,4,7,9,10,11,12],search:12,ahead:[0,7],likin:5,memcach:[10,7],prior:[10,6],amount:9,pick:[5,11],action:[10,9,6,7],via:[0,10,9,6,3],shorthand:[10,4],factnam:10,ec2_state_cod:9,managememnt:[],href:[],select:[1,6,4,7,8,10,11],distinct:[],stdout:[9,10],regist:10,two:[3,9,6,7,8],rhel:0,demo:11,taken:[5,7],toggl:6,more:[0,1,3,5,6,7,8,9,10,11],flat:7,door:5,hundr:12,flag:[0,7,11],particular:[6,7,8,9,10,11],known:6,compani:[5,4,12],cach:[9,6],none:[0,9,6],pkgbuild:0,hous:[],launch:[10,7],dev:[5,6],remain:[],learn:[0,1,2,3,5,4,7,8,10],deb:6,nagio:6,instantan:5,prompt:[10,7,11],yamllint:2,moduledev:[],templat:[1,6,5,4,7,9,10,11],minimum:[10,4,7],explor:[0,9],pong:6,cygat:12,cours:[5,10,1],newlin:[],secur:[9,3,10,5,6],rather:[10,5,4],anoth:[3,1,2,5,6,7,10,11],simpl:[3,1,2,5,4,7,9,10,11],css:[],unabl:6,resourc:[4,10,5,6,7],referenc:[8,10,7],variant:0,fstype:6,ff0000:4,neccesssari:[],args_data:4,associ:[9,2],spool:6,"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,scott:5,hierarchi:[],hell:3,suffer:5,paramet:[1,6,4,7,10,11],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],troubleshoot: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,4],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:[],halen:[],orient:7,hostnam:[8,10,9,6,7],ftp:6,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,thrown:[],pyyaml:0,sytem:5,daisi:[],drupal:12,omit:1,american:[],ansible_system:6,assign:[8,10,9,6,1],feed:[],sdwippefq74nppvuelhpkkaiojjnn1zuhfol:6,notifi:[1,6,5,4,7,11],obviou:[],feel:[9,10,2],exchang:10,number:[3,10,5,6,8],placehold:[10,7],done:[0,1,3,5,6,8,10],least:[10,1],blank:6,stabl:[0,6],fiction:[],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:[10,4,7],cfg:11,banana:[],store:[8,10,6,12],option:[0,1,6,5,4,7,8,9,10,11],behind:[5,6],selector:11,part:[3,4,5,6,10],ec2_key_nam:9,consult:12,reinstal:[],jump:[0,3],kind:[5,4],grep:[],whenev:4,remot:[0,10,6,7,11],gotten:3,remov:[8,10,6,11],jqueri:[],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:[],createhom:6,equival:[10,6],self:[5,4],"123i":12,also:[0,1,2,3,4,5,6,7,8,9,10,11,12],build:[9,0,4,5,6],brace:[],distribut:[0,5,1,12,3],passwd:6,previou:10,reach:[3,1],most:[0,1,2,3,5,6,7,9,10,11],plai:[3,10,7],plan:5,alpha:6,bug:[0,3],filesystem:10,clear:1,cover:[9,5,10],roughli:0,clojur:4,clean:5,pars:[5,4],usual:[7,11],awesom:[3,6,12],commerc:12,ansible_processor_count:6,alphanumer:9,devolv:[],mpd_ring:[],particularli:[9,10,7],fine:[0,4,1],find:[10,9,4,7,12],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],silli:[],him:12,restart:[1,5,6,7,8,11],mdehaan:[6,11],dollar_sign_syntax:[],common:[1,2,6,4,9,10],wrote:4,set:[0,1,3,6,5,4,7,8,9,10,11],dump:[4,6],creator:12,security_group_webserv:9,see:[0,1,2,6,5,4,7,8,9,10,11,12],sec:10,arg:4,close:[3,4],setsebool:7,analog:[],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,6,5,4,9,10,11],last:[0,3],delimit:6,boto:9,thor:[],uncrypt:7,context:6,whole:5,load:[3,10,11],simpli:[9,6,1,7],point:[10,6,1],instanti:4,schedul:6,etc_other_conf_oth:1,header:8,shutdown:[10,6],suppli:6,asdf:[],backend:[],unsuccess:7,java:[],instrument:[],devic:6,due:[0,5,4],empti:9,ran:3,host4:9,enable_alert:6,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,10,7],comprimis:3,educ:4,look:[3,6,4,7,8,9,10,11],straight:11,batch:[5,11],"while":[3,5,10,1,7],unifi:[],smart:[6,11],behavior:[10,6,11,12],error:[4,10,5,6],loop:[10,7],pack:9,gimm:[],pragmat:[],motd:[9,10,7],max_client:7,readm:[],jpg:[],itself:[9,0,5,6],ansible_ssh_host_key_rsa_publ:6,unmount:6,fedora:[0,12],grant:6,login_usernam:6,belong:9,exit_json:4,higher:[0,10],optim:1,painless:3,alert:6,moment:9,temporari:[],user:[0,1,3,6,5,4,7,9,10,11,12],yesterdai:3,recent:5,lower:[3,5],task:[3,1,5,6,7,10,11],lib:4,older:6,entri:[3,11],lizenzfrei:12,spent:5,expens:9,endfor:10,spend:5,explan:4,ec2_monitor:9,mysql:6,love:[],centos6:9,shortcut:4,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],judgement:6,nginx:6,game:[3,5],quest:10,bobdata:6,bit:[10,5,6,7],abduct:[],ec2_ownerid:9,xaby9ud5brbfvkedu:6,name_of_fact:[],knock:5,capital_of_assyria:[],signal:[5,6],"98dbcgqw5hme89cjgzro5ktkc5yu":6,manifest:5,"boolean":[4,2],popular:[3,12],cmdfile:6,postgresql_db:6,encount: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,6,7,10,11],sampl:11,mirror:[],virtualenv:6,scale:[5,10],ec2_tag_kei:9,per:[9,10],pem:0,substitut:[],mathemat:[],larg:[5,10],either:[9,10,5,6],machin:[0,1,3,6,5,4,7,10,11],object:4,run:[0,2,3,6,5,4,7,8,9,10,11,12],step:[0,3,5,6,7,8,10,11],squeez:6,meantim:5,frob:6,major:9,impor:[],ec2_launch_tim:9,othervar:[],ansible_eth0:[10,6],block:10,fulfil:7,steelhous:12,primarili:[],unreach:7,intl:[],within:[9,8,5,10,7],contributor:12,chang:[3,1,6,4,7,8,10,11],subvers:6,bserver:0,rxp33wfphjwjwvhatfci1nrbaudqi:6,inclus:8,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],translat:12,newer:0,line:[0,2,3,6,5,4,7,8,9,10,11],info:[9,6,11],concaten:6,consist:4,caller:6,planet:3,schmooz:12,ec2_dns_nam:9,highlight:[],similar:[8,10,9,6,11],curv:[3,5],module_common:4,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:[],disable_alert:6,likes_emac:2,transport:[0,5,3],peopl:[3,10,12],nice:[3,7],draw:3,asciidoc:[],meaning:[],svn:6,happier:3,far:[11,2],hello:0,jupit:[],local_act:10,pluggabl:[3,5],code:[3,1,5,4,7,9,10,11,12],alien:[],async_statu:11,privat:[0,9,10],sensit:10,elsewher:[],friendli:3,send:10,autostart:6,sens:[0,9,6,7],fatal:[4,7],blindingli:[],sent:4,sensic:3,logtre:6,whichev:11,signfic:4,asdf1234l:6,implicitli:5,ec2_root_device_typ:9,relev:[10,5,4],tri:6,magic:[10,5,4,7],roll:10,id_rsa:[0,11],michael:[3,12],fewer:10,"try":[0,3,6,5,4,7,9,10],p2xkxaczh6fc:6,pleas:[9,0,5,6],malici:5,impli:6,natur:[],focu:12,cron:[5,10],gmbh:12,mysqldb:6,download:[0,6],ansible_python_interpret:8,folk:[0,11,12],index:9,turn:[3,10,5,4],compar:5,access:[0,10,9,6,3],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:[0,9,6],becom:10,sinc:[9,6,1,11],great:[3,1,5,4,7,10,12],convers:8,hypervisor:6,technolog:[3,12],"_some_str":7,later:[0,6,4,7,8,10,11],unsil:6,typic:[5,7,11],maker:12,hardi:6,fstab:6,heart:9,win:[],app:[5,10],apt:[10,6,1,11],austria:12,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,6,7],"8b3satjxmpgbfbueebwubk5ejl":6,doubl:11,upgrad:[6,7,11],next:[0,3,5,6,7,8,10,11],few:[9,6],usr:[0,6,4,7,8,9,10,11],sort:[5,6,12],dbserver:[8,10,1,11],impress:[3,10],sbin:[10,6,7,11],trail:1,train:5,login_password:6,ansible_nocolor:10,starter:[4,7],account:[0,6,7,11],chdir:6,retriev:10,tunnel:3,alia:[4,6,8],openjdk:6,alic:7,halt:[],obvious:10,ec2_ramdisk:9,fetch:[10,6],proof:4,employe:[5,2],thirsti:6,tar:0,process:[3,5,6,7,11],lock:[5,10],sudo:[0,3,5,6,7,11],mango:2,high:[4,11],knows_oop:2,tag:[0,10,9,6],tab:7,tarbal:[],onlin:2,serial:10,surfac:[3,5],orson:5,lame:2,mysql_root_password:[],"_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:[10,9,4],issu:[0,5,1,3],allow:[0,1,6,5,4,9,10,11],aws_secret_access_kei:9,move:[10,6,7],elit:2,comma:[9,6],loginpass:[],release_vers:10,bunch:[],somecommand:7,taboot:5,infrastructur:[0,1,3,5,7,8],anyon:5,therefor:10,ansible_product_uuid:6,dag:12,greater:8,python:[0,2,3,6,5,4,8,9,10,11],auto:[4,9,6],dai:[3,5],auth:6,devel:[],mention:[11,10,4,1,7],rubygem:[],instead:[0,1,5,6,10,11],strive:4,multiprocess:5,somewher:10,anyth:[9,4,5,6],edit:[0,9,6],slide:3,mode:[0,5,6,7,10,11],subset:[],grok:3,bump:[],strip:6,usernam:[6,11],ec2:[3,9],our:[3,12,11,2],patch:5,pitfal:4,special:[9,6],out:[3,1,6,5,4,7,8,9,10,11],variabl:[0,1,3,6,5,4,7,8,9,10,11],twice:[],reboot:[6,7,11],security_group_:9,rel:[8,6,1],"_default":6,leverag:0,ref:[],login_host:6,red:[9,3,5,4],clarifi:[],insid:[10,9,4,7],unpars:4,ansible_machin:6,control:[3,1,6,5,4,7,8,9,10,11],dictionari:[10,9,4,2],releas:[0,1,5,6,7,10],include_ansible_module_common:4,indent:2,could:[6,5,4,7,9,10],put:[0,1,6,7,8,10],fqdn:10,keep:[0,1,6,4,8,9,10],outsid:[9,4],adrian:5,retain:5,stuck:7,localdomain:6,delegate_to:[10,6],softwar:[3,1,5,6,9,10,11],qualiti:4,scene:6,echo:[0,9,10,11],exact:[],date:[0,4],puppet:[9,3,5,6],submit:[5,4],owner:[6,11],facil:[],prioriti:[10,6],ansible_lo:6,perfectli:[],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,10,11],ec2_descript:9,"var":[8,10,6,1,7],rst:[],nobodi:4,priveledg:[],dive:7,richer:5,intervert:10,charact:[9,2],sweden:12,favorit:[5,10],deprec:8,sysadmin:5,ansible_processor_cor:6,have:[0,1,2,3,4,5,6,7,8,9,10,11,12],tabl:6,need:[0,1,2,3,4,5,6,7,8,9,10,11],cfengin:5,border:[],paramiko:[0,5],unexpect:[],min:[],mix:[8,10,7],baisc:[],tag_name_web:9,which:[0,1,2,3,4,5,6,7,8,9,10,11],datacent:[8,1,11],with_item:10,divers:3,singl:[1,5,6,7,9,10,11],ec2_security_group_nam:9,unless:[10,5,6,7],clash:[],deploy:[11,0,5,7,3],who:[3,9,6,7,12],salli:6,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,url:6,gather:[10,5,6,7],request:6,self_destruct_countdown:8,snapshot:6,determin:10,built:[0,5,6,9,10,11],constrain:11,fact:[3,6,5,4,7,10],text:[],verbos:[4,6,7],bring:[5,7],playbook:[0,1,2,3,4,5,6,7,8,9,10,11],trivial:[0,3,6,4,9,10],anywai:8,varnam:7,redirect:11,locat:[8,10,6,7,11],tire:5,should:[0,1,2,3,4,5,6,7,9,10,12],ansible_swapfree_mb:6,won:[7,11],ec2_root_device_nam:9,"5px":[],local:[10,5,6],something_els:4,contribut:[0,3,6,4,11,12],notat:[],familiar:9,pave:[],autom:[5,1,11],somevar:10,increas:10,ansible_ssh_port:[],enabl:[4,6],organ:[6,1,12],bounc:[6,7],sha:6,stuff:[3,11],integr:[3,9,6],contain:[0,1,3,5,4,7,9,10],ymwaaaebalnasqn10tngsrde5arbsw8ctojqlyybciqgpytzw8zenerfxt7ij3fw3jh:6,view:3,legaci:6,cthy5bws9kmyjmeo0kfumh8hy4maxdokhq7dhbpircjs5jptogxirezjba67r6:6,nodeinfo:6,skynet:6,stack:10,gmail:[],statu:[4,10,6,11],wire:[],extend:[3,5,10,1,7],correctli:6,mainli:[5,10],state:[1,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:[1,6,4,7,8,9,10],instant:[],southeast:8,admin:[3,9],goal:[7,11],equal:[5,4,11],ohai_foo:[],etc:[0,3,5,6,7,8,9,10,11],instanc:[8,10,9,6,7],comment:[4,6,1],english:6,guidelin:4,chmod:[4,9,6,7],distil:5,rpm:[0,4,11],mailto:[],quit:[4,1],evalu:[10,11],platform:[10,5,6,12],addition:[10,7,11],decent:[],compos:7,compon:[],json:[2,6,5,4,9,10],besid:4,treat:[5,4,1],ungroup:[],immedi:[10,6,7],"2677m":6,yournam:7,capistrano:5,global_var:1,vmware:6,togeth:[6,1,11],minim:[0,4],ador:3,atlanta:[8,9,11],present:[3,4,10,6,1],authorized_kei:[0,6],multi:[3,5,7],plain:3,align:[],ansible_virtualization_typ:6,defin:[10,9,6,7],glossari:[],ultra:3,layer:[9,5],almost:[5,6],virt:6,site:[5,10,1,12],archiv:6,lightweight:9,partner:6,revis:[],michaeldehaan:[],surprisingli:[],scienc:[],welcom:[3,9],parti:[],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:6,structur:[10,6],denot:8,upon:[],effect:[],libvirt:6,php:11,distutil:0,pull:[9,5,10],audit:[3,10,1],off:[3,5,10,1],center:[],seth:5,exampl:[0,1,2,3,4,5,6,7,8,9,10,11],command:[0,3,6,5,4,7,8,9,10,11],interpol:10,undefin:6,latest:[0,10,6,7,11],lest:3,tunabl:1,distanc:5,paus:6,less:[0,5,3],additon:0,starbuck:10,heavili:5,skill:2,simultan:11,web:[9,5,10,11,12],host5:9,cleanup:10,host3:[8,9],host2:[8,9],host1:[8,9],kick:[3,10,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:[],password:[0,5,6,7,10,11],recurs:[6,11],python3:0,python2:0,insert:6,motorola:3,like:[0,1,2,3,4,5,6,7,8,9,10,11],success:[4,6,7],amazonaw:9,necessari:11,lose:11,async:10,architectur:[3,5,10],page:[0,5,11,2,3],ansible_hostnam:[10,6],shed:5,revers:[3,6],captur:4,twitter:[],linux:[0,5,6,12,3],"export":[0,9],home:6,librari:[6,1,2],tmp:[9,6,7,11],lead:[8,5,12],avoid:[0,6,7,3],thank:5,overlap:[],update_cach:6,encourag:[10,5,4,1,7],slight:9,importerror:[],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,about:[0,1,2,3,4,5,6,7,9,10,11],actual:[4,10,5,6],swear:3,discard:6,disabl:[6,7],ntp_server:8,own:[1,6,5,4,7,9,10],easy_instal:6,automat:[4,9,6,1,11],ec2_public_dns_nam:9,some_serv:8,hang:7,merg:[5,4],van:[],transfer:[4,6,7,11],intention:[],trigger:[5,6,7],"8agepocvjdhyzr7pahfxzgudgktgrl2qzryukcmwo1czbmbhci5fzimvths9":6,replac:6,biggest:12,individu:[8,1],"function":[4,6],simplejson:[0,6],subscrib:[],nnwugi:[],continu:[4,10,6],ec2_plac:9,eas:5,eat:11,count:[10,7],succe:4,made:[3,6,5,4,7,8,10],whether:[1,6,5,4,9,10],arg2:6,writeabl:7,asynchron:[10,7],record:2,below:[0,6,7],limit:[10,11],otherwis:[4,10,6,11],problem:[3,5,6,2],epel:0,pin:6,is_favcolor_blu:10,filenam:[10,6],ec2_tag_nam:9,implement:[9,5,4],ini:[8,9],mountpoint:6,pip:6,ing:6,probabl:[0,5,4,1,7],boot:6,detail:[9,4,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,4,7],ansiblemodul:4,debian:[0,10,6],stai:10,sphinx:[],amp:[8,9],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 &amp; Patterns","API &amp; Integrations","Advanced Playbooks","Command Line Examples And Next Steps","Who Uses Ansible"],objnames:{},filenames:["gettingstarted","bestpractices","YAMLSyntax","index","moduledev","faq","modules","playbooks","patterns","api","playbooks2","examples","who_uses_ansible"]}) Search.setIndex({objects:{},terms:{facter_operatingsystem:10,kickstart:10,func:[3,5],poorli:[],four:[8,12],prefix:[10,9,6,7],sleep:10,consider:9,whose:10,tweet:12,ebuild:0,aur:0,under:[10,7],spec:7,everi:[1,2,6,7,10,11],risk:10,vastli:7,ansible_virtualization_rol:6,redact:6,upstream:[],affect:[4,6,7],macaddress:6,ansible_config:11,showcas:4,cmd:6,supervisorctl:6,reg:[],ansible_librari:[],shlex:4,vars_prompt:[10,1],saltstack:[],x86_64:[9,6],awwxvv:6,seper:[8,10,5,6,7],direct:[5,6,7],chef:[3,5],second:[9,10,11],tag_key_valu:9,even:[0,5,7,8,9,10],hide:10,thunder:5,scp:11,constrast:[],"new":[5,6],net:[0,2,6,5,4,8,9,11,12],ever:[3,9,4,7,8],told:7,elimin:[10,11],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,6,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:[],substr:6,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:[3,6,11,8],notif:[5,6],notic:5,warn:4,phone:[],exce:[],ec2_architectur:9,relai:7,loss:5,ansible_transport:0,must:[4,10,9,6,7],join:3,restor:6,setup:[0,1,3,6,4,7,9,10],work:[0,1,3,5,6,7,8,9,10,11],anotherdb:6,erb:5,virttyp:6,cento:[0,10,6],root:[0,1,3,5,6,7,10,11],overrid:[0,9,10],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:[4,5,6,7],hoc:[3,5,6,7,11],quot:[10,11],"1pm":3,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],dialect:[],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:[6,7],ansible_product_seri:6,bootstrap:[3,5,6],credenti:[6,11],exclud:8,greek:[],unpaus:6,maintain:[0,9,4],environ:[0,10,9,6,11],enter:10,exclus:10,idontknow:[],order:[3,10,5,6,7],oper:[0,10,6,7,11],frontend:10,over:[0,3,5,8,9,10,11,12],fall:[10,6],orang:2,becaus:[1,2,5,4,9,10],fifo:6,ec2_previous_st:9,rpmbuild:0,ansible_interfac:6,privileg:6,zeu:[],gather_fact:10,vari:10,myfil:6,streamlin:10,shorter:4,cli:[9,11],img:[],fix:0,better:[6,11],offic:3,mydb:6,easier:[5,4,1,2,11],them:[0,1,2,3,4,5,6,7,8,10],thei:[3,6,5,4,7,8,9,10,11,12],fragment:6,etc_acme_conf_acm:1,safe:7,ec2_ten:9,"break":7,band:[],glorifi:[],jinja2:[0,10,5,6,7],ec2_ip_address:9,mgmt:9,httpd_sys_content_t:6,ec2_region:9,choic:[0,4],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],colleagu:[],exactli:[4,10,6],playbooks2:[],logo:[],some_password:10,contend:5,network:[3,5,10],dss:6,content:[0,1,6,5,4,7,8,9,10,11],dsl:[],pool:10,adapt:[9,6],got:5,forth:7,a1b1c1d1:9,site_fact:[10,4],ntp:8,nightmar:3,situat:6,free:[0,5,6,9,10,12],standard:[8,4],dotnet:2,fixm:[],md5:4,reconfigur:[5,10,1],openssh:[0,5,3],traceback:4,isv:12,ansible_form_factor:6,isn:[3,5],suppos:[8,10,4,7,11],rang:[3,6,11,8],render:6,clariti:[],wast:[],restrict:4,hook:[],unlik:[5,7],alreadi:[0,3,6,5,4,7,9,10],van_halen_port:7,apt_repositori:6,massiv:3,primari:[9,6],rewritten:[],top:[10,5,4,1,7],sometim:[10,6],destination_vari:9,master:9,too:[9,3,5,4,2],similarli:[9,10],john:[5,2],outag:[3,10],iptabl:[],ansible_memfree_mb:6,tool:[0,3,5,9,10,11],took:[3,5],"80ghz":6,somewhat:9,technic:[0,9,6],freemem:6,basho:12,target:[11,8,1,7],keyword:[10,5,6],provid:[1,2,6,5,4,7,9,10],tree:[4,9,6],project:[0,1,2,3,5,4,7,10,12],matter:11,ansible_distribution_releas:6,minut:[5,6,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,10],bruce:0,limitless:10,deleg:10,regular:7,specifi:[0,2,6,5,4,7,9,10,11],bsd:[0,5],boxsubscrib:[],simplic:3,don:[0,1,3,6,5,4,7,8,10,11],doc:6,doe:[0,6,5,4,7,8,9,10,11],declar:7,wildcard:8,libpq:6,came:9,cobbler_external_inventori:[],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,priv:6,involv:4,absolut:[6,11],northeast:8,acquir:3,explain:4,configur:[0,1,2,3,5,6,7,8,9,10,11],apach:[10,5,6,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,report:6,saturn:[],cellspac:[],bar:[8,9,6,7],host_var:8,excel:[3,5,10,8],"public":[10,9,6],reload:6,bad:4,respond:[6,7],daemonless:[],resist:1,result:[3,6,5,4,7,9,10],fail:[6,5,4,7,9,10],themselv:[],hammer:[],best:[3,1,6,5,4,7,9,10],subject:[5,10],brazil:12,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],kitchen:12,easi:[0,1,3,6,5,4,8,10,11],howev:[0,5,4,11,8],against:[3,5,10,7,8],logic:[],somelist:10,login:[6,7],com:[0,6,4,8,9,12],compromis:5,assur:[10,7],foobar:6,height:[],written:[0,3,4,7,9,10],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,6,5,4,7,8,9,10,11],tini:10,quickli:[3,11],life:3,recomend:4,ani:[0,1,3,6,5,4,7,9,10,11],add_back_to_pool:10,mysql_us:6,dave:[],enterprisei:9,child:3,emploi:2,ugli:10,exception:5,east:9,servic:[1,6,4,7,8,9,10,11,12],ec2_security_group_id:9,vars_fil:[10,1,7],aim:5,ain:[],visit:3,tabl:[8,9,6],conf:[10,9,6,1,7],module_nam:[8,9],somekei:4,sever:[2,5,6,7,9,12],inventori:[0,1,3,6,7,8,9,10,11],perform:[0,3,5,6,7,10],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,11],speakerdeck:3,kept:[5,7],scenario:9,thu:6,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,12],expos:1,had:10,spread:3,els:[0,10,4,7],ffffff:4,save:[4,10,6,7],hat:[3,5],gave:3,opt:6,applic:[3,5,6,7,9,10,12],supervisord:6,quirk:2,wai:[0,1,6,5,4,7,8,9,10],fusion:6,background:11,daemon:5,specif:[1,5,4,7,8,9,10,11],arbitrari:[5,10],manual:[5,7],remind:[10,4,1],el6:6,unnecessari:[],groups_logo_sm:[],www:8,right:[],deal:[4,6],maxim:5,dead:3,born:5,intern:[9,4],heritag:[],successfulli:[3,9],txt:[6,11],forcibl:[],bottom:7,cnf:6,tracker:[0,3],condit:[10,7,11],foo:[6,7,8,9,10,11],localhost:6,core:[3,4,5,6,11],plu:[],sensibl:0,web2:9,web1:9,promot:[],repositori:[6,1],peer:5,"super":3,chapter:7,sshd:3,postgresql:6,surround:[],simul:10,"2ydx8":6,commit:1,produc:[4,6,12],match:[4,7],ppa:[0,6],basenam:6,contriv:[],halon_system_timeout:8,wrap:[],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,1,3,6,5,4,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:[2,6,5,4,7,8,9,10],war:3,fork:[9,5,10,11],head:[6,11],python26:0,form:[4,10,6,7,2],offer:[],altogeth:3,batman:0,forg:6,groupfil:8,"true":[4,10,6,7,2],freenod:[0,2,3,6,5,4,8,9,11,12],absent:[4,6,1,11],inquir:4,maximum:10,until:[10,6],ansible_fqdn:6,fundament:6,featur:[0,1,3,5,6,7,8,10],"abstract":5,fedoraproject:[],plugin:9,cobbler:[9,3,5],desir:[8,4,7],ship:[4,5,6],check:[4,10,6,11],assembl:6,pipe:[6,11],encrypt:5,take_out_of_pool:10,tip:[8,10,6,1,7],role:[10,6,1,7],test:[0,6,5,4,9,10,12],tie:9,unlimit:[],maxrequestsperchild:8,node:[0,3,5,6,7,9,10,11],relat:6,intend:4,phoenix:8,devop:3,intent:[],consid:[4,1,7],receiv:6,longer:4,anywher:[],ignor:[10,4,7],time:[0,2,3,6,5,4,7,8,9,10,11],push:[3,5,10,7],concept:[9,10,1,11],vpc:9,chain:[],"5rxgmiicbrh":6,skip:[10,7],consum:5,invent:[],skim:3,operatingsystem:10,decid:[10,5,4,7,11],middl:[],depend:[0,4,5,6,10],zone:9,flask:6,graph:[5,12],readabl:[1,7],decis:10,downtim:6,southwest:8,sourc:[0,1,2,3,4,5,6,7,9,10,11,12],string:[4,6,7],somelog:6,word:[3,9,10],brows:4,jdk:6,administr:[],level:[6,7,2],did:[3,10,9,4],passno:6,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],ansible_distribution_vers:6,current:[0,6,5,4,10,11],suspect:[],ceec4eif7ya:6,deriv:[],gener:[0,6,5,4,7,9,10],address:[1,6,5,4,8,9,10,11],along:[4,7],wait:10,box:[3,6,11],precursor:3,alta:12,extrem:[0,10,5,4],bob:[6,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:[4,10,6,1],instal:[0,3,6,5,4,7,10,11],mobil:[],httpd:[8,10,6,7,11],hyperspac:5,priv1:6,priv2:6,prove:10,is_cento:10,univers:12,fail_json:4,perl:[3,11],live:[0,10,11],handler:[11,6,1,7],criteria:10,msg:[4,9,6],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,enhanc:[],accept:[4,6],easiest:[0,9,10,3],get_xml:6,ibm:3,module_arg:9,prepar:[],uniqu:9,cat:10,whatev:[3,10,4],purpos:[3,8,6,1,7],boilerpl:4,claim:1,hostvar:10,argument_spec:4,facter_hostnam:7,chip:3,agent:[0,5,11,3],critic:3,occur:7,alwai:[4,5,6,1,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,9,10],purg:6,pure:[],somevalu:[10,4],parameter:[10,7],map:[9,7],product:[10,6],mar:[],book:5,max:11,clone:[0,4],usabl:7,membership:[10,11],pattern:[0,1,3,6,7,8,9,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:[9,5,10,7,11],"switch":5,preced:10,combin:2,talk:[11,0,7,8],ender:5,ec2_statu:9,nbsp:[],ec2_id:9,still:[0,5,4,7,9,10],pointer:4,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],window:[3,10],curli:[],pythonpath:[],mail:[0,1,2,3,4,5,6,7,8,9,10,11,12],job_statu:[],main:[3,10,4,1,7],xyz:11,security_group_pete_s_fancy_group:9,non:[3,4,6,7,8],hassl:3,env:0,encod:6,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:[4,11],name:[1,2,6,4,7,8,9,10,11],config:[3,9,7,11],didn:[5,11],crypto:3,separ:[9,6,1,7],rock:[],distro:9,domain:[],arg1:6,laserllama:3,yeah:[],ensur:[0,5,6,7,10,11],contrib:[4,6],backport:[0,6],facter:[10,5,6,7],happen:[9,4,5,6],subnet:9,shown:4,space:[3,5,6],infrar:[],profil:9,intermix:[],skylin:12,internet:3,correct:[2,5,6,7,9,10],ksmeta:9,lag:6,migrat:3,argv:4,args_fil:4,theori:7,org:[0,6,11,8],grab:[],card:5,care:[6,7],reusabl:4,couldn:3,frequenc:10,synchron:[10,7],thing:[0,1,2,5,4,7,8,10,11],place:[3,10,4],raleigh:[3,11,8],router:6,think:[10,5,4,1],frequent:[9,10],first:[0,3,6,5,4,8,10,11],origin:6,directli:[6,4,7,8,9,11],onc:[1,6,5,4,7,8,10],arrai:10,yourself:7,"long":[0,5,10,11,3],oppos:11,open:[3,5,4,7,10,12],tomorrow:12,somegroup:6,given:[10,5,6,1,11],unlink:6,convent:[9,4],gif:[],fierc:[],silenc:6,white:4,friend:12,especi:[3,5,10,1],copi:[0,10,9,6,11],motd_cont:10,retyp:0,netmask:6,github:[0,1,2,3,6,4,7,10,12],mostli:1,than:[0,1,2,3,4,5,6,7,9,10,11],cmdb:9,serv:[],wide:5,ec2_private_dns_nam:9,balanc:[3,10],were:[5,10,7,11],pre:[],sai:[0,3,5,6,7,10,11],nicer:[],id_webservergroup:9,argument:[4,9,6,7,8],dash:[9,2],loki:[],collat:6,sat:5,engin:12,squar:[],alias:4,destroi:6,note:[0,6,4,7,9,10,11],forc:6,ideal:[5,10],denomin:1,take:[6,5,4,7,10,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:[8,10,11],beta:[],pair:[9,4,2],adopt:5,meanwhil:5,runtim:10,mysql_db:6,show:[10,4,7,11],cheat:5,aggregr:4,geographi:1,permiss:[0,6,11],hack:[0,4],rotat:[3,7],xml:2,onli:[0,3,6,5,4,7,9,10,11],explicitli:[6,7],transact:10,activ:[6,12],enough:[8,5,11],dict:4,analyz:10,analyt:12,nearli:[6,2],variou:[10,5,6,7,11],get:[0,2,3,6,5,4,7,9,10,11,12],soon:[],repo:[4,9,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,through:[0,6,11,3],where:[0,1,6,5,4,9,10],summari:7,wiki:[],hour:6,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,estat:12,ansible_system_vendor:6,between:[0,1,3,5,7,10],my_app:6,"import":[10,9,4,7,11],across:[9,5],rerun:7,guitar:[],cycl:0,come:[3,4,7,11],timmi:7,region:[9,11],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,6],webapp:[5,6,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],mount:6,md5sum:[],straighten:5,trick:7,cast:4,invok:[],exist:[3,5,6,7,8,10,11],default_releas:6,newhost:6,advantag:[10,11],ec2_stat:9,canon:6,worri:[5,10],destin:[9,6],cluster:6,myapp:[10,11],rktgjk2httvs6gigvsuwwfod7:6,chkconfig:[],trival:4,http_port:[8,7],develop:[0,1,2,3,4,5,6,7,10,12],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],choos:[0,5,6,7,3],markup:[],without:[0,5,4],promis:[],model:[3,5],dereferenc:[],execut:[0,3,6,5,4,7,9,10,11],when:[1,6,5,4,7,9,10,11],rest:4,venv:6,kill:7,speed:0,aws_access_key_id:9,versu:[0,5,1],europ:12,miscellan:1,except:[9,4],littl:[3,5],otherus:11,blob:[],notori:5,vulner:5,real:[0,10,7,12,3],ignore_error:10,around:5,ohai:[10,5,6,7],read:[0,2,3,6,5,4,9,11],dark:9,mon:[],world:[0,5,10,7,12],intel:6,whitespac:1,realtim:12,ak123:9,integ:[],server:[3,5,6,7,8,9,10,11],rycsbf1d8e5ptxesxhqs4iq:6,output:[9,4,5,6,7],manag:[0,2,3,5,6,7,8,9,10,11],ec2_kernel:9,assmebl:6,sneaker:[],jquery_directori:[],titan:[],altalang:[],server01:[],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,4,7,9,10],broken:1,found:[3,4,9,6,10],"throw":[5,4],earlier:[0,7],src:[10,9,6,7,11],stone:4,central:[3,5,10],greatli:[],get_url:6,acm:[8,10,6,1,11],wolf:9,stand:6,act:6,industri:[3,5,12],mytempl:6,effici:[5,10],terminolog:9,anothert:6,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,8,10,11,12],ipv6:6,bundl:1,vpc_destination_vari:9,congratul:0,faster:[10,4],strawberri:2,dirti:[0,6],possibl:[1,6,4,7,8,9,10,11],"default":[0,3,6,5,4,8,9,10,11],ansible_fact:4,stacktrac:4,connect:[0,10,5,6,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],beyond:[10,12],googl:[0,1,2,3,4,5,6,7,8,9,10,11,12],compel:[],repositor:6,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,qeuz:6,cpu:6,all:[0,1,2,3,4,5,6,7,8,9,10,11,12],forget:10,selinux:[6,7],lack:[],mnt:6,month:0,scalar:4,abil:[5,7],follow:[0,5,6,8,9,10,11],alt:[],disk:6,children:8,nors:[],articl:[3,4,6],program:[3,2,6,5,4,7,10],mcollect:[],arbitari:2,introduc:3,liter:6,tag_name_redi:9,song:[],fals:[10,4,2],faq:[3,5],util:[],mechan:[],failur:[9,10,5,4,7],veri:[0,1,3,6,5,4,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:[3,2,5,6,9,10],testuser2:10,testuser1:10,enterpris:[0,12],yetanotherdb:6,strung:11,zero:[8,4,7],design:[3,5,11,8],pass:[0,6,4,7,9,10,11],further:[5,10,11,2],ec2_spot_instance_request_id:9,what:[0,1,2,3,4,5,6,7,9,10,11,12],sub:[],section:[0,1,5,7,8,10,11],abl:[3,10,6],delet:[6,7,11],abbrevi:2,ec2_state_reason:9,method:[9,5,11],movement:3,hasn:5,full:[10,6,7],hash:[8,10,9,4,2],shouldn:[5,10],recip:0,first_available_fil:10,strong:3,modifi:[4,9,6],fail_on_us:6,valu:[2,6,4,7,9,10,11,12],search:12,ahead:[0,7],likin:5,memcach:[10,7],prior:[10,6],amount:9,pick:[5,11],action:[10,9,6,7],via:[0,10,9,6,3],shorthand:[10,4],factnam:10,ec2_state_cod:9,managememnt:[],href:[],select:[1,6,4,7,8,10,11],distinct:[],stdout:[9,10],regist:10,two:[3,9,6,7,8],rhel:0,demo:11,taken:[5,7],toggl:6,more:[0,1,3,5,6,7,8,9,10,11],flat:7,door:5,hundr:12,flag:[0,7,11],particular:[6,7,8,9,10,11],known:6,compani:[5,4,12],cach:[9,6],none:[0,9,6],pkgbuild:0,hous:[],launch:[10,7],dev:[5,6],remain:[],learn:[0,1,2,3,5,4,7,8,10],deb:6,nagio:6,instantan:5,prompt:[10,7,11],yamllint:2,moduledev:[],templat:[1,6,5,4,7,9,10,11],minimum:[10,4,7],explor:[0,9],pong:6,cygat:12,cours:[5,10,1],newlin:[],secur:[9,3,10,5,6],rather:[10,5,4],anoth:[3,1,2,5,6,7,10,11],simpl:[3,1,2,5,4,7,9,10,11],css:[],unabl:6,resourc:[4,10,5,6,7],referenc:[8,10,7],variant:0,fstype:6,ff0000:4,neccesssari:[],args_data:4,associ:[9,2],spool:6,"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,scott:5,hierarchi:[],hell:3,suffer:5,paramet:[1,6,4,7,10,11],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],troubleshoot: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,4],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:[],halen:[],orient:7,hostnam:[8,10,9,6,7],ftp:6,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,thrown:[],pyyaml:0,sytem:5,daisi:[],drupal:12,omit:1,american:[],ansible_system:6,assign:[8,10,9,6,1],feed:[],sdwippefq74nppvuelhpkkaiojjnn1zuhfol:6,notifi:[1,6,5,4,7,11],obviou:[],feel:[9,10,2],exchang:10,number:[3,10,5,6,8],placehold:[10,7],done:[0,1,3,5,6,8,10],least:[10,1],blank:6,stabl:[0,6],fiction:[],differ:[0,1,3,5,6,7,8,9,10,11],list_vm:6,guest:6,script:[3,5,4,8,9,10,11],interact:[9,11],construct:[9,5,10,7],camelot:10,make_databas:6,statement:[10,4,7],cfg:11,banana:[],store:[8,10,6,12],option:[0,1,6,5,4,7,8,9,10,11],behind:[5,6],selector:11,part:[3,4,5,6,10],ec2_key_nam:9,consult:12,reinstal:[],jump:[0,3],kind:[5,4],grep:[],whenev:4,remot:[0,10,6,7,11],gotten:3,remov:[8,10,6,11],jqueri:[],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:[],createhom:6,equival:[10,6],self:[5,4],"123i":12,also:[0,1,2,3,4,5,6,7,8,9,10,11,12],build:[9,0,4,5,6],brace:[],distribut:[0,5,1,12,3],passwd:6,previou:10,reach:[3,1],most:[0,1,2,3,5,6,7,9,10,11],plai:[3,10,7],plan:5,alpha:6,bug:[0,3],filesystem:10,clear:1,cover:[9,5,10],roughli:0,clojur:4,clean:5,pars:[5,4],usual:[7,11],awesom:[3,6,12],commerc:12,ansible_processor_count:6,alphanumer:9,devolv:[],mpd_ring:[],particularli:[9,10,7],fine:[0,4],find:[10,9,4,7,12],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],silli:[],him:12,restart:[1,5,6,7,8,11],mdehaan:[6,11],dollar_sign_syntax:[],common:[1,2,6,4,9,10],wrote:4,set:[0,1,3,6,5,4,7,8,9,10,11],dump:[4,6],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,analog:[],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,6,5,4,9,10,11],last:[0,3],delimit:6,boto:9,thor:[],uncrypt:7,context:6,whole:5,load:[3,10,11],simpli:[9,6,1,7],point:[10,6,1],instanti:4,schedul:6,etc_other_conf_oth:1,header:8,shutdown:[10,6],suppli:6,asdf:[],backend:[],unsuccess:7,java:[],instrument:[],devic:6,due:[0,5,4],empti:9,ran:3,host4:9,enable_alert:6,escape_pod:8,strategi:5,wish:[0,9,10,7,2],fire:[3,5,10],imag:[],convert:[9,4],append:6,gap:5,understand:[3,10,7],comprimis:3,educ:4,look:[3,6,4,7,8,9,10,11],straight:11,batch:[5,11],"while":[3,5,10,1,7],unifi:[],smart:[6,11],behavior:[10,6,11,12],error:[4,10,5,6],loop:[10,7],pack:9,gimm:[],pragmat:[],motd:[9,10,7],max_client:7,readm:[],jpg:[],itself:[9,0,5,6],ansible_ssh_host_key_rsa_publ:6,unmount:6,fedora:[0,12],grant:6,login_usernam:6,belong:9,exit_json:4,higher:[0,10],optim:1,painless:3,alert:6,moment:9,temporari:[],user:[0,1,3,6,5,4,7,9,10,11,12],yesterdai:3,recent:5,lower:[3,5],task:[3,1,5,6,7,10,11],lib:4,older:6,entri:[3,11],lizenzfrei:12,spent:5,expens:9,endfor:10,spend:5,explan:4,ec2_monitor:9,mysql:6,love:[],centos6:9,shortcut:4,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],judgement:6,nginx:6,game:[3,5],quest:10,bobdata:6,bit:[10,5,6,7],abduct:[],ec2_ownerid:9,xaby9ud5brbfvkedu:6,name_of_fact:[],knock:5,capital_of_assyria:[],signal:[5,6],"98dbcgqw5hme89cjgzro5ktkc5yu":6,manifest:5,"boolean":[4,2],popular:[3,12],cmdfile:6,postgresql_db:6,encount: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,6,7,10,11],sampl:11,mirror:[],virtualenv:6,scale:[5,10],ec2_tag_kei:9,per:[9,10],pem:0,substitut:[],mathemat:[],larg:[5,10],either:[9,10,5,6],machin:[0,1,3,6,5,4,7,10,11],object:4,run:[0,2,3,6,5,4,7,8,9,10,11,12],step:[0,3,5,6,7,8,10,11],squeez:6,meantim:5,frob:6,major:9,impor:[],ec2_launch_tim:9,othervar:[],ansible_eth0:[10,6],block:10,fulfil:7,steelhous:12,primarili:[],unreach:7,intl:[],within:[9,8,5,10,7],contributor:12,chang:[3,1,6,4,7,8,10,11],subvers:6,bserver:0,rxp33wfphjwjwvhatfci1nrbaudqi:6,inclus:8,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],translat:12,newer:0,line:[0,2,3,6,5,4,7,8,9,10,11],info:[9,6,11],concaten:6,consist:4,caller:6,planet:3,schmooz:12,ec2_dns_nam:9,highlight:[],similar:[8,10,9,6,11],curv:[3,5],module_common:4,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:[],disable_alert:6,likes_emac:2,transport:[0,5,3],peopl:[3,10,12],nice:[3,7],draw:3,asciidoc:[],meaning:[],svn:6,happier:3,far:[11,2],hello:0,jupit:[],local_act:10,pluggabl:[3,5],code:[3,1,5,4,7,9,10,11,12],alien:[],async_statu:11,privat:[0,9,10],sensit:10,elsewher:[],friendli:3,send:10,autostart:6,sens:[0,9,6,7],fatal:[4,7],blindingli:[],sent:4,sensic:3,logtre:6,whichev:11,signfic:4,asdf1234l:6,implicitli:5,ec2_root_device_typ:9,relev:[10,5,4],tri:6,magic:[10,5,4,7],roll:10,id_rsa:[0,11],michael:[3,12],fewer:10,"try":[0,3,6,5,4,7,9,10],p2xkxaczh6fc:6,pleas:[9,0,5,6],malici:5,impli:6,natur:[],focu:12,cron:[5,10],gmbh:12,mysqldb:6,download:[0,6],ansible_python_interpret:8,folk:[0,11,12],index:9,turn:[3,10,5,4],compar:5,access:[0,10,9,6,3],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:[0,9,6],becom:10,sinc:[9,6,1,11],great:[3,1,5,4,7,10,12],convers:8,hypervisor:6,technolog:[3,12],"_some_str":7,later:[0,6,4,7,8,10,11],unsil:6,typic:[5,7,11],maker:12,hardi:6,fstab:6,heart:9,win:[],app:[5,10],apt:[10,6,1,11],austria:12,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,6,7],"8b3satjxmpgbfbueebwubk5ejl":6,doubl:11,upgrad:[6,7,11],next:[0,3,5,6,7,8,10,11],few:[9,6],usr:[0,6,4,7,8,9,10,11],sort:[5,6,12],dbserver:[8,10,1,11],impress:[3,10],sbin:[10,6,7,11],trail:1,train:5,login_password:6,ansible_nocolor:10,starter:[4,7],account:[0,6,7,11],chdir:6,retriev:10,tunnel:3,alia:[4,6,8],openjdk:6,alic:7,halt:[],obvious:10,ec2_ramdisk:9,fetch:[10,6],proof:4,employe:[5,2],thirsti:6,tar:0,process:[3,5,6,7,11],lock:[5,10],sudo:[0,3,5,6,7,11],mango:2,high:[4,11],knows_oop:2,tag:[0,10,9,6],tab:7,tarbal:[],onlin:2,serial:10,surfac:[3,5],orson:5,lame:2,mysql_root_password:[],"_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:[10,9,4],issu:[0,5,3],allow:[0,1,6,5,4,9,10,11],aws_secret_access_kei:9,move:[10,6,7],elit:2,comma:[9,6],loginpass:[],release_vers:10,bunch:[],somecommand:7,taboot:5,infrastructur:[0,1,3,5,7,8],anyon:5,therefor:10,ansible_product_uuid:6,dag:12,greater:8,python:[0,2,3,6,5,4,8,9,10,11],auto:[4,9,6],dai:[3,5],auth:6,devel:[],mention:[11,10,4,1,7],rubygem:[],instead:[0,1,5,6,10,11],strive:4,multiprocess:5,somewher:10,anyth:[9,4,5,6],edit:[0,9,6],slide:3,mode:[0,5,6,7,10,11],subset:[],grok:3,bump:[],strip:6,usernam:[6,11],ec2:[3,9],our:[3,12,11,2],patch:5,pitfal:4,special:[9,6],out:[3,1,6,5,4,7,8,9,10,11],variabl:[0,1,3,6,5,4,7,8,9,10,11],twice:[],reboot:[6,7,11],security_group_:9,rel:[8,6,1],"_default":6,leverag:0,ref:[],login_host:6,red:[9,3,5,4],clarifi:[],insid:[10,9,4,7],unpars:4,ansible_machin:6,control:[3,1,6,5,4,7,8,9,10,11],dictionari:[10,9,4,2],releas:[0,10,5,6,7],include_ansible_module_common:4,indent:2,could:[6,5,4,7,9,10],put:[0,1,6,7,8,10],fqdn:10,keep:[0,1,6,4,8,9,10],outsid:[9,4],adrian:5,retain:5,stuck:7,localdomain:6,delegate_to:[10,6],softwar:[3,1,5,6,9,10,11],qualiti:4,scene:6,echo:[0,9,10,11],exact:[],date:[0,4],puppet:[9,3,5,6],submit:[5,4],owner:[6,11],facil:[],prioriti:[10,6],ansible_lo:6,perfectli:[],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,6,4,7,9,10,11],ec2_descript:9,"var":[8,10,6,1,7],rst:[],nobodi:4,priveledg:[],dive:7,richer:5,intervert:10,charact:[9,2],sweden:12,favorit:[5,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],unexpect:[],min:[],mix:[8,10,7],baisc:[],tag_name_web:9,which:[0,1,2,3,4,5,6,7,8,9,10,11],datacent:[8,1,11],with_item:10,divers:3,singl:[5,6,7,9,10,11],ec2_security_group_nam:9,unless:[10,5,6,7],clash:[],deploy:[11,0,5,7,3],who:[3,9,6,7,12],salli:6,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,url:6,gather:[10,5,6,7],request:6,self_destruct_countdown:8,snapshot:6,determin:10,built:[0,5,6,9,10,11],constrain:11,fact:[3,6,5,4,7,10],text:[],verbos:[4,6,7],bring:[5,7],playbook:[0,1,2,3,4,5,6,7,8,9,10,11],trivial:[0,3,6,4,9,10],anywai:8,varnam:7,redirect:11,locat:[8,10,6,7,11],tire:5,should:[0,1,2,3,4,5,6,7,9,10,12],ansible_swapfree_mb:6,won:[7,11],ec2_root_device_nam:9,"5px":[],local:[10,5,6],something_els:4,contribut:[0,3,6,4,11,12],notat:[],familiar:9,pave:[],autom:[5,1,11],somevar:10,increas:10,ansible_ssh_port:[],enabl:[4,6],organ:[6,1,12],bounc:[6,7],sha:6,stuff:[3,11],integr:[3,9,6],contain:[0,1,3,5,4,7,9,10],ymwaaaebalnasqn10tngsrde5arbsw8ctojqlyybciqgpytzw8zenerfxt7ij3fw3jh:6,view:3,legaci:6,cthy5bws9kmyjmeo0kfumh8hy4maxdokhq7dhbpircjs5jptogxirezjba67r6:6,nodeinfo:6,skynet:6,stack:10,gmail:[],statu:[4,10,6,11],wire:[],extend:[3,5,10,1,7],correctli:6,mainli:[5,10],state:[1,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,5,4,7,8,9,10],homebrew:0,"2pm":3,addit:[1,6,4,7,8,9,10],instant:[],southeast:8,admin:[3,9],goal:[7,11],equal:[5,4,11],ohai_foo:[],etc:[0,3,5,6,7,8,9,10,11],instanc:[8,10,9,6,7],comment:[4,6,1],english:6,guidelin:4,chmod:[4,9,6,7],distil:5,rpm:[0,4,11],mailto:[],quit:[4,1],evalu:[10,11],platform:[10,5,6,12],addition:[10,7,11],decent:[],compos:7,compon:[],json:[2,6,5,4,9,10],besid:4,treat:[5,4,1],ungroup:[],immedi:[10,6,7],"2677m":6,yournam:7,capistrano:5,global_var:1,vmware:6,togeth:[6,1,11],minim:[0,4],ador:3,atlanta:[8,9,11],present:[3,4,10,6,1],authorized_kei:[0,6],multi:[3,5,7],plain:3,align:[],ansible_virtualization_typ:6,defin:[10,9,6,7],glossari:[],ultra:3,layer:[9,5],almost:[5,6],virt:6,site:[5,10,1,12],archiv:6,lightweight:9,partner:6,revis:[],michaeldehaan:[],surprisingli:[],scienc:[],welcom:[3,9],parti:[],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:6,structur:[10,6],denot:8,upon:[],effect:[],libvirt:6,php:11,distutil:0,pull:[9,5,10],audit:[3,10,1],off:[3,5,10,1],center:[],seth:5,exampl:[0,1,2,3,4,5,6,7,8,9,10,11],command:[0,3,6,5,4,7,8,9,10,11],interpol:10,undefin:6,latest:[0,10,6,7,11],lest:3,tunabl:1,distanc:5,paus:6,less:[0,5,3],additon:0,starbuck:10,heavili:5,skill:2,simultan:11,web:[9,5,10,11,12],host5:9,cleanup:10,host3:[8,9],host2:[8,9],host1:[8,9],introduct:[6,7],kick:[3,10,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:[],password:[0,5,6,7,10,11],recurs:[6,11],python3:0,python2:0,insert:6,motorola:3,like:[0,1,2,3,4,5,6,7,8,9,10,11],success:[4,6,7],amazonaw:9,necessari:11,lose:11,async:10,architectur:[3,5,10],page:[0,5,11,2,3],ansible_hostnam:[10,6],shed:5,revers:[3,6],captur:4,twitter:[],linux:[0,5,6,12,3],"export":[0,9],home:6,librari:[6,1,2],tmp:[9,6,7,11],lead:[8,5,12],avoid:[0,6,7,3],thank:5,overlap:[],update_cach:6,encourag:[10,5,4,1,7],slight:9,importerror:[],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,about:[0,1,2,3,4,5,6,7,9,10,11],actual:[4,10,5,6],swear:3,discard:6,disabl:[6,7],ntp_server:8,own:[1,6,5,4,7,9,10],easy_instal:6,automat:[4,9,6,1,11],ec2_public_dns_nam:9,some_serv:8,hang:7,merg:[5,4],van:[],transfer:[4,6,7,11],intention:[],trigger:[5,6,7],"8agepocvjdhyzr7pahfxzgudgktgrl2qzryukcmwo1czbmbhci5fzimvths9":6,replac:6,biggest:12,individu:[8,1],"function":[4,6],simplejson:[0,6],subscrib:[],nnwugi:[],continu:[4,10,6],ec2_plac:9,eas:5,eat:11,count:[10,7],succe:4,made:[3,6,5,4,7,8,10],whether:[1,6,5,4,9,10],arg2:6,writeabl:7,asynchron:[10,7],record:2,below:[0,6,7],limit:[10,11],otherwis:[4,10,6,11],problem:[3,5,6,2],epel:0,pin:6,is_favcolor_blu:10,filenam:[10,6],ec2_tag_nam:9,implement:[9,5,4],ini:[8,9],mountpoint:6,pip:6,ing:6,probabl:[0,5,4,1,7],boot:6,detail:[9,4,7,11],virtual:[6,7],capabilit:[],other:[0,2,3,6,5,4,7,8,9,10,11,12],futur:[10,4],rememb:[7,11],varieti:[9,5,4],riak:12,ec2_external_inventori:9,repeat:[10,1],"class":[9,4,7],ansiblemodul:4,debian:[0,10,6],stai:10,sphinx:[],amp:[8,9],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 &amp; Patterns","API &amp; Integrations","Advanced Playbooks","Command Line Examples And Next Steps","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 \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment