遍历YAML列表与Ansible

问题描述:

我有一个vars.yml文件中定义一个变量,它看起来像这样:遍历YAML列表与Ansible

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

我想写一个ansible的步骤,将遍历这个列表,写各主机名到文件中的新行。基本上,结果是这样的:

$ cat host_file 
first_hostname 
second_hostname 
... 

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

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

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

这将在针对该文件的trust_table列表检查每个项目,如果不存在的话,该项目将被添加到列表中。