Ansible
使用嵌套來分類多個文件
我需要創建從 2 個列表文件輸入的使用者,如下所示:
cat user.yml user1 user2 user3 cat group.yml group1 group2 group3 cat playbook.yml - name: Add the user user: name: "{{ item[0] }}" group: "{{ item[1] }}" with_nested: - cat user.yml - cat group.yml
這兩個文件將從其他任務中動態獲取輸入,因此我將無法在中提及列表
$$ ‘user1’, ‘user2’ $$像那樣。請建議如何使用 with_nested 對兩個列表進行分類
問:“使用 with_nested 對兩個列表進行分類。 ”
答:例如
- debug: msg: "{{ item.0 }} {{ item.1 }}" with_nested: - "{{ lookup('file', 'user.yml').splitlines() }}" - "{{ lookup('file', 'group.yml').splitlines() }}"
給
msg: user1 group1 msg: user1 group2 msg: user1 group3 msg: user2 group1 msg: user2 group2 msg: user2 group3 msg: user3 group1 msg: user3 group2 msg: user3 group3
同樣的結果給出了管道查找外掛,.eg
- debug: msg: "{{ item.0 }} {{ item.1 }}" with_nested: - "{{ lookup('pipe', 'cat user.yml').splitlines() }}" - "{{ lookup('pipe', 'cat group.yml').splitlines() }}"
查找外掛 “……像所有模板一樣,查找在 Ansible 控制機器上執行和評估。”
如果文件儲存在遠端主機上,例如
shell> ssh admin@test_11 cat user.yml user1 user2 user3 shell> ssh admin@test_11 cat group.yml group1 group2 group3
首先從遠端主機讀取文件,例如
- hosts: test_11 tasks: - command: cat user.yml register: result_user - command: cat group.yml register: result_group - debug: msg: "{{ item.0 }} {{ item.1 }}" with_nested: - "{{ result_user.stdout_lines }}" - "{{ result_group.stdout_lines }}"
給出相同的結果
msg: user1 group1 msg: user1 group2 msg: user1 group3 msg: user2 group1 msg: user2 group2 msg: user2 group3 msg: user3 group1 msg: user3 group2 msg: user3 group3