gpt4 book ai didi

ansible - failed_when 使用服务与命令

转载 作者:行者123 更新时间:2023-12-01 07:18:38 24 4
gpt4 key购买 nike

如果系统上存在服务列表,我想确保它们被禁用。默认情况下,这些服务中的许多服务将不存在,但在安装了服务的情况下,我希望将其禁用。

如果服务不存在,ansible 会抛出错误。虽然我可以使用 ignore_error 继续任务,但我对此并不满意,因为它不仅掩盖了一个真正的问题,而且错误仍然显示在 ansible 输出中,我希望团队不要养成忽略的习惯错误。

我尝试过使用 failed_when,但我似乎无法让它与服务一起使用,并且所有示例都使用命令,而不是服务。这是任务--disable_services 是在别处声明的列表。

- name: "Stop and disable unneeded services"
service: name={{ item }} enabled=no status=stopped
failed_when: "'service not loaded' not in stderr"
with_items: disable_services

它失败并显示以下输出:
TASK: [hardening | Stop and disable unneeded services] ************************ 
fatal: [host.example.com] => error while evaluating conditional: 'service not loaded' not in stderr

我已经尝试注册变量 service_output,并检查是否在 service_output.stderr 中没有“服务未加载”,但有相同的错误。

是否可以在服务上使用 failed_when,如果可以,我在这里遇到了什么第 8 层问题?

最佳答案

有几个问题:

  • 它是 state ,而不是 status .
  • 您需要使用 register将结果绑定(bind)到变量,然后在 failed_when 中使用该变量.
  • 次要的事情:您只检查一种故障(在这种情况下应该没问题,但要记住这一点)。

  • 这应该有效:
    - name: "Stop and disable unneeded services"
    service: name={{ item }} enabled=no state=stopped
    failed_when: "stop_disabled_services | failed and 'service not found' not in stop_disabled_services.msg"
    register: stop_disabled_services
    with_items: disable_services

    还有一个关于我如何让这段代码工作的注释:
    我用过 ignore_errorsdebug: var=stop_disable_services找到什么 service失败返回。最有趣的部分是 stop_disabled_services.results 的项目。列表,因为这是 stop_disable_services 的值 failed_when等着瞧。
    从那里开始,只有一些 Jinja2 来确保只有一些失败被忽略。

    关于ansible - failed_when 使用服务与命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568699/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com