首页 > 其他分享 >九、条件控制与循环

九、条件控制与循环

时间:2023-12-14 09:46:00浏览次数:25  
标签:控制 task 条件 when 运算符 memtotal 循环 memory ansible

九、条件控制与循环

9.1 条件判断

​ 有的时候在执行任务的时候需要对不同的情况做判断,以此来决定是否执行某些任务。什么情况下需要使用条件判断?

  • 判断主机的硬件资源,如CPU、内存、磁盘空间是否满足要求,如满足再执行task
  • 捕获一个命令的输出,根据命令输出结果的不同触发不同的task
  • 根据不同目标主机的facts,定义不同的task
  • 判断task的执行状态,以此来决定是否执行后面的task

9.1.1 when基本使用

​ 在ansible中,条件判断的关键字就是when,when在task中,跟模块名同级别,下面是一个简单的例子,判断目标主机的总内存是否大于1024M和2048M。

- name: test var
  hosts: node1
  tasks:
        - name: print total memory
          debug:
                  msg: "tocal memory is {{ ansible_memtotal_mb }}"
        - name: check memory is gt 1024M
          debug:
                  msg: "memory > 1024M"
          when: ansible_memtotal_mb > 1024
        - name: check memory is gt 2048M
          debug:
                  msg: "memory > 2048M"
          when: ansible_memtotal_mb > 2048

image-20230928154253275

注意:在when关键字中,调用变量不需要加"{{}}"

9.1.2 比较运算符

运算符 描述
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

示例

  • when: inventory_hostname == "node2"
  • when: ansible_memtotal_mb >= 4096

9.1.3 逻辑运算符

运算符 描述
and 逻辑与,左边和右边两个表达式都为真,则返回真
or 逻辑与,左边或右边其中一个表达式为真,则返回真
not 逻辑否,表达式取反
() 将一组表达式组合在一起,组合内的所有表达式都是逻辑与的关系

示例

  • when: ansible_distribution == "RedHat" or ansible_distribution == "Fedora"
  • when: ansible_distribution

标签:控制,task,条件,when,运算符,memtotal,循环,memory,ansible
From: https://www.cnblogs.com/xxth/p/17900485.html

相关文章

  • # yyds干货盘点 # 我设置for循环后里面因为内嵌函数,然后里面加continue没用,提示不在循
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python函数处理的问题,一起来看看吧。代码如下:代码还是有点长的。二、实现过程这里【隔壁......
  • 我设置for循环后里面因为内嵌函数,然后里面加continue没用,提示不在循环
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python函数处理的问题,一起来看看吧。代码如下:代码还是有点长的。二、实现过程这里【隔壁......
  • 【反转链表】while循环/递归
    leetcode206.反转链表题意:给定链表表头,反转链表,返回反转链表的表头【循环】题解:head维护原链表当前节点,nHead维护反转链表的头节点,nHead置于head前一位,依次后移,直至head到链表尾结束。双指针循环版本/***Definitionforsingly-linkedlist.*publicclassListNode......
  • 流程控制
    流程控制可以通过控制语句实现更丰富的逻辑以及更强大的功能。几乎所有编程语言都有流程控制语句,功能也都基本相似。其流程控制方式有顺序结构分支结构循环结构这里最简单最常用的就是顺序结构,即语句从上至下一一执行。序是由语句构成,而流程控制语句是用来......
  • 玩转 K8s 权限控制:RBAC + kubeconfig 搞定 kubectl 权限管理那些事
    目录1.先抛需求2.RBAC配置2.1.K8s里的RBAC机制介绍2.2创建ServiceAccount、Role、RoleBinding和Secret3.配置kubeconfig文件3.1kubeconfig文件介绍3.2具体的kubeconfig配置3.3kubeconfig切换测试4.总结1.先抛需求当一个K8s集群需要被多个租户共享时,就......
  • 除了Promise.all(),使用Promise.allSettled()方式请求,避免使用循环请求
    constgetFilePromises:Promise<any>[]=[];fileIds.forEach((item)=>{getFilePromises.push(getFileInfoApi({id:item}));});Promise.allSettled(getFilePromises).then((res)=>{this.fileList=res.map((item,index)=>......
  • 了解振弦采集仪:工程质量控制的得力助手
    了解振弦采集仪:工程质量控制的得力助手振弦采集仪是一种专门用于工程质量控制的仪器设备,它可以帮助工程师监测和评估结构物的振动性能。它的工作原理是通过将传感器固定在结构物上的振弦上,然后测量振弦的振动频率、振动幅度等参数,从而对结构物的振动特性进行分析。 振弦采集......
  • spring 怎么解决循环依赖的
    spring怎么解决循环依赖的理解spring的生命周期分为容器启动阶段、bean的实例化阶段、bean的属性注入阶段、bean的初始化阶段、bean的缓存阶段、bean的销毁阶段怎么解决循环依赖假设有两个对象X和Y,X依赖了Y,Y依赖了X,spring能解决循环依赖,底层主要接住了3个map。第一个是sing......
  • pod控制器详解
    这一章节是讲解pod的编排和调度,就得用到诸多的控制器。kubectlapi-resources#查看k8s的资源有哪些1.控制器作用1.pod类型的资源,如果直接删除,不会重建2.控制器可以帮助用户监视、并且保证相应的节点上始终运行着用户定义好的pod副本数在运行。3.甚至pod超过、或者......
  • Day29 练习:打印三角形(For循环补充说明)
    练习:打印三角形packagecom.baixiaofan.struct;publicclassTestDemo01{publicstaticvoidmain(String[]args){//打印三角形五行/*for(表达式1;表达式2;表达式3){表达式4;}*///第一次循环:......