错误报告
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”的值
默认过滤器应该能够解析变量
默认过滤器不解析库存中定义的变量
你好!
非常感谢您提交给 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') }}
最有用的评论
我通常不会在已关闭的工单中看到帖子,但一个 irc 用户向我发送了这个问题:
dest={{ undefined_variable | default(test_directory + '/subdir') }}