使用Ansible迭代Yaml列表

时间:2017-05-03 15:22:57

标签: ansible

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

trust_table: ['first_hostname', 'second_hostname', ...]

我想编写一个ansible步骤,它将迭代此列表并将每个主机名写入文件中的新行。基本上结果看起来像这样:

$ cat host_file
first_hostname
second_hostname
...

到目前为止,我已经研究了几种不同类型的ansible循环,但似乎没有太多关于循环列表的问题。我愿意接受替代方案,例如使用某种模板然后复制模板,但我想检查是否有其他人先做过类似的事情。

1 个答案:

答案 0 :(得分:0)

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

- name: Edit File
  lineinfile: dest=/etc/stuff/host_file line="{{item}}" state=present
  with_items:
    - "{{ trust_table }}"

这将根据文件检查trust_table列表中的每个项目,如果该文件尚不存在,则该项目将被添加到列表中。