【发布时间】:2021-01-24 19:29:36
【问题描述】:
下面的剧本用于检查输入包名称和版本并将其与我们的系统进行比较,当条件在 == 上正常工作但不能正常工作时!= 我不知道为什么,过去几天我一直坚持这个
---
- hosts: "{{ cluster_name }}"
user: sv_operator
become: False
gather_facts: yes
vars:
ansible_python_interpreter: /d2/local/bin/python
vars_prompt:
- name: cluster_name
prompt: "Enter Cluster Name (Custer1/Cluster2/Cluster3)"
private: no
tasks:
- pause:
prompt: "Enter the name of Package and version"
register: prompt
no_log: yes
run_once: yes
- set_fact:
package_fact : "{{ prompt.user_input }}"
- shell:
cmd: "show system version | tr -s ' ' | grep '{{ package_fact }}' "
register: svcli_output
- name: Package Version
debug:
msg: "{{ svcli_output.stdout }}"
- debug:
msg: "PTS package {{ package_fact | upper}} match with existed one on the system"
ignore_errors: yes
when: svcli_output.stdout == package_fact
- fail:
msg: "PTS package {{ package_fact | upper}} NOT match with existed one on the system"
ignore_errors: yes
when: svcli_output.stdout != package_fact
条件匹配时输出 (==)
TASK [debug] *******************************************************************************************************************************************************
ok: [host-offline-01] => {}
MSG:
PTS package PROTOCOLS 20.12.01 match with existed one on the system
TASK [debug] *******************************************************************************************************************************************************
skipping: [host-offline-01]
PLAY RECAP *********************************************************************************************************************************************************
host-offline-01 : ok=6 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
条件不匹配时的输出 (!=)
TASK [shell] *******************************************************************************************************************************************************
fatal: [host-offline-01]: FAILED! => {
"changed": true,
"cmd": "show system version | tr -s ' ' | grep 'Protocols 20.12.02' ",
"delta": "0:00:00.324347",
"end": "2021-01-24 18:58:44.685277",
"rc": 1,
"start": "2021-01-24 18:58:44.360930"
}
MSG:
non-zero return code
PLAY RECAP *********************************************************************************************************************************************************
host-offline-01 : ok=3 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
【问题讨论】:
-
您的问题与您的 when 条件无关。您的 shell 命令失败 (
rc != 0) 并且您的剧本停止。此外,您不应在已关闭的新问题中重新发布您的问题:编辑原始问题并等待它最终重新打开。为避免这种情况,我建议您查看以How to ask 开头的帮助部分,并尝试从一开始就使用所有需要的信息编写问题。
标签: ansible ansible-inventory ansible-facts