Ansible Loop循環控制


Ansible 2.5之前主要使用with_ <lookup>關鍵字來創建循環,循環關鍵字基本上類似於with_list,with_items。

Ansible 2.5開始官網推薦使用Loop來進行循環控制。 

 

示例1 Loop數組循環:

---
- name: create user
  hosts: dev
  tasks:
    - name: create user
      user:
        name: "{{ item }}"
        state: present
      loop:
      - user01
      - user02
      - user03

    - name: set password
      shell: echo '12345678' | passwd --stdin "{{ item }}"
      loop:
      - user01
      - user02
      - user03

 

示例2  vars傳遞數組給Loop循環

---
- name: create user
  hosts: dev
  vars:
     users:
      - user01
      - user02
      - user03
  tasks:
    - name: create user
      user:
        name: "{{ item }}"
        state: present
      loop: "{{ users }}"

    - name: set password
      shell: echo '12345678' | passwd --stdin "{{ item }}"
      loop: "{{ users }}"

 

示例3 Loop字典循環:

---
- name: create user
  hosts: dev
  tasks: 
  - name: create user and group
    user:
        name: "{{ item.name }}"
        group: "{{ item.groups }}"
    loop:
    - {name: 'user01', groups: 'wheel'}
    - {name: 'user02', groups: 'root'}

 

示例4  vars傳遞字典給Loop循環

---
- name: loop test
  hosts: dev
  vars:
    users:
    - user: 'user01'
      group: 'wheel'
    - user: 'user02'
      group: 'root'
  tasks:
    - name: debug
      user:
        name: "{{ item.user }}"
        group: "{{ item.group }}"
      loop: "{{ users }}"  

 

示例5 vars傳遞字典給Loop循環,並使用dict filter

---
- name: loop test
  hosts: dev
  vars:
    users:
      user: 'user01'
      groups: 'root'
  tasks:
    - name: debug
      debug:
        msg: "{{ item.key }}  {{ item.value }}"
      loop: "{{ users|dict2items }}"  # dict2items 是 jinjia2 filter

 

 

官網參考文檔: 

loops: https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

filters: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM