jinja2模板中的循环问题

时间:2018-09-24 12:22:18

标签: loops ansible jinja2

我正在尝试使用Jinja2模板与Ansible动态构建配置文件。

在Ansible中,我定义了一个角色,其中拥有模板和变量集。

我希望我的输出文件看起来像这样:

  models:
    model1:
      username: user1
      password: password1
    model2:
      username: user2
      password: password2

我已经这样定义了变量:

model_list:
  name:
    - model1
    - model2
  user:
    - user1
    - user2
  pass:
    - password1
    - password2

我的.j2模板:

{% for model in vars[model_list] %}
  {{ model.name }}
    username: {{ model.user }}
    password: {{ model.pass }}
{% endfor %}

我的剧本很简单:

- name: Building config file
template:
  src: ./config.j2
  dest: my/path/config

运行剧本时出现以下错误:

fatal: [FRADEV048]: FAILED! => {"changed": false, "msg": 
"AnsibleUndefinedVariable: dict object has no element {u'user': 
u'user1', u'name': u'model1', u'pass': u'password1'}"}

我在编程方面还很陌生,所以我真的看不出我的错误在哪里...有什么线索吗?

在此先感谢您的帮助,

西蒙(Simon)

1 个答案:

答案 0 :(得分:0)

模板内容

models:
{% for model in model_list.name %}
    {{ model }}:
        username: {{ model_list.user[loop.index0] }}
        password: {{ model_list.pass[loop.index0] }}
{% endfor %}

参考:https://stackoverflow.com/a/24959173/5439195