使用Ansible在Yaml列表上迭代

使用Ansible在Yaml列表上迭代,ansible,Ansible,我在vars.yml文件中定义了一个变量,如下所示: trust_table: ['first_hostname', 'second_hostname', ...] $ cat host_file first_hostname second_hostname ... 我想写一个ansible步骤,迭代这个列表,并将每个主机名写入文件中的新行。基本上,结果如下所示: trust_table: ['first_hostname', 'second_hostname', ...] $ cat h

我在vars.yml文件中定义了一个变量,如下所示:

trust_table: ['first_hostname', 'second_hostname', ...]
$ cat host_file
first_hostname
second_hostname
...
我想写一个ansible步骤,迭代这个列表,并将每个主机名写入文件中的新行。基本上,结果如下所示:

trust_table: ['first_hostname', 'second_hostname', ...]
$ cat host_file
first_hostname
second_hostname
...

到目前为止,我已经研究了几种不同类型的ansible循环,但似乎没有太多关于在列表上循环的内容。我对其他方法持开放态度,比如使用某种模板,然后复制模板,但我想先检查是否有其他人做过类似的事情。

有一个lineinfle模块,用于检查文件中是否存在行,如果不存在,则将行写入该文件。您可以使用循环通过此模块在列表上迭代以完成此任务:

- name: Edit File
  lineinfile: dest=/etc/stuff/host_file line="{{item}}" state=present
  with_items:
    - "{{ trust_table }}"
这将对照文件检查trust_表列表中的每个项目,如果该项目不存在,则该项目将添加到列表中