红帽秘笈,第三十二章控制语句

本章主要介绍 playbook中的控制语句。
使用 when 判断语句
block-rescue判断
循环语句
一个play中可以包含多个task,如果不想所有的task全部执行,可以设置只有满足某个
条件才执行这个task,不满足条件则不执行此task。本章主要讲解when 和 block-rescue两
种判断语句。
本章实验都在/home/duan/demo3下操作,先把 demo3目录创建出来并把ansible.cfg
和 hosts拷贝进去,命令如下。

 

练习1:写一个playbook,判断某条件是否成立,成立了才执行task,否则不执行,命令
如下。

 

这里有一个task,判断1<2是否成立,如果成立则执行task1,屏幕上会显示111;如果不
成立则不执行taskl,屏幕上不会显示111。这里明显是成立的,所以会执行task1。运行结
果如下。 

 

常见的判断符包括以下6种。
(1)==:等于。
(2)!=:不等于。
(3)>:大于。
(4)>=:大于等于。
(5)<:小于。
(6)<=:小于等于。
练习6:如果server2的系统主版本是7(RHEL/CentOS7),则打印111,否则不打印。
playbook的内容如下。

 

因为server2的系统是RHEL8,所以不会执行此task2,即不会显示111

 

 练习7:修改when-2.yaml 的内容如下

 再次运行此playbook,命令如下,会显示111。

 练习:判断某值是否在列表中,编写 when-3.yaml,命令如下。

此处定义了一个列表 list1,里面有4个值,分别为1、2、3、4;定义了一个task打印333,
会不会执行这个task,就要看when后面的判断是否成立。如果2在列表list1中,则执行;如果
不在,则不执行,很明显2在列表list1中,所以会执行此task,即屏幕上会显示333。运行结
果如下。

 

is可以用于判断变量是否被定义,常见的判断包括以下3种。
(1)is defined:变量被定义。
(2)is undefined:等同于is not defined,变量没有被定义。
(3)is none:变量被定义了,但是值为空。
看下面的例子。

首先定义了两个变量:aa和 bb,其中bb的值为空,此处并没有定义cc。后面定义了以下
3个task。
(1)如果aa被定义了,则显示111,这里aa被定义了,所以判断成立,会执行task1。
(2)如果b没有被定义,则显示222,这里bb被定义了,所以判断不成立,不会执行
task2。
(3)如果cc没有被定义,则显示333,这里cc没有被定义,所以判断成立,会执行
task3。
这里is undefined 和is not defined是一个意思。
查看运行的结果,如下所示。

 

练习1:按上面的描述写一个playbook,内容如下。

 

这里在task1的block中运行了3个模块,第一个模块可以正确执行,第二个模块是执行一
个系统命令ls /aa.txt,但是在server2中是不存在/aa.txt这个文件的,所以这个模块会执行
失败。block中的第三个模块不再执行,直接跳转到rescue中的模块。rescue中的2个模块均
可正确执行,然后执行task2。
所以,屏幕上会显示1111, xxxx, yyyy, zzzz。运行结果如下。
[bdqn@rhel13 demo3]$ ansible-playbook block-1.yaml

 练习1:定义一个列表users,然后循环这个列表中的每个元素,命令如下。

与上面的例子相比,在 block的第二个模块中增加了一个 ignore_errors: yes选项,这样
block中的第二个模块即使报错了,也会忽略这个报错继续执行第三个模块。然后执行task2,
所以屏幕上会显示1111,3333,zzzz。运行结果如下。
[bdqn@rhel13 demo3]$ ansible-playbook loop-1.yaml 

 

 

 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值