我想在 Jinja2 的 Ansible 上下文中包含另一个 Jinja2 模板

I want to include another Jinja2 template in an Ansible context in Jinja2

我有一个设置了很多变量的 Ansible 剧本。其中一个剧本有这个任务:

- name: create config file 
  template:
    src: 'templates/main_config.j2'
    dest: "{{ tmp_dir }}/main_config.json"

模板 main_config.j2 写入在父 Ansible 剧本和任务中定义为变量的字符串。

我想包含另一个基于 Ansible 变量值的 Jinja2 模板。

{% include "./templates/configurations.j2" %}, 
{% include "./templates/security.j2" %},
{% include './templates/' + {{ job }} + '_steps.j2' %}

job 是在父剧本中设置的 Ansible 变量。

这是行不通的。可能是什么问题呢?

您不需要打开 Jinja2 表达式 ({{ ... }}) 来引用语句中的变量 ({% ... %})。可以直接使用变量名:

{% include './templates/' + job + '_steps.j2' %}