我的 Ansible hosts 文件中有多个 IP,我想将其列在将复制到每个主机的文件中。假设这些主机是 1.1.1.1、1.1.2.3 等,每个主机上的 is 文件list.txt
应包含以下内容:
All hosts in the group are: 1.1.1.1, 1.1.2.3
我确实知道我可以复制具有静态内容的文件或者我可以迭代单独设置的变量但是如何迭代主机列表条目?
答案1
问:“如何迭代主机列表条目?”
答:有 2 个标准选项。特殊变量 ansible_play_hosts_all
或groups
。例如,库存
shell> cat hosts
10.1.0.51
10.1.0.52
10.1.0.53
两个模板
shell> cat list1.txt.j2
All hosts in the group are:
{%- for host in ansible_play_hosts_all -%}
{{ host }}{% if not loop.last %}, {% endif %}{% endfor %}
shell> cat list2.txt.j2
All hosts in the group are:
{%- for host in groups.all -%}
{{ host }}{% if not loop.last %}, {% endif %}{% endfor %}
和剧本
shell> cat playbook.yml
- hosts: all
tasks:
- template:
src: list1.txt.j2
dest: /tmp/list.txt
在所有远程主机上给予
shell> cat /tmp/list.txt
All hosts in the group are:10.1.0.51, 10.1.0.52, 10.1.0.53