如何在单个或短列表的主机上运行剧本,并从主机不属于的库存组中获取内容



我确实有一个剧本,它会调用一个特定的组,并将该组的所有主机放入另一个主机上的命令中。

更准确地说。清单文件中主机组oldservers中的所有主机都必须位于一个或多个客户端上的/etc/ssh.conf中。

任务看起来像。。。

---
- name: echo Old Servers
debug:
var: groups["oldservers"]
- name: create ssh_conf_for_old_server 
blockinfile:
path: /etc/ssh/ssh_config
backup: True
block: |
Host {{ groups["oldservers"]|join(' ') }}
user admin
KexAlgorithms +diffie-hellman-group1-sha1
HostKeyAlgorithms +ssh-dss
Ciphers +aes128-cbc

这应该在不是组服务器成员的客户端上执行。

主机文件(清单(:

[clients]
192.168.200.1
192.168.200.2
[oldservers]
192.168.201.1
192.168.201.2

我的执行路线是ansible剧本-i 192.168.200.1,-u ansible/createServerList.yml

我想我应该做一点不同的事。不是吗?

结果应该是。。。首先输出所有旧服务器(调试(而不是用这些旧服务器将一个块写入/etc/ssh/ssh_config

对于命令ansible-playbook -i 192.168.200.1 -u ansible ./createServerList.yml,您直接将ip地址作为库存传递。因此,Ansible不知道定义主机组的清单文件。所以你可以试着运行ansible-playbook -i <path_to_inventory_file> -u ansible ./createServerList.yml

然后,如果你必须限制剧本只运行某些主机或组,请执行

  • ansible-playbook -i <path_to_inventory_file> -u ansible ./createServerList.yml --limit "192.168.200.1,192.168.200.2"

  • ansible-playbook -i <path_to_inventory_file> -u ansible ./createServerList.yml --limit clients

最新更新