block任务块、rescue和always

2024-2-1 23:43 wsl Ansible自动化 阅读量:1044

一、block任务块

1、可以通过block关键字,将多个任务组合在一起
2 、可以将整个block任务组 ,一起控制是否要执行

举例:

# vim /tmp/block.yaml
---
 - hosts: web3
   tasks:
   - name: test block
     block:
     - name: add group
       group:
         name: block
         state: present
     - name: add user
       user:
         name: block
         group: block
         state: present
     when: ansible_hostname == "ansible2"

# ansible-playbook /tmp/block.yaml
当前主机名为ansible2,就会创建用户block,可以通过when约束整个block任务块的执行情况

二、rescue和always

block和rescue、always联合使用:
1 、block中的任务都成功 ,rescue中的任务不执行
2、block中的任务出现失败 (failed) ,rescue中的任务执行
3、block中的任务不管怎么样,always中的任务总是执行

举例1:使block执行失败 ,rescue就会执行,always中的任务总是执行

---
 - hosts: web1
   gather_facts: no
   tasks:
   - name: block
     block:
     - name: block1
       shell: ls /tmp
     - name: block2
       shell: ls /test
     rescue:
     - debug:
         msg: "因为block1执行失败,所以rescue会执行"
     always:
     - debug:
         msg: "我总是执行"

# ansible-playbook /tmp/block2.yaml 

假设block1任务忽略失败 ,rescue会执行吗,答案是不会

 

举例2:使block执行成功,rescue不会执行 ,always中的任务总是执行

# vim /tmp/block3.yaml
---
 - hosts: web1
   gather_facts: no
   tasks:
   - name: block
     block:
     - name: block1
       shell: ls /tmp
     - name: block2
       shell: ls /etc
     rescue:
     - debug:
         msg: "因为block没有出现执行失败 ,所以rescue不会执行"
     always:
     - debug:
         msg: "我总是执行"

# ansible-playbook /tmp/block3.yaml 

 

总结:block任务块执行失败,rescue任务块就会执行,block任务块执行成功 ,rescue任务块就不会执行,always任务块总是执行

版权所有:
文章标题:block任务块、rescue和always
文章链接:https://www.51itlab.net/?post=110
本站文章均为原创,未经授权请勿用于任何商业用途

热门标签