Ansible的条件判断介绍和使用方式详解!(4)
Ansible的条件判断介绍和使用方式详解
- superset: 判断一个list是不是另一个list的父集
- hosts: dbsrvs
gather_facts: no
vars:
a:
- 3
- 7
b: [1,3,4,5,7,9]
tasks:
- debug:
msg: "A is a subset of B"
when: a is subset(b)
- debug:
msg: "B is the parent set of A"
when: b is superset(a)
- in: 判断一个字符串是否存在于另一个字符串中,也可用于判断某个特定的值是否存在于列表中
- hosts: dbsrvs
vars:
supported_distros:
- RedHat
- CentOS
tasks:
- debug:
msg: "{{ ansible_distribution }} in supported_distros"
when: ansible_distribution in supported_distros
- number: 判断对象是否为一个数字,是则为真
- hosts: dbsrvs
gather_facts: no
vars:
var1: 1
var2: "1"
var3: a
tasks:
- debug:
msg: "var1 is a number"
when: var1 is number
- debug:
msg: "var2 is a string"
when: var2 is string
- debug:
msg: "var3 is a string"
when: var3 is string
条件判断与block
block
when做条件判断时,如果条件成立则执行对应的任务。
但这就存在一个问题:当我们要使用同一个条件判断执行多个任务的时候,就意味着我们要在某一个任务下面都写一下when语句,而且判断条件完全一样。这种方式非常麻烦。Ansible提供了一种更好的方式来解决这个问题,即block。
在ansible中,使用block将多个任务进行组合,当作一个整体。我们可以对这一个整体做条件判断,当条件成立时,则执行块中的所有任务:
使用block注意事项:
- 可以为block定义name
- 可以直接对block使用when,但不能直接对block使用loop
- hosts: dbsrvs
tasks:
- name: set /etc/resolv.conf
template:
src: resolv.conf.j2
dest: /etc/resolv.conf
owner: root
group: root
mode: 0644
- block:
- name: ensure /etc/resolvconf/resolv.conf.d/base file for ubuntu 16.04
template:
src: resolv.conf.j2
dest: /etc/resolvconf/resolv.conf.d/base
- name: config dns for ubuntu 16.04
template:
src: resolv.conf.j2
dest: /etc/resolv.conf
when: ansible_distribution == "Ubuntu" and ansible_distribution_major_version == "16"
rescue
block除了能和when一起使用之外,还能作错误处理。这个时候就需要用到rescue关键字:
- hosts: dbsrvs
tasks:
- block:
- shell: 'ls /bunianSky'
rescue:
- debug:
msg: '/bunianSky is not exists'
当block中的任务执行失败时,则运行rescue中的任务。如果block中的任务正常执行,则rescue的任务就不会被执行。如果block中有多个任务,则任何一个任务执行失败,都会执行rescue。block中可以定义多个任务,同样rescue当中也可以定义多个任务。
相关阅读
-
telnet命令不可用 telnet不是内部或外部命令怎么办
今天小编介绍telnet不是内部或外部命令怎么办的话题,关于telnet命令不可用 telnet不是内部或外部命令怎么办,接下来IT袋小编就来介绍。 在使用win10系统的过程中想必大家都遇到过一个共同的
-
win10玩游戏比win7流畅吗 win7玩游戏流畅还是win10
今天小编介绍win10玩游戏比win7流畅吗方面的介绍,关于win10玩游戏比win7流畅吗 win7玩游戏流畅还是win10,下面IT袋为您详细介绍 现在不少的IT袋网友都会在电脑上玩游戏。同时,也有人会提出疑
-
win10怎么修改电脑的开机密码 电脑开机密码设置步骤
您可能不了解win10怎么修改电脑的开机密码和电脑开机密码设置步骤的介绍,很不错的方法小知识,建议收藏哦! 在我们日常生活中,最常见的就是开机密码了,而电脑作为我们使用频率最高
-
win10系统电脑蓝屏怎么解决 win10电脑蓝屏了怎么处理方法
文章摘要:win10系统电脑蓝屏怎么解决IT技巧方面的经验,关于win10系统电脑蓝屏怎么解决 win10电脑蓝屏了怎么处理方法,下面小编为您详细解答 win10系统是一款非常优秀的智能电脑系统,在全


