【问题标题】:Ansible - run list of tasks until successAnsible - 运行任务列表直到成功
【发布时间】:2018-06-15 16:02:17
【问题描述】:

有没有办法运行一个任务块直到成功? 这就是我想要实现的目标:

 - start sequence below
      task running shell command to generate kerberos ticket
      task wait_for_connection
   retry sequence x times until wait_for connection is successful

实现它的最佳方法是什么?似乎'block'不是为此目的而设计的..

【问题讨论】:

  • 是的,我查看了有关块和循环的文档
  • 正确 - 我得到的第一个链接是循环的 Ansible 文档。
  • 您提到的部分是指单个任务。我需要依次运行两个任务。
  • 对不起,如果我不清楚。我提到了“任务块”,我的示例显示了两个任务
  • 好的,我现在明白了。很抱歉造成混乱。

标签: ansible ansible-2.x


【解决方案1】:

恐怕没有解决办法。如果“直到”与“include_tasks”一起使用,“include_tasks”可能会有所帮助。不是这样https://github.com/ansible/ansible/issues/17098

有一个功能请求打开:“直到块”https://github.com/ansible/ansible/issues/16621

难道不能把“命令&&等待”放到一个任务中吗?

【讨论】:

  • 谢谢。我确实考虑过在一个脚本中结合 Kerberos 票证创建和连接检查。这可能是可能的,但这意味着我不能使用内置任务 wait_for_connection 并且需要使用 Kerberos 票证编写身份验证脚本,这可能是可行的。很遗憾,这是不可能开箱即用的
【解决方案2】:

看看我刚刚实现的一个过程,以递归地更改目录中的权限:

---
- set_fact:
    parent_path: "{{ parent_path | default(myoriginal_path) | dirname }}"

- name: Configure acl for {{ parent_path }}
  debug:
    msg: "{{ parent_path }}"

- name: Run this file until getting /
  include_tasks: "{{ _ansible_item_label }}.yml"
  when: parent_path != '/'

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多