可以在模板中包含主机 IP 吗?

可以在模板中包含主机 IP 吗?

我的 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_allgroups。例如,库存

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

相关内容