1

用一个简单的剧本:

---
- hosts: all
  tasks:
    - debug: var=not_existing_var

我有

ok: [compute01] => {
    "not_existing_var": "VARIABLE IS NOT DEFINED!"
}

并且ansible-playbook的退出代码变为 0。但是为什么呢?为什么呢ok?当任何未定义的变量以这种方式定义时是否正常?

第二个问题:我该如何解决这个问题并得到我的错误?

4

1 回答 1

4

这是预期的行为。我无法解释为什么会这样,就像我无法解释为什么它在应用程序 X 中的处理方式不同一样。这是开发人员的设计决定。但我相信这是一个很好的功能,因为您可以使用这两个过滤器详细定义未定义变量应该发生的情况:

  1. 强制的

    如果需要变量,只需添加强制过滤器:

    not_existing_var | 强制的

    这将使 Ansible 立即失败并抱怨缺少变量。

    文档:定义强制值

  2. 默认

    如果变量未像这样设置,您可以提供默认值:

    not_existing_var | default("默认值")

    文档:提供默认值

如果这种行为不舒服并且您希望所有未定义的变量都导致错误,您可以在 you 中定义它ansible.cfg

error_on_undefined_vars=True
于 2016-03-22T15:23:50.877 回答