我试图使用Ansible将一些jinja2模板放到一个目录中,例如path / from / * .j2 to path / to / * .txt。
在我的./defaults/main.yml中:
test_var: - a:1 b:2 - a:10 b:20在我的 ….
那么这里可能出现什么问题?
有一些事情在起作用。
最重要的是,你错过了你的jinja替代 with_nested: ;我没有任何世俗的想法为什么你甚至得到“a”和“b”,因为这是非常明显的 list 的 str 你喂了 with_nested: 。我相信你想要的 with_nested: "{{ test_var }}" 。由于这个原因,它可能会“帮助”你 令人不安地,令人不安 您正在使用的古代版本的ansible,但现代版本不会将该名称自动强制转换为变量,因此请注意。
with_nested:
list
str
with_nested: "{{ test_var }}"
但是,即使修复也无法解决您的问题 with_nested: 想要一个 list 的 list 不是 list 的 dict ;正如你所看到的那样 精细的手册 ,它是有效的呼唤 {{ with_nested[0] | product(with_nested[1]) }} 和 产品 一个 dict 是一个 list 的 tuple 它的 .keys() ,这解释了你所看到的“a”和“b”
dict
{{ with_nested[0] | product(with_nested[1]) }}
tuple
.keys()
如果你想 src 和 dest 成为的价值观 a 和 b 分别是关键,然后跳过假装并构建 with_nested: 那样:
src
dest
a
b
with_nested: - '{{ test_var | map(attribute="a") | list }}' - '{{ test_var | map(attribute="b") | list }}'