1{$1=$1;print}'-6ren">
gpt4 book ai didi

linux - 我的 ansible 剧本 "when"条件错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:03 25 4
gpt4 key购买 nike

我有以下剧本:

  - name: packagexx version check
shell: apk version packagexx | awk 'NR>1{$1=$1;print}'
when: "'web' in group_names"
register: packxx_apk_version
changed_when: False
- debug: msg="package_version_check {{inventory_hostname}} {{packxx_apk_version.stdout}}"
when: "'web' in group_names"
- name: packagexx individual files check
shell: apk audit /etc/packagexx/ | grep "^U" | grep -v "kamcc"
when : "'web' in group_names and '=' in packxx_apk_version.stdout"
register: ind_file_apk_version
failed_when: False
changed_when: False
- debug: msg="individual_files_check {{inventory_hostname}} packagexx {{ind_file_apk_version.stdout}}"
when: "'web' in group_names"

只有当第一个播放的输出包含“=”符号时,第二个播放才应该运行。但是现在,它会在输出如下所示时运行:

  test-web:~# apk version packagexx
Installed: Available:
packagexx-1.2.0-r3 < 1.2.1-r1

最终,我在剧本运行时遇到了这个错误:

TASK [debug] *******************************************************************
fatal: [test-web]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'stdout'"}
fatal: [test2-web]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'stdout'"}

这是有道理的,因为在包已过期的情况下,第二个播放中的命令不应返回任何内容。

我看不到我的错误在哪里。有什么建议么?

编辑 1

在进行更多测试后,我发现了以下内容。当我在一个有最新包的服务器上运行这个剧本时(也就是它在输出中有“=”)它运行得很好。当我在包已过时的盒子上运行它时(输出中没有“=”),它返回错误。

错误/缺失的部分是最后一个调试语句的条件。它也需要检查“=”。至少那是我所做的并且它似乎有效。

所以这样:

  - debug: msg="individual_files_check {{inventory_hostname}} packagexx {{ind_file_apk_version.stdout}}"
when: "'web' in group_names"

改为:

  - debug: msg="individual_files_check {{inventory_hostname}} packagexx {{ind_file_apk_version.stdout}}"
when: "'web' in group_names and '=' in packxx_apk_version.stdout"

最佳答案

我需要在调试语句中添加一个条件,以便仅在输出存在时打印,如下所示:

- debug: msg="individual_files_check {{inventory_hostname}} packagexx {{ind_file_apk_version.stdout}}"
when: "'web' in group_names and '=' in packxx_apk_version.stdout"

关于linux - 我的 ansible 剧本 "when"条件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36573781/

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