条件选择
Ansible 有类似于变成语言的条件判断语法,用于控制执行流。
When 语句
当有一个操作是要某个主机达到某个特定条件才会触发的 tasks,Ansible 可以使用 When 语句来实现。
|
|
根据 action 执行结果,来决定接下来要执行的 action
|
|
根据系统变量 fact 作为 when 条件,使用 |int
还可以转换返回值的类型
|
|
条件表达式
在 playbooks 和 inventory 中定义的变量,可以根据布尔值来决定是否被执行12vars: epic: true
- 使用布尔值12345678910111213141516171819// 真tasks:- shell: echo "This certainly is epic!"when: epic// 假tasks:- shell: echo "This certainly isn't epic"when: not epic// 定义变量tasks:- shell: echo "I've got '{{ foo }}' and am not afraid to use it!"when: foo is defined- fail: msg="Bailing out, this play require 'bar'"when: bar is not defined// 数值判断tasks:- command: echo {{ item }}with_item: { 0, 2, 4, 6, 8, 10 }when: item > 5
加载客户事件
|
|
在 roles 和 include 中使用 when 语句
- include
|
|
- roles
|
|
条件导入
在某个特定条件下,你需要根据特定标准来以不同方式处理同一事件,比如是用同一 playbook 在不同操作系统安装同一个软件包
|
|
注册变量
在 playbook 中,存储某个命令的结果在变量中,以供后面使用。 使用register
关键词决定将结果存放到那个变量中。1234567- name: test playbook hosts: all tasks: - shell: cat /etc/motd register: motd_contents - shell: echo "motd contains the word hi" when: motd_contents.stdout.find('hi') != -1
参数的内容通过 stdout
可以被访问。