ansible:当不验证用户输入时失败

ansible:当不验证用户输入时失败,ansible,Ansible,我正在尝试ansible playbook提示用户输入,如果条件不满足,它应该失败并退出 我的剧本如下 [ansible@localhost ~]$ cat dummy.yml --- - name: testing failed_when hosts: localhost gather_facts: no tasks: - pause: prompt: "\nPlease ente 1:\n" register: given

我正在尝试ansible playbook提示用户输入,如果条件不满足,它应该失败并退出

我的剧本如下

[ansible@localhost ~]$ cat dummy.yml
---
- name: testing failed_when
  hosts: localhost
  gather_facts: no
  tasks:
      - pause:
           prompt: "\nPlease ente 1:\n"
        register: given
        failed_when: given.user_input != 1
      - set_fact:
           SER: "{{ given.user_input }}"
      - fail:
           msg: "unacceptable"
        when: SER is undefined
当我执行这个时,它会失败,即使我输入为1

[ansible@localhost ~]$ ansible-playbook dummy.yml

PLAY [testing failed_when] *********************************************************************************************************************

TASK [pause] ***********************************************************************************************************************************
[pause]

Please ente 1:
:1
fatal: [localhost]: FAILED! => {"changed": false, "delta": 1, "echo": true, "failed_when_result": true, "rc": 0, "start": "2020-05-29 02:52:27.318633", "stderr": "", "stdout": "Paused for 0.02 minutes", "stop": "2020-05-29 02:52:28.556987", "user_input": "1"}

NO MORE HOSTS LEFT *****************************************************************************************************************************

PLAY RECAP *************************************************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

[ansible@localhost ~]$
我试过使用“fail”,如下所示,它也不起作用

  tasks:
      - pause:
           prompt: "\nPlease ente 1:\n"
        register: given
      - set_fact:
           SER: "{{ given.user_input }}"

      - fail:
           msg: "unacceptable"
        when: SER != 1
结果:

[ansible@localhost ~]$ ansible-playbook dummy.yml

PLAY [testing failed_when] *********************************************************************************************************************

TASK [pause] ***********************************************************************************************************************************
[pause]

Please ente 1:
:1
ok: [localhost]

TASK [set_fact] ********************************************************************************************************************************
ok: [localhost]

TASK [fail] ************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "unacceptable"}

PLAY RECAP *************************************************************************************************************************************
localhost 
在上述两种情况下,我都输入了“1”作为用户输入&它仍然失败。。不知道我犯了什么错误

请帮忙


提前感谢。

默认情况下,条件
将变量扩展为字符串。将
SER
与字符串进行比较

when:SER!="1"
或将
SER
转换为整数

when:SER | int!=1.

默认情况下,
将变量扩展为字符串时的条件
。将
SER
与字符串进行比较

when:SER!="1"
或将
SER
转换为整数

when:SER | int!=1.