首页 > 其他分享 >RHCE(ansible语句)

RHCE(ansible语句)

时间:2024-04-03 13:22:05浏览次数:28  
标签:语句 判断 RHCE when debug ansible node1 执行

一:when语句

1:基础了解

 说到底,还是有多个表达式来组成一个判断语句,很多种的判断语句

1、 为什么需要判断语句:

有的时候play的结果需要依赖于变量,fact或者是前一个任务的执行结果,或者基于上一个task执行返回的结果而决定如何执行后续的task,这个时候就需要条件的判断了,一个很简单的案例,就是挂载磁盘,不需要到被控节点上面去看是否挂成功了,直接使用一个判断,看那个task任务的执行的结果,为0则代表着成功,就进行下一步的任务的执行

 2、使用场景

  1)目标主机上定义了一个硬限制,比如目标主机的最小内存必须达到多少,才能执行task任务

  2)捕获一个命令的输出,根据输出的结果不同来触发不同的task

  3)根据不同的目标主机的facts,来执行不同的tasks,如果是node1就是执行A任务,如果是node2就执行B任务

  等等等

3、when理解

当判断的结果是一致的话,那么执行task任务,否则的话,就跳过这个任务

 

ansible中判断语句是when判断,默认when判断,就识别变量,所以的话,不需要使用"{{}}"来引用变量,when  inventory_hostname == 'node1'

when与模块的层级是一样的

 

2:判断的表达式

1:比较运算符

==  比较2边是否相等的,比较字符串和数字

!=  2边是否一致,不一致则为真

>=  比较大小,左边大于右边为真

<=  右边大于左边为真

>  左边大于右边为真

<  右边大于左边为真

案例:

判断运行的task任务的主机是不是node1,如果是的node1则执行任务,

判断主机的freemem大小是否大于1000,如果是的话,则执行任务

//通过facts变量来获取这个内存,然后通过魔法变量来获取这个node1
- name: memfree
  hosts: node1
  tasks:
    - name: use when
      debug:
        msg: dayu1000
      when: ansible_memtotal_mb > 1000
    - name: node1
      debug:
        msg: hostname is node1
      when: inventory_hostname == 'node1'

2:逻辑运算符

 

and 逻辑与,2边都为真,则返回真
or 逻辑或,有一个为真,则返回为真
not 逻辑否,对表达式取反,真为假,假为真,在表达式的前面写上
() 当一组的表达式组合在一起后,形成一个更大的表达式,组合内的所有表达式都是逻辑与的关系

案例:

#判断主机名为node1,ip地址为10,则打印hello rhce
[root@controller mnt]# cat f4.yml 
- name: use debug
  hosts: node1
  tasks:
    - debug:
        msg: hello rhce
      when: inventory_hostname == 'node1' and ansible_ens160.ipv4.address == '172.25.250.11'

#判断主机名是否为node1或者ip地址是30的,则打印rhce
[root@controller mnt]# cat f5.yaml 
- name:
  hosts: all
  tasks:
    - debug:
       msg: rhce
      when: inventory_hostname == 'node1' or ansible_ens160.ipv4.address == '172.25.250.30'

#使用not来进行判断,判断不是node1的主机即执行任务
应该放在最前面
- name: user kkk
  hosts: all
  tasks:
    - name:
      debug:
        msg: hello
      when: not ansible_hostname == 'node1'


#()的使用,主机名是node1并且ip地址是11或者系统是redhat,并且版本是9的则执行任务
()里面是逻辑与的关系,多个表达式一起表达
[root@controller mnt]# cat f7.yml 
- name: use debug
  hosts: all
  tasks:
    - debug:
        msg: hello rhce
      when: (ansible_hostname == 'node1' and ansible_ens160.ipv4.address == '172.25.250.11') or (ansible_distribution_major_version == '9' and ansible_os_family == 'RedHat')

3:根据rc的返回值来进行判断task任务是否执行成功

根据注册变量,这个能保存上一个tasks任务的执行信息,就是根据rc的值为0则表示执行成功,执行任务,不成功,执行另外的一个任务

