我想强制 Ansible 收集有关 playbook 中主机的事实(以使用角色内部的这些数据),而不考虑 --limit,但不知道如何。
我有这样的剧本:
- hosts: postgres_access
tasks:
- name: Gathering info
action: setup
- hosts: postgres
roles:
- postgres
在“postgres”角色中,我有一个模板可以遍历默认 IP:
{% for host in groups['postgres_access'] %}
host all all {{hostvars[host].ansible_default_ipv4.address}}/32 md5
{% endfor %}
这就像魔术一样,但前提是我在没有 --limit 的情况下运行我的剧本。如果我使用 --limit 它会中断,因为主机组中的某些主机没有收集到的事实。
ansible-playbook -i testing db.yml --limit postgres
失败:[pgtest] (item=pg_hba.conf) => {"failed": true, "item": "pg_hba.conf", "msg": "AnsibleUndefinedVariable: 'dict object' 没有属性 'ansible_default_ipv4'"}
我怎样才能让 --limit 只重新配置 postgres 主机,并从其他主机获得网络数据(不做所有其他配置工作?)。