清单

Ansible可以同时处理多个系统,其使用的方法是通过清单文件的系统列表。这个清单文件默认位于/etc/ansible/hosts。并且,也可以同时使用多个清单文件,甚至可以动态地或者从云资源中拉取清单(参考动态清单)。

主机和分组

/etc/ansible/hosts是一个类似INI格式的文件

mail.example.com

[webservers]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com
three.example.com

上述配置中分组按照服务器类型,例如web服务器和数据库服务器。

如果主机使用了非标准的SSH端口,可以在主机名后加上端口号,类似

badwolf.example.com:5309

也支持以下方式表示主机

[webservers]
www[01:50].example.com
[databases]
db-[a:f].example.com

可以设置每个主机的连接方式

[targets]

localhost              ansible_connection=local
other1.example.com     ansible_connection=ssh        ansible_user=mpdehaan
other2.example.com     ansible_connection=ssh        ansible_user=mdehaan

分组变量

可以一次给整个组设置变量

[atlanta]
host1
host2

[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com

子组和组变量

可以使用:children后缀来建立组的子组:

[atlanta]
host1
host2

[raleigh]
host2
host3

[southeast:children]
atlanta
raleigh

[southeast:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2

[usa:children]
southeast
northeast
southwest
northwest

案例

待补充

Last updated