ansible 有任务的无限循环吗?

Does ansible have infinite loops for tasks?

提问人:ar rr 提问时间:11/10/2023 最后编辑:ar rr 更新时间:11/13/2023 访问量:50

问:

我想创建一个剧本,如果它返回 404 错误,它将重新启动我的服务。 我正在使用 ansible-semaphore,所以,我只想使用 ansible。没有 python 或其他任何东西。我还没有在 ansible 中找到有关无限循环的信息。这甚至有可能永远运行我的剧本,直到 SIGKILL?

在 python 中,它应该像

While True: 
  bool = task1()
  if bool: 
    task2()


如何创建零件? 我的 playbook 中的任务是:While: True

tasks: 

  - name: Check if service is working
    uri:
      url: "http://example.com
        status_code: [200,404]
    register: result
    until: result.status == 404
    retries: 10
    delay: 30

  - name: restart nginx
    ansible.builtin.shell: systemctl restart nginx 
    when: "{{ result }} == 404"

Ansible 无限循环

评论

4赞 U880D 11/10/2023
根据您的用例描述,您似乎喜欢以一种不打算使用的方式使用工具(Ansible)。Ansible 的主要领域更多的是 Desired State Configuration、Configuration Management,甚至 Auditing 和 Reporting。我知道您喜欢建立自我修复服务,但为此您必须考虑更多......这绝对是一个XY问题
4赞 Zeitounator 11/10/2023
通过设计这个极其糟糕的解决方案,您试图解决的确切根本问题是什么?如您的问题中所述,每当您从特定 URL 收到 http 404 错误时,您似乎都在尝试重新启动 nginx。解决这个问题的好方法是找出为什么当你显然期望得到其他结果时会出现 404 错误并修复根本原因,这样你就不必再重新启动 nginx。

答: 暂无答案