Ansible Playbook 使用 block 对 Play 进行分组

Ansible Playbook 使用 block 对 Play 进行分组

Playbook 可以通过 block 来对 Play 进行分组,不仅仅是分组,block 还可以处理 block 执行过程中的任务错误。

block 处理错误的方式有两种:

  • rescue:在 block 中有任务返回 failed 状态时才会执行 rescue 的任务
  • always:无论 block 是否有任务执行失败都会执行
- name: block
  hosts: webserver
  gather_facts: true
  tasks:
  - name: System initialization task block
    when: ansible_os_family == 'RedHat'
    become: true
    block:
    - name: install packages
      ansible.builtin.dnf:
        name: "{{ packages_list }}"
        state: present
      vars:
        packages_list:
        - vim
        - bash-completion
    - name: disable selinux
      ansible.builtin.selinux:
        policy: targeted
        state: permissive
    rescue:
    - name: print error
      ansible.builtin.debug:
        msg: "Task execution failed, please check!"
    always:
    - name: create data directory
      ansible.builtin.file:
        path: /data
        state: directory
        mode: '0755'

如果 block 执行有执行失败的任务,但是 rescue 中的任务执行成功(相当于救援回来了),那么这个节点不会被踢出 Playbook 的执行队列,后续的任务会继续在这个节点执行。

block 可以通过以下两个变量来查看失败任务的信息:

  • ansible_failed_task(可以用 ansible_failed_task.name 来获取失败任务名字)
  • ansible_failed_result(类似于给失败任务设置 register 获取的变量)
- name: print ansible_failed_task.name
  ansible.builtin.debug:
    var: ansible_failed_task.name
- name: print ansible_failed_result
  ansible.builtin.debug:
    var: ansible_failed_result
Ansible Playbook 使用 block 对 Play 进行分组
https://www.linuxstudynotes.com/2025/09/13/ansible/ansible-playbook-%e4%bd%bf%e7%94%a8-block-%e5%af%b9-play-%e8%bf%9b%e8%a1%8c%e5%88%86%e7%bb%84/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