![当 yml 中缺少 vars 时,强制 Ansible 抛出错误?](https://linux22.com/image/616199/%E5%BD%93%20yml%20%E4%B8%AD%E7%BC%BA%E5%B0%91%20vars%20%E6%97%B6%EF%BC%8C%E5%BC%BA%E5%88%B6%20Ansible%20%E6%8A%9B%E5%87%BA%E9%94%99%E8%AF%AF%EF%BC%9F.png)
在替换 yml 文件中未定义的 var 时,是否可以强制 Ansible 抛出错误,而不是默默地用空字符串替换?
答案1
将此行添加到[defaults]
您的 ansible.cfg 部分:
error_on_undefined_vars = True
如果变量未定义,您将收到一条错误消息。
答案2
是的,这是可能的。查看在线文档,网址为访问复杂变量数据。
提供了一个示例来做到这一点:
tasks:
- shell: echo "I've got '{{ foo }}' and am not afraid to use it!"
when: foo is defined
- fail: msg="Bailing out: this play requires 'bar'"
when: bar is not defined
答案3
在中定义变量
roles/<role_name>/defaults/main.yml
喜欢:
SUPERVAR:
VAR1:foo
VAR2:bar
然后做
roles/<role_name>/tasks/main.yml
喜欢:
- fail: msg="{{ item }} is not defined"
when: not {{ item }}
with_items:
- SUPERVAR.VAR1
- SUPERVAR.VAR2
答案4
您可以使用强制值
如果您将 Ansible 配置为忽略未定义的变量,则可能需要将某些值定义为必需值。默认情况下,如果剧本或命令中的变量未定义,Ansible 会失败。您可以通过将 DEFAULT_UNDEFINED_VAR_BEHAVIOR 设置为 false 来配置 Ansible 以允许未定义的变量。在这种情况下,您可能需要要求定义一些变量。您可以使用以下方法执行此操作:
{{ 变量 | 强制 }}