[英]Ansible nodes IPs as the one string
我在Ansible中使用Vagrant。 在我的劇本中,我有以下變量:
seeds: '192.168.56.11,192.168.56.12'
192.168.56.11
和192.168.56.12
是多機Vagrant配置的IP地址。
我可以使用Ansible來使配置更加靈活嗎,即Ansible可以通過編程方式為我編寫此字符串嗎?
您可以使用Jinja2從其他變量中模板化變量。
因此,如果我們有這樣的列表:
seeds:
- 192.168.56.11
- 192.168.56.12
我們可以把它轉換成一個逗號分隔的字符串通過循環通過它是這樣的:
seeds_string: '{% for seed in seeds %} {{ seed }}{% if not loop.last %},{% endif %}{% endfor %}'
至於獲取清單中主機的IP地址,我們可以訪問有關其他主機的事實,而不是使用groups
和hostvars
魔術變量配置的hostvars
。
因此,要獲取清單中所有主機的IP地址,我們可以使用類似以下內容的方法:
{% for host in groups['all'] %}
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
將其組合在一起,我們可以執行以下操作:
seeds: '{% for host in groups['all'] %} {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}{% if not loop.last %},{% endif %}{% endfor %}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.