我在vars.yml文件中定义了一个变量,如下所示:
trust_table: ['first_hostname', 'second_hostname', ...]
我想编写一个ansible步骤,它将迭代此列表并将每个主机名写入文件中的新行。基本上结果看起来像这样:
$ cat host_file
first_hostname
second_hostname
...
到目前为止,我已经研究了几种不同类型的ansible循环,但似乎没有太多关于循环列表的问题。我愿意接受替代方案,例如使用某种模板然后复制模板,但我想检查是否有其他人先做过类似的事情。
答案 0 :(得分:0)
存在“lineinfile”模块,用于检查文件中是否存在行,如果不存在,则将该行写入该文件。您可以使用循环使用此模块迭代列表以完成此任务:
- name: Edit File
lineinfile: dest=/etc/stuff/host_file line="{{item}}" state=present
with_items:
- "{{ trust_table }}"
这将根据文件检查trust_table列表中的每个项目,如果该文件尚不存在,则该项目将被添加到列表中。