我正在尝试使用-l选项在配置以外的其他主机上播放yml..但是skipping: no hosts matched
。 这种情况是需要将主机关联的 playbook 例外地用于其他主机的情况。(出于安全原因,剧本不能有 hosts:all,而留给管理员来限制目标(
执行此操作的正确方法是什么(如果有的话(?
L.E.所以,最后,@mdaniel的答案给了我一个想法 bash 包装器,它创建一个临时 yml,其中主机:字段被替换为参数。它不漂亮,但它有效。(同样适用于从一系列任务动态生成剧本( 而正确的方法,我只是在这里找到了它: https://stackoverflow.com/a/18195217/624734
正确的方法是什么?
使用all
作为 playbook 的目标,然后通过清单或你提到的--limit
来约束它所应用到的主机
- hosts: all
# and now the rest of your playbook
如果您想限制 ansible 脚本中的hosts:all
,可以尝试以下方法。
- hosts: "{{ host_group }}"
# Rest of your playbook
您可以在hosts file
中有一个可用于测试的特定组。 例如
[test]
192.168.1.1 # Test host
# Rest of your inventory file
并按以下顺序触发 ansible 剧本,
ansible-playbook -i hosts main.yml -e host_group="test"