Ansible指定配置文件

半兽人 发表于: 2025-09-10   最后更新时间: 2025-09-10 12:21:21  
{{totalSubscript}} 订阅, 40 游览

1. -i inventory 指定配置文件

默认情况下,Ansible 会去 /etc/ansible/hosts 找主机清单。
如果你有自己写的,比如 inventory.ini,执行时要指定:

ansible -i inventory.ini all -m ping

这样它就用你给的文件。

2. all 的含义

all 并不是你 inventory 里写的一个组,而是 Ansible 内置的 隐含组

  • all = 你在 inventory 文件里定义的 所有主机

3. inventory 里有重复主机会怎样?

Ansible 会自动去重,不会执行两遍

  • 如果你在 [webservers][dbservers] 里都写了 192.168.1.10
  • 执行 ansible all -m ping 时,它只会对 192.168.1.10 执行一次。

不过:

  • 主机还是会出现在两个组里,查询组的时候你会看到它属于多个组。

4. 只执行某个组

假设你 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

5. 指定某台主机

你也可以直接写 IP 或主机名,不用组:

ansible -i inventory.ini 192.168.1.10 -m ping

6. 多组/逻辑表达式

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 用来指定清单文件
  • 重复主机不会执行两遍
  • 想只执行一个组,直接写组名
  • 想执行单个主机,直接写主机名/IP
  • 想做更复杂的选择,可以用组表达式(:&!
更新于 2025-09-10
在线,3小时前登录

查看Ansible更多相关的文章或提一个关于Ansible的问题,也可以与我们一起分享文章