我想使用远程环境变量进行一些检查,可以从这样的格式读取
{{ ansible_env.NGINX_HOME }}
这条"路径"或环境变量可能不存在,无论如何这都是检查的目的。
但Ansible将此视为致命错误,显示错误消息,如
一个或多个未定义的变量:' dict object'没有属性' NGINX_HOME'
我该怎么办才能跳过这个?
答案 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