1、块的划分
playbook中会定义三种块,三种块的作用方式分别如下:
block:定义运行的主任务;
rescue:定义在block任务失败后,执行的任务;
always:任何时候都独立执行的任务。
企业中当产品更新时,新产品出在block中,原来产品处于rescue中,如果新产品没有问题,可直接运行,当新产品更新出现问题可继续运行原来产品,对新产品进行检修,达到系统运行稳定。
2、示例说明
##block,rescue,always的演示
1 ---
2 - name: Task Failure
3 hosts: all
4 vars:
5 web_pkg: httpd
6 db_pkg: mariadb-server
7 db_service: mariadb
8 tasks:
9 - name: Check time
10 command: date
11 register: command_result
12 changed_when: false
13 - name: Print time
14 debug:
15 var: command_result.stdout
16 - name: set up web
17 block: ##主程序块
18 - name: Install {{ web_pkg }} packages
19 yum:
20 name: "{{ web_pkg }}"
21 state: present
22# failed_when: web_pkg == "httpd" ##设置失败条件,事block和resuce块同时运行
23 rescue: ##失败时运行的程序
24 - name: Install {{ db_pkg }} packages
25 yum:
26 name: "{{ db_pkg }}"
27 state: present
28 always: ##任何时候都会执行的程序
29 - name: Start {{ db_service }} services
30 service:
31 name: "{{ db_service }}"
32 state: started
若在block加上失败条件判断,将原执行成功之后的结果改为失败,则resuce也会执行。