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
复制代码

 

posted @   Vincen_shen  阅读(1143)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2019-04-01 SpringBoot 简单集成ActiveMQ
2019-04-01 Centos7 ActiveMQ 安装并配置为开机启动
2017-04-01 Ansible 实战之部署Web架构
2017-04-01 Ansible Ad-Hoc命令集
2017-04-01 Ansible 基础知识
点击右上角即可分享
微信分享提示