如果远程环境变量不存在怎么办? Ansible认为这是一个致命的错误。怎么避免呢?

时间:2014-09-18 09:46:51

标签: ansible

我想使用远程环境变量进行一些检查,可以从这样的格式读取

{{ ansible_env.NGINX_HOME }}

这条"路径"或环境变量可能不存在,无论如何这都是检查的目的。

但Ansible将此视为致命错误,显示错误消息,如

一个或多个未定义的变量:' dict object'没有属性' NGINX_HOME'

我该怎么办才能跳过这个?

2 个答案:

答案 0 :(得分:12)

使用Jinja filter,如果变量未定义,则可以指定默认值:

{{ ansible_env.NGINX_HOME|default('') }}

如果该值不存在,则将该值默认为空字符串。

另一个选择是,如果您在任务中使用该var,则只有在定义了var时才能有条件地运行任务:

- shell: echo {{ ansible_env.NGINX_HOME}}
  when: "'NGINX_HOME' in ansible_env"

答案 1 :(得分:1)

您还可以在ansible.cfg中将所有变量设置为非强制性。

并将变量设置为强制性的{{var |强制性}}

http://docs.ansible.com/ansible/playbooks_filters.html#forcing-variables-to-be-defined