主机与组 

/etc/ansible/hosts 文件的格式与windows的in配置文件类似:

node2:/root/.ssh#cat /etc/ansible/hosts
[webservers]
192.168.137.2
115.236.19.4:9998

node2:/root#ansible all -m ping
192.168.137.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
115.236.19.4 | SUCCESS => {
"changed": false,
"ping": "pong"
}

方括号[]中是组名,用于对系统进行分类,便于对不同系统进行个别的管理。


一个系统可以属于不同的组,比如一台服务器可以同时属于webserver组合dbserver组。

这时属于两个组的变量都可以为这台主机所用

如果有主机的SSH端口不是标准22端口,可在主机名之后加上端口号,用冒号分隔.SSH配置文件中列出的端口号

不会在paramiko连接中使用,会在openssh连接中使用

端口号不是默认设置时,可明确的表示为:

badwolf.example.com:5309

假设你有一些静态IP地址,希望设置一些别名,但不是在系统的host文件中设置,

又或者你是通过隧道在连接,那么可以设置如下:

对于每一个host,你还可以选择连接类型和连接用户名:

node2:/root#cat /etc/ansible/hosts
[webservers]
192.168.137.2
115.236.19.4:9998
[app01]
120.26.224.164 ansible_connection=ssh ansible_ssh_user=oracle

node2:/root#ansible -i /etc/ansible/hosts app01 -m shell -a "hostname"
120.26.224.164 | FAILED | rc=-1 >>
using -c ssh on certain older ssh versions may not support ControlPersist, set ANSIBLE_SSH_ARGS="" (or ssh_args in [ssh_connection] section of the config file) before running again

You have mail in /var/spool/mail/root

node2:/root#ansible -i /etc/ansible/hosts app01 -m shell -a "hostname"
120.26.224.164 | SUCCESS | rc=0 >>
oadb

所有以上的对于inventory文件的设置一种速记法,后面我们会讨论如何将这些设置保存为
'host_vars' 目录中的独立文件


主机变量


分文件定义Host和Group 变量

在inventory主文件中保存所有的变量并不是最佳的方式。 还可以保存在独立的文件中,这些独立文件与

inventory文件保持关联。

假设inventory 文件的路径为:

/etc/ansible/hosts

假设有一个主机名为'foosball',主机同时属于两个组,一个是'raleigh';另一个是'webservers'.

那么以下配置文件(YAML格式)中的变量可以为'fooball'主机所用,依次为'raleigh'的组变量;

webservers的组变量,'foosball'的主机变量: