Ansible: 默认过滤器不解析 Ansible 1.8.2 中的变量

创建于 2014-12-19  ·  3评论  ·  资料来源: ansible/ansible

问题类型:

错误报告

Ansible 版本:

1.8.2

环境:

RHEL 5

概括:

默认过滤器不解析清单中定义的变量。

例如,如果我在库存文件中定义了以下变量:

app_install_dir=/测试

我的剧本有这个,“somevariable”没有定义:

dest_dir="{{ somevariable | default('{{app_install_dir}}/DATA') }}"

运行playbook时,默认无法解析“app_install_dir”

这曾经在 Ansible 1.7.1 上工作。

重现步骤:

1) 在名为“test_directory=/tmp/testdir”的库存中定义一个变量
2)在剧本中,有一个任务是创建一个由变量 dest={{ undefined_variable | 定义的目录默认('{{test_directory}}')}}
3) 运行 playbook 后,无法解析“test_directory”的值

预期成绩:

默认过滤器应该能够解析变量

实际结果:

默认过滤器不解析库存中定义的变量

最有用的评论

我通常不会在已关闭的工单中看到帖子,但一个 irc 用户向我发送了这个问题:
dest={{ undefined_variable | default(test_directory + '/subdir') }}

所有3条评论

可能的误解

你好!

非常感谢您提交给 Ansible。 它真诚地对我们意义重大。

我们认为您提交的罚单有些被误解,因为一件事的工作方式与所说的略有不同。

dest={{ undefined_variable | default('{{test_directory}}') }}

是一个无效的表达式,你不能嵌套 {{ }},你可能想要的是以下内容:

dest={{ undefined_variable | default(test_directory) }}

将来,这可能是一个更适合用户列表的主题,如果您在上述方面需要更多帮助,也可以在此处发布。

再次感谢您对 Ansible 的关注和关注!

@bcoca :很高兴知道,但这是否意味着我们不能在默认值中连接变量和文字? 类似: dest={{ undefined_variable | default('{{test_directory}}/subdir') }} (但不是无效的;-)

我通常不会在已关闭的工单中看到帖子,但一个 irc 用户向我发送了这个问题:
dest={{ undefined_variable | default(test_directory + '/subdir') }}

此页面是否有帮助?
0 / 5 - 0 等级