2017-05-03 198 views
0

我有一個vars.yml文件中定義一個變量,它看起來像這樣:遍歷YAML列表與Ansible

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

我想寫一個ansible的步驟,將遍歷這個列表,寫各主機名到文件中的新行。基本上,結果是這樣的:

$ cat host_file 
first_hostname 
second_hostname 
... 

到目前爲止,我已經看了幾個不同類型的ansible循環,但似乎並沒有太大關於遍歷列表。我願意接受替代方案,比如使用某種模板然後複製模板,但我想檢查是否有其他人先做了類似的事情。

回答

0

存在一個「lineinfile」模塊,用於檢查文件中是否存在行,如果不存在,則將該行寫入該文件。您可以使用一個循環來遍歷列表與此模塊來完成這項任務:

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

這將在針對該文件的trust_table列表檢查每個項目,如果不存在的話,該項目將被添加到列表中。