2012-03-07 17:35:18 +01:00
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
2012-03-13 00:13:19 +01:00
< title > The Inventory File, Patterns, and Groups — Ansible - SSH-Based Configuration Management & Deployment< / title >
2012-03-07 17:35:18 +01:00
< link rel = "stylesheet" href = "_static/default.css" type = "text/css" / >
< link rel = "stylesheet" href = "_static/pygments.css" type = "text/css" / >
2012-03-09 17:44:14 +01:00
< link rel = "stylesheet" href = "_static/bootstrap.css" type = "text/css" / >
< link rel = "stylesheet" href = "_static/bootstrap-sphinx.css" type = "text/css" / >
2012-03-07 17:35:18 +01:00
< script type = "text/javascript" >
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
2012-03-13 00:13:19 +01:00
VERSION: '0.01',
2012-03-07 17:35:18 +01:00
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
2012-03-09 17:50:07 +01:00
HAS_SOURCE: false
2012-03-07 17:35:18 +01:00
};
< / script >
< script type = "text/javascript" src = "_static/jquery.js" > < / script >
< script type = "text/javascript" src = "_static/underscore.js" > < / script >
< script type = "text/javascript" src = "_static/doctools.js" > < / script >
2012-03-09 17:44:14 +01:00
< script type = "text/javascript" src = "_static/bootstrap-dropdown.js" > < / script >
< script type = "text/javascript" src = "_static/bootstrap-scrollspy.js" > < / script >
2012-03-13 00:13:19 +01:00
< link rel = "top" title = "Ansible - SSH-Based Configuration Management & Deployment" href = "index.html" / >
2012-03-09 13:42:53 +01:00
< link rel = "next" title = "Command Line Examples" href = "examples.html" / >
2012-03-10 03:50:00 +01:00
< link rel = "prev" title = "Downloads & Getting Started" href = "gettingstarted.html" / >
2012-03-09 17:44:14 +01:00
< script type = "text/javascript" >
(function () {
/**
* Patch TOC list.
*
* Will mutate the underlying span to have a correct ul for nav.
*
* @param $span: Span containing nested UL's to mutate.
* @param minLevel: Starting level for nested lists. (1: global, 2: local).
*/
var patchToc = function ($span, minLevel) {
var $tocList = $("< ul / > ").attr('class', "dropdown-menu"),
findA;
// Find all a "internal" tags, traversing recursively.
findA = function ($elem, level) {
var level = level || 0,
$items = $elem.find("> li > a.internal, > ul, > li > ul");
// Iterate everything in order.
$items.each(function (index, item) {
var $item = $(item),
tag = item.tagName.toLowerCase(),
pad = 10 + ((level - minLevel) * 10);
if (tag === 'a' & & level >= minLevel) {
// Add to existing padding.
$item.css('padding-left', pad + "px");
// Add list element.
$tocList.append($("< li / > ").append($item));
} else if (tag === 'ul') {
// Recurse.
findA($item, level + 1);
}
});
};
// Start construction and return.
findA($span);
// Wipe out old list and patch in new one.
return $span.empty("ul").append($tocList);
};
$(document).ready(function () {
// Patch the global and local TOC's to be bootstrap-compliant.
patchToc($("span.globaltoc"), 1);
patchToc($("span.localtoc"), 2);
// Activate.
$('#topbar').dropdown();
});
}());
< / script >
2012-03-10 04:31:54 +01:00
< script type = "text/javascript" >
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-29861888-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type =
'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
< / script >
2012-03-09 17:44:14 +01:00
2012-03-07 17:35:18 +01:00
< / head >
< body >
2012-03-09 17:44:14 +01:00
< div class = "topbar" data-scrollspy = "scrollspy" >
< div class = "topbar-inner" >
< div class = "container" >
< a class = "brand" href = "index.html" > Ansible< / a >
< ul class = "nav" >
< li class = "dropdown" data-dropdown = "dropdown" >
< a href = "index.html"
class="dropdown-toggle">Site< / a >
< span class = "globaltoc" > < ul class = "current" >
2012-03-10 03:50:00 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "gettingstarted.html" > Downloads & Getting Started< / a > < / li >
2012-03-09 17:44:14 +01:00
< li class = "toctree-l1 current" > < a class = "current reference internal" href = "" > The Inventory File, Patterns, and Groups< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "examples.html" > Command Line Examples< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "modules.html" > Ansible Modules< / a > < / li >
2012-03-11 20:34:21 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "YAMLSyntax.html" > YAML Syntax< / a > < / li >
2012-03-09 17:44:14 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "playbooks.html" > Playbooks< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "api.html" > Using the Python API< / a > < / li >
2012-03-14 17:50:40 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "moduledev.html" > Module Development Guide< / a > < / li >
2012-03-10 03:50:00 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "faq.html" > Frequently Asked Questions< / a > < / li >
2012-03-09 17:44:14 +01:00
< li class = "toctree-l1" > < a class = "reference internal" href = "man.html" > Man Pages< / a > < / li >
< / ul >
< / span >
< / li >
< li class = "dropdown" data-dropdown = "dropdown" >
< a href = "#"
class="dropdown-toggle">Page< / a >
< span class = "localtoc" > < ul >
< li > < a class = "reference internal" href = "#" > The Inventory File, Patterns, and Groups< / a > < ul >
< li > < a class = "reference internal" href = "#inventory-file-format" > Inventory File Format< / a > < / li >
< li > < a class = "reference internal" href = "#selecting-targets" > Selecting Targets< / a > < / li >
< / ul >
< / li >
< / ul >
< / span >
< / li >
< li > < a href = "gettingstarted.html"
2012-03-10 03:50:00 +01:00
title="previous chapter">« Downloads & Getting Started< / a > < / li >
2012-03-09 17:44:14 +01:00
< li > < a href = "examples.html"
title="next chapter">Command Line Examples » < / a > < / li >
2012-03-07 17:35:18 +01:00
2012-03-09 17:44:14 +01:00
< / ul >
< ul class = "nav secondary-nav" >
< form class = "pull-left" action = "search.html" method = "get" >
< input type = "text" name = "q" placeholder = "Search" / >
< input type = "hidden" name = "check_keywords" value = "yes" / >
< input type = "hidden" name = "area" value = "default" / >
< / form >
< / ul >
< / div >
< / div >
< / div >
2012-03-10 16:39:34 +01:00
< a href = "https://github.com/ansible/ansible" > < img
style="position: absolute; top: 40px; right: 0; border: 0;"
src="https://a248.e.akamai.net/assets.github.com/img/71eeaab9d563c2b3c590319b398dd35683265e85/687474703a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f677261795f3664366436642e706e67"
alt="Fork me on GitHub"
alt="Fork me on GitHub">< / a >
2012-03-09 17:44:14 +01:00
< div class = "container" >
2012-03-08 19:53:48 +01:00
< div class = "section" id = "the-inventory-file-patterns-and-groups" >
2012-03-09 17:44:14 +01:00
< span id = "patterns" > < / span > < h1 > The Inventory File, Patterns, and Groups< a class = "headerlink" href = "#the-inventory-file-patterns-and-groups" title = "Permalink to this headline" > ¶< / a > < / h1 >
2012-03-08 19:36:47 +01:00
< p > How to select hosts you wish to manage< / p >
< div class = "admonition-see-also admonition seealso" >
< p class = "first admonition-title" > See also< / p >
< dl class = "last docutils" >
2012-03-09 13:42:53 +01:00
< dt > < a class = "reference internal" href = "examples.html" > < em > Command Line Examples< / em > < / a > < / dt >
2012-03-08 19:36:47 +01:00
< dd > Examples of basic commands< / dd >
2012-03-09 17:44:14 +01:00
< dt > < a class = "reference internal" href = "playbooks.html" > < em > Playbooks< / em > < / a > < / dt >
2012-03-08 19:36:47 +01:00
< dd > Learning ansible’ s configuration management language< / dd >
< / dl >
< / div >
2012-03-08 19:53:48 +01:00
< div class = "section" id = "inventory-file-format" >
2012-03-10 00:29:01 +01:00
< span id = "inventoryformat" > < / span > < h2 > Inventory File Format< a class = "headerlink" href = "#inventory-file-format" title = "Permalink to this headline" > ¶< / a > < / h2 >
2012-03-08 19:36:47 +01:00
< p > Ansible works against multiple systems in your infrastructure at the
2012-03-10 00:29:01 +01:00
same time. It does this by selecting portions of systems listed in
Ansible’ s inventory file, which defaults to /etc/ansible/hosts, and
looks like this:< / p >
2012-03-08 19:36:47 +01:00
< 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 >
< span class = "p" > [< / span > < span class = "n" > webservers< / span > < span class = "p" > ]< / span >
< span class = "n" > foo< / span > < span class = "o" > .< / span > < span class = "n" > example< / span > < span class = "o" > .< / span > < span class = "n" > com< / span >
< span class = "n" > bar< / span > < span class = "o" > .< / span > < span class = "n" > example< / span > < span class = "o" > .< / span > < span class = "n" > com< / span >
< span class = "p" > [< / span > < span class = "n" > dbservers< / span > < span class = "p" > ]< / span >
< span class = "n" > one< / span > < span class = "o" > .< / span > < span class = "n" > example< / span > < span class = "o" > .< / span > < span class = "n" > com< / span >
< span class = "n" > two< / span > < span class = "o" > .< / span > < span class = "n" > example< / span > < span class = "o" > .< / span > < span class = "n" > com< / span >
< span class = "n" > three< / span > < span class = "o" > .< / span > < span class = "n" > example< / span > < span class = "o" > .< / span > < span class = "n" > com< / span >
< / pre > < / div >
< / div >
2012-03-11 20:34:21 +01:00
< p > The things in brackets are group names, you don’ t have to have them,
but they are useful.< / p >
2012-03-08 19:36:47 +01:00
< / div >
2012-03-08 19:53:48 +01:00
< div class = "section" id = "selecting-targets" >
< h2 > Selecting Targets< a class = "headerlink" href = "#selecting-targets" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > These patterns target all hosts in the inventory file:< / p >
< div class = "highlight-python" > < pre > all
*< / pre >
2012-03-08 19:36:47 +01:00
< / div >
2012-03-11 20:34:21 +01:00
< p > Basically ‘ all’ is an alias for ‘ *’ . It is also possible to address a specific host or hosts:< / p >
2012-03-08 19:53:48 +01:00
< div class = "highlight-python" > < pre > one.example.com
2012-03-11 20:34:21 +01:00
one.example.com:two.example.com
192.168.1.50
192.168.1.*< / pre >
2012-03-08 19:53:48 +01:00
< / div >
2012-03-09 17:44:14 +01:00
< p > The following patterns address one or more groups, which are denoted
2012-03-11 20:34:21 +01:00
with the aforementioned bracket headers in the inventory file:< / p >
2012-03-08 19:53:48 +01:00
< div class = "highlight-python" > < pre > webservers
webservers:dbservers< / pre >
2012-03-08 19:36:47 +01:00
< / div >
2012-03-11 20:34:21 +01:00
< p > Individual host names (or IPs), but not groups, can also be referenced using
2012-03-09 17:44:14 +01:00
wildcards:< / p >
< div class = "highlight-python" > < pre > *.example.com
*.com< / pre >
< / div >
2012-03-08 19:53:48 +01:00
< p > It’ s also ok to mix wildcard patterns and groups at the same time:< / p >
< div class = "highlight-python" > < pre > one*.com:dbservers< / pre >
2012-03-08 19:36:47 +01:00
< / div >
2012-03-10 00:29:01 +01:00
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
2012-03-11 20:34:21 +01:00
< p class = "last" > It is not possible to target a host not in the inventory file. This is a safety feature.< / p >
2012-03-10 00:29:01 +01:00
< / div >
2012-03-11 20:34:21 +01:00
< p > Easy enough. Now see < a class = "reference internal" href = "examples.html" > < em > Command Line Examples< / em > < / a > and then < a class = "reference internal" href = "playbooks.html" > < em > Playbooks< / em > < / a > for how to do things to selected hosts.< / p >
2012-03-08 19:36:47 +01:00
< / div >
2012-03-07 17:35:18 +01:00
< / div >
< / div >
2012-03-09 17:44:14 +01:00
< footer class = "footer" >
< div class = "container" >
< p class = "pull-right" > < a href = "#" > Back to top< / a > < / p >
< p >
© Copyright 2012 Michael DeHaan.< br / >
2012-03-15 01:57:35 +01:00
Last updated on Mar 14, 2012.< br / >
2012-03-10 00:29:01 +01:00
Created using < a href = "http://sphinx.pocoo.org/" > Sphinx< / a > 1.0.8.< br / >
2012-03-09 17:44:14 +01:00
< / p >
< / div >
< / footer >
2012-03-07 17:35:18 +01:00
< / body >
< / html >