Ansible 2.0升级 - 默认过滤器链错误

时间:2017-03-15 22:00:59

标签: ansible ansible-2.x

在Ansible 2.0之前,允许使用默认过滤器

"{{ oracle1.instance.reports|d().forecast|d().email|d('testing@gmail.com') }}"

其中|d()允许变量(例如reportsforecast)默认为默认变量(在这种情况下,默认变量为{{1} }})如果程序找不到testing@gmail.comreports的实例。 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的默认变量过滤器将非常感谢!

1 个答案:

答案 0 :(得分:0)

我这样做:

"{{ ((((oracle1 | default({})).instance | default({})).reports | default({})).forecast | default({})).email | default('testing@gmail.com') }}"