当 yml 中缺少 vars 时,强制 Ansible 抛出错误?

当 yml 中缺少 vars 时,强制 Ansible 抛出错误?

在替换 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 以允许未定义的变量。在这种情况下,您可能需要要求定义一些变量。您可以使用以下方法执行此操作:

{{ 变量 | 强制 }}

相关内容