【问题标题】:Checking which hosts failed a playbook in ansible检查哪些主机在ansible中失败了剧本
【发布时间】:2015-02-17 02:49:28
【问题描述】:

我有 2 个剧本在 ansible 上运行,一个接一个。剧本 1 完成后,我想在第一个剧本完全成功的主机上运行第二个。浏览 ansible 文档,我找不到任何关于哪些主机未能通过特定剧本的可访问信息。这怎么可能?

仅供参考,我需要单独的剧本,因为第二个必须以串行方式运行,即only available at the playbook level

【问题讨论】:

    标签: ansible ansible-playbook


    【解决方案1】:

    其中all hosts - successful hosts = failed hosts,可以使用下面的任务来获取剧中所有主机(包括故障主机)和所有还没有故障的主机的两个特殊变量的区别。使用serial 会影响结果。

        - name: Print play hosts that failed
          debug:
            msg: "The hosts that failed are {{ ansible_play_hosts_all| difference(ansible_play_batch) |join('\n') }}"
    

    来源:https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html

    【讨论】:

    • 谢谢!如果所有主机都失败了,如何运行这个任务?
    • @Rian,在标准任务中,如果所有主机都出现故障,则 playbook 将不会继续运行。因此,您至少需要一个没有失败从该任务中获得结果的“主机”。您可以将它放在块语句的“救援”部分中,以便在所有主机都发生故障时获得结果。
    【解决方案2】:

    老实说,最好的方法是在每个主机上设置一些可查询的状态。一个简单的方法是检查文件是否存在,该文件是在您的第一个剧本成功后创建的。然后,您可以有一个任务来检查该状态并通知通知任务它已“更新”,这将得到您想要的。

    顺便说一句,我停止使用 ansible 是因为它的可配置性不够;我在获得我想要的并行控制时也遇到了问题。您可以尝试拨打Ansible Project Google Group 来提出功能建议或描述您的用例。

    【讨论】:

      【解决方案3】:

      playplaybook 之间存在差异。 serial 参数在 play 级别上可用。一个playbook 可能包含多个plays

      ---
      
      - name: Play 1
        hosts: some_hosts
        tasks:
          - debug:
      
      - name: Play 2
        hosts: some_hosts
        serial: 1
        tasks:
          - debug:
      
      ...
      

      在播放 1 中失败的主机将不会在播放 2 中处理。


      如果您真的想拥有单独的剧本,我看到了两个选择:

      1. 创建一个callback plugin。您可以注册一个在任务或主机失败时触发的函数。您可以将这些信息存储在本地,并在下一次 playbook 运行中使用。

      2. 激活 Ansible logging。在运行ansible-playbook 时,它将记录几乎与您看到的原始输出相同的内容。

      第二个选项有点丑,但比创建回调插件更容易。

      在这两种情况下,您都需要创建一个dynamic inventory script,它会检查以前保存的数据并返回有效的主机。或者返回所有主机,但设置一个属性来标记这些主机。然后您可以使用group_by 创建一个临时组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        相关资源
        最近更新 更多