Ansible模板和jinja{%block%}
我需要在远程主机上使用多个模板文件和我的Ansible角色中的Jinja的Ansible模板和jinja{%block%},ansible,ansible-2.x,ansible-template,Ansible,Ansible 2.x,Ansible Template,我需要在远程主机上使用多个模板文件和我的Ansible角色中的Jinja的{%block block\u name%}生成一个文件 比如说, main.conf.j2: value1 = 123 value2 = 456 {% block test %} {% endblock %} value3 = 789 {% block example %} {% endblock %} value4 = abcd test.conf.j2: {% block test %} more text
{%block block\u name%}
生成一个文件
比如说,
main.conf.j2:
value1 = 123
value2 = 456
{% block test %} {% endblock %}
value3 = 789
{% block example %} {% endblock %}
value4 = abcd
test.conf.j2:
{% block test %}
more text here
{% endblock %}
example.conf.j2
{% block example %}
....
example_param = 'example!'
....
{% endblock %}
下一步是什么?我必须在test.conf.j2和example.conf.j2中使用{%extends'nginx.conf.j2%}
?如果是这样的话,我的任务将如何?或者别的什么
如果我尝试这样的事情:
- name: Copy config
template:
src: "{{ item }}"
dest: "{{ conf_file_path }}"
with_items:
- "main.conf.j2"
- "test.conf.j2"
- "example.conf.j2"
- "abcd.conf.j2"
它仅适用于main.conf.j2和test.conf.j2,但忽略example.conf.j2和其他模板
问:“下一步是什么?我必须使用{%extends'nginx.conf.j2%}…”
A:是的。这是需要的。比如说
-模板:
src:test.j2
目的地:测试
使用模板
shell>cat main.j2
值1=123
{%block test%}
value=main.j2中的默认值
{%endblock%}
值3=789
shell>cat test.j2
{%extends'main.j2%}
{%block test%}
值=test.j2中的自定义值
{%endblock%}
给予
shell>cat测试
值1=123
值=test.j2中的自定义值
值3=789
问:“我的任务看起来怎么样?”
-名称:复制配置
模板:
src:“{{item}}”
dest:{{conf_file_path}}
有以下项目:
-“main.conf.j2”
-“test.conf.j2”
-“example.conf.j2”
-“abcd.conf.j2”
答:循环将在每次迭代中重复覆盖dest文件。看
FWIW。可以使用和循环模板的名称。比如说
-模板:
src:main2.j2
目的地:测试
-区块填充:
标记:“#{mark}ANSIBLE托管块{{item}”
路径:测试
块:“{{lookup('template',item)}}”
循环:
-test.conf.j2
-example.conf.j2
使用模板
shell>cat main2.j2
值1=123
#开始ANSIBLE托管块测试。conf.j2
value_test=main2.j2中的默认值
#结束ANSIBLE托管块测试.conf.j2
#开始ANSIBLE托管块example.conf.j2
value_示例=main2.j2中的默认值
#END ANSIBLE托管块example.conf.j2
值3=789
shell>cat test.conf.j2
value_test=test.conf.j2中的自定义值
shell>cat example.conf.j2
value_example=example.conf.j2中的自定义值
给予
shell>cat测试
值1=123
#开始ANSIBLE托管块测试。conf.j2
value_test=test.conf.j2中的自定义值
#结束ANSIBLE托管块测试.conf.j2
#开始ANSIBLE托管块example.conf.j2
value_example=example.conf.j2中的自定义值
#END ANSIBLE托管块example.conf.j2
值3=789