根据角色执行状态执行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
我有一个角色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