Ansible 如果vars_提示符下的变量为空,则仅断言一次
我要求用户输入,基本上我想检查变量的值(由vars_提示符向用户询问)是否为空 当变量为“”时中止playbook不是问题,而且很容易完成。 然而,我很恼火,这一步是在一吨机器上运行的,而我只想检查一次(我不认为有必要去远程机器),当它没有设置时,我只想让剧本停止,因为我们知道当它第一次空时,它仍然是100次之后 有没有一个干净的方法可以做到这一点?我一直在尝试assert模块,但运气不好Ansible 如果vars_提示符下的变量为空,则仅断言一次,ansible,Ansible,我要求用户输入,基本上我想检查变量的值(由vars_提示符向用户询问)是否为空 当变量为“”时中止playbook不是问题,而且很容易完成。 然而,我很恼火,这一步是在一吨机器上运行的,而我只想检查一次(我不认为有必要去远程机器),当它没有设置时,我只想让剧本停止,因为我们知道当它第一次空时,它仍然是100次之后 有没有一个干净的方法可以做到这一点?我一直在尝试assert模块,但运气不好 提前谢谢 跑一次是你的朋友: --- - hosts: mygroup gather_facts: n
提前谢谢
跑一次
是你的朋友:
---
- 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
此外,您还可以禁用自动事实收集功能,以避免在断言完成之前连接到所有主机,并使用
安装程序手动收集它们运行一次是您的朋友:
---
- 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
此外,您还可以禁用自动事实收集,以避免在断言完成之前连接到所有主机,并使用设置手动收集这些事实,谢谢您的回复。这也适用于预任务吗?我正在使用预任务,这会阻止先对所有机器进行设置,然后才注意到VAR设置不正确。但run_once看起来确实很有希望。我会测试并给出反馈。是的,这项工作是为了准备任务。预任务的工作方式与任务相同,但在角色之前执行。如果不关闭事实收集,则在预任务之前执行setup
任务。因此,如果您有100台主机,Ansible将在测试断言之前花费大量时间收集所有事实。如果您禁用事实收集,将立即做出断言,如果一切正常,Ansible将使用设置
模块收集事实。感谢您的回复。这也适用于预任务吗?我正在使用预任务,这会阻止先对所有机器进行设置,然后才注意到VAR设置不正确。但run_once看起来确实很有希望。我会测试并给出反馈。是的,这项工作是为了准备任务。预任务的工作方式与任务相同,但在角色之前执行。如果不关闭事实收集,则在预任务之前执行setup
任务。因此,如果您有100台主机,Ansible将在测试断言之前花费大量时间收集所有事实。如果禁用事实收集,断言将立即做出,如果一切正常,Ansible将使用setup
模块收集事实。