Ansible When有條件的運行任務


When 條件表達式

  •   ==  <  >  <=  >=  !=  or  and
  •   vars is defined      # 變量存在
  •   vars is not defined    # 變量不存在
  •   vars in list            # 變量在列表中

When 四種register結果判斷

  •     when: result is failed      #執行失敗
  •     when: result is success  #執行成功
  •     when: result is skipped  #被跳過執行
  •     when: result is changed #是否修改

 

示例1 bool判斷

---
- name: when test
  hosts: dev
  vars:
    run_debug: true
  tasks:
    - name: debug
      debug:
        msg: "hello world"
      when: run_debug |bool

 

示例2 defined

---
- name: when test
  hosts: dev
  vars:
    run_service: firewalld
  tasks:
    - name: "{{ run_service}} service"
      service:
        name: "{{ run_service }}"
        state: started
      when: run_service is defined

 

示例3 in list

---
- name: when test
  hosts: dev
  vars:
    support_os:
    - RedHat
    - CentOS
  tasks:
    - name: "OS Type"
      debug:
              msg: "The os type is {{ ansible_distribution }}"
      when: ansible_distribution in support_os  # ansible_distribution是ansible_facts中的變量

 

示例4 when + register

---
- name: when test
  hosts: dev
  tasks:
    - name: start chronyd service
      service:
        name: chronyd
        state: started
      ignore_errors: true
      register: result- name: debug
      debug:
        msg: "{{ result.failed }}"
      when: result is success  # 也可以使用 result.failed == false

 

示例4 loop + when (將對Loop中每項都執行when)

---
- name: when test
  hosts: dev
  tasks:
    - name: debug
      debug:
          msg: "{{ item }}"
      loop: "{{ ansible_mounts }}"
      when: item.mount == "/" and item.size_available > 300000000

 


免責聲明!

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



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