Write by lyc at 2019-11-5
参考博文:
ansible笔记(28):条件判断与block

1.block + when

  • block将多个任务整合成一个块,这个块被当作一个整体
  • 对这个block块添加when条件判断,当条件成立时,则执行这个block块中的所有任务。
1
2
3
4
5
6
7
8
9
10
11
12
---
- name: name1
debug:
msg: "task1 not in block"

- name: name2
block:
- debug:
msg: "task2 in block"
- debug:
msg: "task3 in block"
when: 2<1 # 当when条件成立时执行block块下的两个task

2.block + rescue + always

  • block错误处理,相当于python的try,捕获错误,不会让程序终止。
  • block块下有task失败,则执行rescue下的块。无论block是否有失败,always下的块都会被执行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- block:
- name: task1
debug:
msg: "我是task1,我是succeed"
- name: task2
shell: >
ls /nothing
- name: task3
debug:
msg: "我是task3,task2失败了,我不会被执行,程序直接转到rescue"
rescue:
- name: task4
debug:
msg: "我是task4,block的task失败,会执行rescue下的所有task;如果block成功,rescue不执行。"
- name: task5
debug:
msg: "我是task5"
always:
- name: task6
debug:
msg: "我是task6,无论block成功与否,always的所有task都会被执行。"
- name: task7
debug:
msg: "我是task7"