0
使用角色的默认值,我试图通过创建这个启发作用:ansible-cassandra。如何通过`hostvars`
在这个角色,对于可变cassandra_network_iface
默认值:
cassandra_network_iface: eth0
和模板文件cassandra.yaml.j2使用它通过hostvars
:
...
- seeds: "{% for host in groups[cassandra_ansible_groupname] %}{{hostvars[host]['ansible_' + hostvars[host]['cassandra_network_iface']]['ipv4']['address']}}{% if not loop.last %},{% endif %}{% endfor %}"
...
当我使用此模板文件执行任务:
- name: configure...
template: >-
src=cassandra.yaml.j2
dest=/tmp/cassandra.yaml
mode=0644
我有这样的错误:
fatal: [...]: FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'cassandra_network_iface'"}
的问题是变量cassandra_network_iface
没有被定义为hostvars[host]
范围(我检查与调试任务),否则我可以直接使用它。
我的问题:是否有通过hostvars
达到变量cassandra_network_iface
的方法吗?
注:我试着用ansible 2.1和2.2
我没想到它,它的工作原理,谢谢 –