[root@controller mnt]# cat f8.yml 
- hosts: node1
  tasks:
    - shell: ls /etc/passsssss
      register: get_status
      ignore_errors: yes
    - debug:
       msg: rc is 0
      when: get_status.rc == 0
    - debug:
       msg: rc is error
      when: get_status.rc != 0

  

 

 

 

  

 

 

 

 

  

二:

 

标签:语句,判断,RHCE,when,debug,ansible,node1,执行
From: https://www.cnblogs.com/qw77/p/18110178

相关文章

  • SQL语句执行超时问题
    上周遇到一个SQL超时问题,多个JOIN,最后SUM求和,客户日志里有超时信息。但是奇怪的是把日志里的超时单独拿出来放到SQL里执行,并没有超时,奇怪得很。原因有很多,其中一种是“参数嗅探”,具体细节可以参考其他文章了解一二。简单说下怎么优化的,分两个方向:1、多表J......
  • 20240402,<<,>>,控制流:while语句 ,for语句
    ……学很少,学很慢还是比不学强点是吧,救命昨天不是很懂<<,>>输入输出iostream,输入流istream输出流ostream,COUT,CIN,CERR,CLOG#include<iostream>intmain(){ std::cout<<"entertwonumbers:"<<std::endl; intv1=0,v2=0; std::cin>>v1......
  • C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓
    C++条件和If语句您已经知道C++支持数学中的常见逻辑条件:小于:a<b小于或等于:a<=b大于:a>b大于或等于:a>=b等于:a==b不等于:a!=b您可以使用这些条件来针对不同的决定执行不同的操作。C++具有以下条件语句:使用if来指定一个代码块,如果指定的条件为true,则......
  • 查询语句,在Hive版本3.1.0中执行报错,在Hive版本3.1.2中执行成功
    第3条语句执行查询,在Hive版本3.1.0中执行报错:Error:Errorwhileprocessingstatement:FAILED:ExecutionError,returncode2fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTask(state=08S01,code=2),在Hive版本3.1.2中执行成功。新建表CREATETABLEuser_test(cr......
  • SQL语句中 DDL 、DML 、DQL 、DCL学习、看板
    DDL语句(数据定义语言)DDL(DataDefinitionLanguage)语句:数据定义语言,主要是进行定义/改变表的结构,数据类型,表之间的连接操作.常用的语句关键字有CREATE,DROP,ALTER等.CREATETABLE表名(列名1数据类型,列名2数据类型,列名3数据类型,...)​ALTERTABLE表名;......
  • Spring Data JPA日志打印SQL语句和入参真就这么简单吗?
    1乞丐版配置spring:aop:proxy-target-class:truejpa:hibernate:ddl-auto:updateshow-sql:truelogging:level:root:infoorg.hibernate.SQL:debugorg.hibernate.engine.QueryParameters:debugorg.hibernate.engin......
  • sql server语句
    查询字段长度SELECTLEN(字段名)AS字段长度FROM表名;判断语句EXISTS假设我们有两个表:Orders和Customers。Customers表:CustomerIDCustomerName1JohnDoe2JaneSmith3BobJohnsonOrders表:OrderIDCustomerIDOrderDate10112022-01-0110222022-02-0110332022-03......
  • foreach语句
    今天收获foreach语句,一个二维数组延展出了三维,四维,五维等数组,虽然四维,五维没有亲自敲但我想改改for循环变量X:遍历对象obj都是差不多的吧?......
  • Mysql 常用SQL语句
    1、查看mysql中所有的数据库, show databases;2、创建库 createdatabase库名;(也可以用 create databaseifnotexists 库名; 表示如果库不存在再创建)例:create databaseifnotexists ecology;3、删除库 drop database 库名称4、创建一张......
  • 4.运算符 与 流程语句
    【一】程序与用户交互1)输入(input)2)输出(print)1.简单字符串print('hello,word!')2.多个变量输出a='one'b='two'print(a,b)#onetwo3.默认end参数print('hello',end='_')print('word!')#hello_word!【二】基本运算符1)算术运算符......