Ansible 错误! “重试”不是 PlaybookInclude 的有效属性

问题描述 投票:0回答:1

我想运行 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

有什么替代方案或解决方法吗?

ansible ansible-2.x
1个回答
0
投票

不幸的是,据我所知,“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”属性用于在结果有非零返回码时重试。

重试和延迟属性控制重试行为。

我希望这可以帮助您实现所需的行为。

© www.soinside.com 2019 - 2024. All rights reserved.