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
我沒想到它,它的工作原理,謝謝 –