断言,只有一次,如果vars_prompt的变量为空

时间:2017-03-31 11:45:09

标签: ansible

我要求用户输入,基本上我想检查变量的值(由vars_prompt向用户询问)是否为空。

当变量为""时播放剧本。这不是一个问题,很容易做到。 然而,我很恼火,这一步是在很多机器上运行的,而我只是想检查一次(我不认为需要去远程机器),当它不是设置我只是希望剧本停止,因为我们知道它在第一次出现之后仍然是第100次以后是空的。

这样做有干净的方法吗?我一直在试验断言模块,但没有运气。

提前致谢!

1 个答案:

答案 0 :(得分:2)

run_once是你的朋友:

---
- hosts: mygroup
  gather_facts: no
  vars_prompt:
    - name: myvar
      prompt: enter myvar
      default: bad_value
  tasks:
    # assert before gathering facts
    - assert:
        that: myvar != 'bad_value'
      run_once: yes
    # gather facts manually with setup
    - setup:
    - debug:
        msg: do the job

此外,您可以禁用自动事实收集,以避免在断言完成之前连接到所有主机,并使用setup手动收集它们。