-i inventory 指定配置文件默认情况下,Ansible 会去 /etc/ansible/hosts 找主机清单。
如果你有自己写的,比如 inventory.ini,执行时要指定:
ansible -i inventory.ini all -m ping
这样它就用你给的文件。
all 的含义all 并不是你 inventory 里写的一个组,而是 Ansible 内置的 隐含组:
all = 你在 inventory 文件里定义的 所有主机。Ansible 会自动去重,不会执行两遍。
[webservers] 和 [dbservers] 里都写了 192.168.1.10,ansible all -m ping 时,它只会对 192.168.1.10 执行一次。不过:
假设你 inventory 里有:
[webservers]
192.168.1.10
192.168.1.11
[dbservers]
192.168.1.20
如果你只想执行 webservers 组:
ansible -i inventory.ini webservers -m ping
只想执行 dbservers 组:
ansible -i inventory.ini dbservers -m ping
你也可以直接写 IP 或主机名,不用组:
ansible -i inventory.ini 192.168.1.10 -m ping
Ansible 支持在命令里写组的组合:
同时执行多个组:
ansible -i inventory.ini "webservers:dbservers" -m ping
执行两个组的交集(属于两个组的主机):
ansible -i inventory.ini "webservers:&dbservers" -m ping
执行属于 webservers 但不属于 dbservers 的主机:
ansible -i inventory.ini "webservers:!dbservers" -m ping
all = 所有主机-i inventory.ini 用来指定清单文件:、&、!)