在Ansible 2.0之前,允许使用默认过滤器
"{{ oracle1.instance.reports|d().forecast|d().email|d('testing@gmail.com') }}"
其中|d()
允许变量(例如reports
或forecast
)默认为默认变量(在这种情况下,默认变量为{{1} }})如果程序找不到testing@gmail.com
或reports
的实例。 forecast
& reports
在某些环境中定义,但并非全部定义,因此我无法从脚本行中删除这些变量。在Ansible 2.X中,默认过滤器forecasts
不是必需的,代码可以这样写:
|d()
运行上面的脚本时,我收到此错误:
致命:[localhost]:失败! => {“failed”:true,“msg”:“字段'args'有一个无效值,它似乎包含一个未定义的变量。错误是:'dict object'没有属性'reports'\ n \ n错误似乎出现在'/home/ansible/svn/stable-1.6-ansible2_other/playbooks/buildEnvironment/temp2.yml':第21行第7列,但可能在文件的其他位置,具体取决于确切的语法问题。 \ n \ n违规行似乎是:\ n \ n ignore_errors:false \ n - debug:\ n ^ here \ n“}
对此问题的任何帮助或如何使用Ansible 2.X的默认变量过滤器将非常感谢!
答案 0 :(得分:0)
我这样做:
"{{ ((((oracle1 | default({})).instance | default({})).reports | default({})).forecast | default({})).email | default('testing@gmail.com') }}"