根据角色执行状态执行Ansible任务

Execute Ansible tasks based on role execution status

我有一个角色pkg_install,有什么方法可以根据角色执行的状态来执行post_tasks?如果 role pkg_install failed?

也忽略错误
- name: status file
  hosts: localhost
  gather_facts: false
  roles:
   - role: "pkg_install"
     register: status
     ignore_errors: true

  post_tasks
    - name: status DEBUG
      debug:
        msg: "pkg_install success"
      when: status is successful

请注意,在您的代码中使用 ignore_errors 就像将 ignore_errors 放在角色中的每个任务上,因此如果角色中的任何任务失败,它将继续执行任务中的下一个任务角色并将执行 post_tasks.

如果您希望角色在失败时停止,但其余部分继续播放并知道角色是否失败,您可以执行以下操作:

- name: status file
  hosts: localhost
  gather_facts: false
  tasks:
    - block:
        - import_role: 
            name: "pkg_install"
      rescue:
        - set_fact:
            role_success: no
  post_tasks:
    - name: status DEBUG
      debug:
        msg: "pkg_install success"
      when: role_success|default('yes')|bool

如果角色失败,救援任务只会运行。 这是有关块的文档以获取更多信息 https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html