1. 程式人生 > 實用技巧 >ansible playbook迴圈

ansible playbook迴圈

http://docs.ansible.com/ansible/latest/playbooks_loops.html#standard-loops

  1. 標準Loops

    • hosts: all
      gather_facts: False
      tasks:
      • name: debug loops
        debug: msg=" name -----> {{ item }}"
        with_items:
        • one
        • two
          執行結果:ansible-playbook loops.yaml -l 192.168.1.1
          TASK [debug loops] *****
          ok: [192.168.1.1] => (item=one) => {
          "changed": false,
          "item": "one",
          "msg": " name -----> one"
          }
          ok: [192.168.1.1] => (item=two) => {
          "changed": false,
          "item": "two",
          "msg": " name -----> two"
          }

PLAY RECAP ****
192.168.1.1 : ok=1 changed=0 unreachable=0 failed=0

with_items的值是python list資料結構,每個task會迴圈讀取裡面的值;也支援字典
ansible playbook迴圈
ansible playbook迴圈

2.巢狀Loops
主要實現一對多或者多對多的合併
ansible playbook迴圈
ansible playbook迴圈

3.雜湊Loops
雜湊loops直接支援YAML格式的資料變數
ansible playbook迴圈
ansible playbook迴圈

4.檔案匹配Loops
針對一個目錄下指定格式的檔案進行處理,引用with_fileglob迴圈去匹配需要處理的檔案
ansible playbook迴圈
ansible playbook迴圈

5.隨機選擇Loops(with_random_choice)
ansible playbook迴圈
ansible playbook迴圈

6.條件判斷Loops
ansible playbook迴圈
ansible playbook迴圈
5秒執行一次cat /root/ansible將結果register給host然後判斷host.stdout.startswith的內容是否是軼Master字串開頭,如果條件成立,此task完成;如果條件不成立5s之後重試,2次重試還不成立,此task執行失敗

7.檔案優先匹配Loops
with_first_found會從list裡面定義的檔案從上往下一個一個的匹配,如果匹配到了item就是該檔案
ansible playbook迴圈
ansible playbook迴圈

8.register Loops
register除了用作單一的task臨時變數儲存,還可以同時接受多個task的結果當做變數臨時儲存
ansible playbook迴圈
ansible playbook迴圈

轉載於:https://blog.51cto.com/yangxiongchun/2068384