前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >06-Ansible判断

06-Ansible判断

原创
作者头像
小朋友呢
修改于 2020-01-14 09:50:35
修改于 2020-01-14 09:50:35
8210
举报

条件语句

when

根据不同的系统,安装不同的Apache版本

代码语言:txt
复制
[student@workstation ansible]$ cat one.yml
- hosts: all
  remote_user: root
  tasks:
  - name: 0.clean yum
    shell: rm -rf /etc/yum.repos.d/*
    when: ansible_os_family == "RedHat"

  - name: 1.install ali source
    get_url: url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/CentOS-Base.repo mode=0644 force=yes
    when: ansible_os_family == "RedHat"
  
  - name: 2.change yum
    shell: sed -ri 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo && yum makecache
    when: ansible_os_family == "RedHat"

  - name: 3-1.Redhat family install web server
    yum: name=httpd state=latest
    when: ansible_os_family == "RedHat"

  - name: 3-2.Debian faily install web server
    apt: name=apache2 state=latest
    when: ansible_os_family == "Debian"

when in

判断变量是否在某个列表里

代码语言:txt
复制
[student@workstation ansible]$ cat when_in.yml 
- hosts: all
  tasks:
  - yum:
     name: httpd
     state: latest
    #如果当前主机在webservers组中就执行安装httpd的任务
    when: ansible_hostname in groups['webservers']

判断变量是否不在某个列表里

代码语言:txt
复制
- hosts: all
  tasks:
  - shell: 'reboot now'
    #如果不是admin组的主机就直接重启
    when: ansible_hostname not in groups['admin']

运算符

比较运算符

逻辑运算符

==

等于

and

!=

不等于

or

大于

not

<

小于

()

组合

=

大于等于

and

<=

小于等于

or

操作系统是Redhat7的6版本或者7版本并且主机名不是host2

代码语言:txt
复制
- hosts: all
  remote_user: root

  tasks:
  - name: compare os version

    debug:
     msg: "System is RedHat6 or Redhat7 And host not host2"

    when: ansible_distribution == "RedHat"  and (ansible_distribution_major_version == "6" or ansible_distribution_major_version == "7") and (not ansible_nodename == "host2")

变量定义

defined

变量已经定义

undefined

变量未定义

none

变量定义了,没有值

代码语言:txt
复制
[student@workstation ansible]$ cat var_define.yml
- hosts: servera
  gather_facts: no
  vars:
    keys:
  tasks:
  - debug:
     msg: "ansible_hostname is not defined"
    when: ansible_hostname is undefined
  
  - debug:
     msg: "key is defined"
    when: keys is defined

  - debug:
     msg: "keys is none"
    when: keys is none

执行结果

succeeded

通过任务返回信息,执行成功返回真

failed

通过任务返回信息,执行失败返回真

change

通过任务返回信息,执行状态为change返回真

Skipped

通过任务返回信息,任务没有满足条件跳过执行,返回真

代码语言:txt
复制
[student@workstation ansible]$ cat status.yml
- hosts: servera
  gather_facts: no
  tasks:
  - shell: ls /home/
	register: retmsg

  - debug:
     msg: 
     - "runing successfully"
     - " {{ retmsg.stdout }}"
	when: retmsg is succeeded
	
  - debug:
     msg: 
     - "runing successfully"
     - " {{ retmsg.stdout }}"
	when: retmsg is failed
	
  - debug:
     msg: 
     - "runing successfully"
     - " {{ retmsg.stdout }}"
    when: retmsg is change
    
  - debug:
     msg: 
     - "runing successfully"
     - " {{ retmsg.stdout }}"
    when: retmsg is skipped

其他判断

string

全部是字符串返回真

lower

字符串全部小写返回真

upper

字符串全部大写返回真

even

偶数返回真

odd

奇数返回真

subset

一个list是另一个的子集返回真

superset

一个list是另一个的父集返回真

number

全部是数字返回真

代码语言:txt
复制
[student@workstation ansible]$ cat when_other.yml
- hosts: servera
  gather_facts: no
  vars:
   comment: "wolala wolala wolalala"
   age: 13
  tasks:
  - debug:
     msg: "This is string"
    when: comment is string

  - debug:
     msg: "This is lower"
    when: comment is lower

  - debug:
     msg: "This not upper"
    when: comment is not upper

  - debug:
     msg: "This is not even"
    when: age is not even

  - debug:
     msg: "This is odd"
    when: age is odd

  - debug:
     msg: "This is number"
    when: age is number

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
表的约束(MySQL)
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
ljw695
2025/05/31
450
表的约束(MySQL)
MySQL入门常用命令大全
SQL(Structured Query Language)是结构化查询语言,也是一种高级的非过程化编程语言。SQL语句可用于增删查改数据以及管理关系型数据库,并不局限于数据查询。
恋喵大鲤鱼
2018/08/03
4K0
MySQL入门常用命令大全
【MySQL】MySQL知识总结
随着,应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了一个 大问题。
半生瓜的blog
2023/05/13
7.5K1
【MySQL】MySQL知识总结
Mysql增删改查sql语句练习
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create database wg charset utf8; 删除数据库: drop database wg; 选择数据库: use databases; 查看所有表: show tables; 查看创建数据库的语句:show create database databasename; 查看创建表的语句:show create table tablename; 查看表结构:desc tablename; 增: mysql> use wg; mysql> create table students( id int auto_increment primary key,name varchar(10) not null,sex varchar(12),address varchar(50),phone int not null unique); #自增长 auto_increment #非空 not null #默认值 default ‘xx’ #唯一 unique #指定字符集 charset #主键 primary key mysql> create table scores(id int auto_increment primary key,s_id int not null,grade float not null); 数据: mysql> insert into student (id,name,sex,phone) values(122,’wg’,’男’,’110’); mysql> insert into students values(111,’wg’,’121’,’dd’) ; 删: mysql> drop table tablename; mysql> truncate tablename; 快速删除表数据,自增长id从头在来,快速,从磁盘直接删除,不可恢复 mysql> delete from student; 删除整个表的数据,自增长继续 改: mysql> alter table oldtable rename newtable; 改表名 mysql> alter table scores modify s_id varchar(20);
全栈程序员站长
2022/07/25
2.2K0
Mysql增删改查sql语句练习
MySQL数据库入门
后台 (连接点:连接数据库JDBC,链接前端(控制,控制视图跳转,和给前端传递数据))
落寞的鱼丶
2022/02/21
6160
MySQL 入门常用命令大全(下)
本文介绍了什么是MySQL、MySQL的发展历程、特性、应用场景、优缺点以及如何进行MySQL的入门学习。
serena
2017/05/26
2.5K0
Mysql使用终端操作数据库
create TABLE pet( name VARCHAR(20), owner VARCHAR(20), specise VARCHAR(20), sex CHAR(1), brith DATAE, death DATE );
阮键
2020/04/30
9580
Mysql数据库常用命令总结
1、用truncate,它会重新计算自增,重新从1开始,对事务无影响,不能恢复。 一般上线前使用,清空表格。
jiankang666
2022/05/12
5510
Mysql数据库常用命令总结
MySQL指南:全面掌握视图、触发器、权限管理和远程连接的要点与技巧
开始之前推荐一篇实用的文章:《H5 App实战四:H5 App的跨域请求与数据交互》,作者:【china马斯克】。
Lion 莱恩呀
2024/11/24
1760
MySQL指南:全面掌握视图、触发器、权限管理和远程连接的要点与技巧
MySql数据库增删改查常用语句命令「建议收藏」
创建数据库表: 创建一个表名为:employee,该表中含有id、name、sex、birthday、job字段
全栈程序员站长
2022/09/02
1.2K0
MySQL常用命令总结
1、连接到本机上的MYSQL 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是如果-p后带有用户密码,那么-p与密码之间必须没有空格,否则让你重新输入密码.例如以下都是合法的登陆:(帐号:root 密码:123) mysql -u root -p mysql -uroot -p mysql -uroot -p123
全栈程序员站长
2022/09/14
5950
MySQL常用命令大全
MySQL是一个关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
星哥玩云
2022/08/17
7770
Mysql 常用命令
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53405528
shaonbean
2019/05/26
5150
MySQL常用命令(慢慢补全)
以下纪录了MySQL常用命令,实际工作中会慢慢补全。。。留坑待填。比较乱,凑合看吧。
浩Coding
2019/07/03
5410
mysql——cmd进入mysql及常用的mysql操作[通俗易懂]
第三步:在命令行输入:mysql -u 用户名 -p密码;回车;-h表示服务器名,localhost表示本地,-hlocalhost 可不输入;-u为数据库用户名,root是mysql默认用户名;-p为密码,如果设置了密码,可直接在-p后链接输入,如:-p123456,用户没有设置密码,显示Enter password时,直接回车即可。)
全栈程序员站长
2022/06/27
11.5K0
mysql——cmd进入mysql及常用的mysql操作[通俗易懂]
MySQL常用命令
启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库:show databases; 选择数据库:use databaseName; 列出表格:show tables; 显示表格列的属性:show columns from tableName; 建立数据库:source fileName.txt; 匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串; 增加一个字段:alter table tabelName add column fieldName dateType; 增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType; 多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中; 增加一个管理员帐户:grant all on *.* to user@localhost identified by "password"; 每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以; 查询时间:select now(); 查询当前用户:select user(); 查询数据库版本:select version(); 查询当前使用的数据库:select database(); 1、删除student_course数据库中的students数据表: rm -f student_course/students.* 2、备份数据库:(将数据库test备份) mysqldump -u root -p test>c:\test.txt 备份表格:(备份test数据库下的mytable表格) mysqldump -u root -p test mytable>c:\test.txt 将备份数据导入到数据库:(导回test数据库) mysql -u root -p test 3、创建临时表:(建立临时表test_temp) create temporary table test_temp(name varchar(10)); 4、创建表是先判断表是否存在 create table if not exists students(……); 5、从已经有的表中复制表的结构 create table table2 select * from table1 where 1<>1; 6、复制表 create table table2 select * from table1; 7、对表重新命名 alter table table1 rename as table2; 8、修改列的类型 alter table table1 modify id int unsigned;//修改列id的类型为int unsigned alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned 9、创建索引 alter table table1 add index ind_id (id); create index ind_id on table1 (id); create unique index ind_id on table1 (id);//建立唯一性索引 10、删除索引 drop index idx_id on table1; alter table table1 drop index ind_id; 11、联合字符或者多个列(将列id与":"和列name和"="连接) select concat(id,':',name,'=') from students; 12、limit(选出10到20条)<第一个记录集的编号是0> select * from students order by id limit 9,10; 13、MySQL不支持的功能 事务,视图,外键和引用完整性,存储过程和触发器 14、MySQL会使用索引的操作符号 <,<=,>=,>,=,between,in,不带%或者_开头的like 15、使用索引的缺点 1)减慢增删改数据的速度; 2)占用磁盘空间; 3)增加查询优化器的负担; 当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加
苦叶子
2021/10/20
6610
初识MySQL
(1.)首先打开管理员权限的cmd,输入net start musql80 开启服务(电脑每次重启都需要开启服务),然后再进普通权限的cmd,输入第(2)或(3)步骤里面的命令,如下:
用户9979303
2022/11/07
8190
初识MySQL
MySQL基础合集
一个SQL语句,如select * from tablename ,从支持接口进来后,进入连接池后做权限、验证等环节,然后判断是否有缓存,有则直接放回结果,否则进入SQL接口,在查询之前查询优化器进行优化,最后进行解析,查询。并通过存储引擎与文件交互。
JanYork_简昀
2022/04/22
1.3K0
MySQL基础合集
MySQL DDL 数据定义
在 MySQL 中,DATABASE 和 SCHEMA 在语法上是等效的,它们都用于创建数据库。在其他 RDBMS(如 Oracle 和 SQL Server)
恋喵大鲤鱼
2023/10/12
3180
MySQL用户入门Greenplum
Greenplum(以下简称GP)是基于PostgreSQL的MPP数据库。在使用方式和语法上和PostgreSQL基本一致,而PostgreSQL与MySQL在使用上还是有一些差异。本文在操作层面列举了一些最基本的差异,让MySQL用户能够快速上手GP。
lambgong
2019/01/29
2.8K0
MySQL用户入门Greenplum
相关推荐
表的约束(MySQL)
更多 >
目录
  • 条件语句
    • when
    • when in
    • 运算符
    • 变量定义
    • 执行结果
    • 其他判断
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档