我想运行 2 次 playbook1,但使用 import_playbook 可能会失败。
- name: Run playbook twice with potential failure
ansible.builtin.import_playbook: playbook1.yml
retries: 2
delay: 10
register: result
until: result.rc == 0
但是,import_playbook 没有
retries/dely/register/until
属性
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/import_playbook_module.html
ERROR! 'retries' is not a valid attribute for a PlaybookInclude
有什么替代方案或解决方法吗?
不幸的是,据我所知,“import_playbook”模块本身不支持“重试”、“延迟”、“注册”和“直到”属性。
但是,您可以通过直接在“playbook1.yml”级别合并循环和错误处理来实现您想要的类似效果。 这是我快速制作的一个示例,说明如何构建它:
- name: Run playbook1 with potential failure
hosts: <your_target_hosts>
tasks:
- name: Execute the playbook1
include_tasks: playbook1.yml
loop: "{{ range(2) }}"
loop_control:
loop_var: retry_count
register: result
until: result.rc == 0
retries: 2
delay: 10
when: result is failed
这里,“include_tasks”模块用于包含“playbook1.yml”,并添加一个“循环”来运行它两次“(range(2))”。
“register”属性捕获“结果”,“until”属性用于在结果有非零返回码时重试。
重试和延迟属性控制重试行为。
我希望这可以帮助您实现所需的行为。