遍历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列表检查每个项目,如果不存在的话,该项目将被添加到列表中。