为什么ansible未定义变量不算作剧本的错误?

问题描述 投票:1回答:1

用简单的剧本:

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

我有

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

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

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

ansible ansible-2.x
1个回答
2
投票

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

  1. 强制性 如果需要变量,只需添加强制过滤器: not_existing_var |强制性 这将使Ansible立即失败并抱怨丢失的变量。 文件:Forcing Variables To Be Defined
  2. 默认 如果变量未设置如下,则可以提供默认值: not_existing_var |默认(“默认值”) 文件:Defaulting Undefined Variables

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

error_on_undefined_vars=True
© www.soinside.com 2019 - 2024. All rights reserved.