- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在远程主机上使用多个模板文件和 Jinja 的 {% block block_name %}
在我的 Ansible 角色中生成一个文件
例如,
main.conf.j2:
value1 = 123
value2 = 456
{% block test %} {% endblock %}
value3 = 789
{% block example %} {% endblock %}
value4 = abcd
测试.conf.j2:
{% block test %}
more text here
{% endblock %}
示例.conf.j2
{% block example %}
....
example_param = 'example!'
....
{% endblock %}
下一步是什么?我必须在 test.conf.j2 和 example.conf.j2 中使用 {% extends 'nginx.conf.j2' %}
吗?如果是这样——我的 Ansible 任务会怎样?还是别的东西?
如果我尝试这样的事情:
- 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 和其他模板
最佳答案
Q: "What's the next step? I must use {% extends 'nginx.conf.j2' %} ... ?"
答:是的。 extends是需要的。例如
- template:
src: test.j2
dest: test
使用模板
shell> cat main.j2
value1 = 123
{% block test %}
value = default value in main.j2
{% endblock %}
value3 = 789
shell> cat test.j2
{% extends 'main.j2' %}
{% block test %}
value = custom value in test.j2
{% endblock %}
给予
shell> cat test
value1 = 123
value = custom value in test.j2
value3 = 789
Q: "How will look my Ansible task?"
- name: Copy config
template:
src: "{{ item }}"
dest: "{{ conf_file_path }}"
with_items:
- "main.conf.j2"
- "test.conf.j2"
- "example.conf.j2"
- "abcd.conf.j2"
A:循环将在每次迭代中重复覆盖dest 文件。参见 template .
FWIW。可以使用 blockinfile并循环 lookup的模板。例如
- template:
src: main2.j2
dest: test
- blockinfile:
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item }}"
path: test
block: "{{ lookup('template', item) }}"
loop:
- test.conf.j2
- example.conf.j2
使用模板
shell> cat main2.j2
value1 = 123
# BEGIN ANSIBLE MANAGED BLOCK test.conf.j2
value_test = default value in main2.j2
# END ANSIBLE MANAGED BLOCK test.conf.j2
# BEGIN ANSIBLE MANAGED BLOCK example.conf.j2
value_example = default value in main2.j2
# END ANSIBLE MANAGED BLOCK example.conf.j2
value3 = 789
shell> cat test.conf.j2
value_test = custom value in test.conf.j2
shell> cat example.conf.j2
value_example = custom value in example.conf.j2
给予
shell> cat test
value1 = 123
# BEGIN ANSIBLE MANAGED BLOCK test.conf.j2
value_test = custom value in test.conf.j2
# END ANSIBLE MANAGED BLOCK test.conf.j2
# BEGIN ANSIBLE MANAGED BLOCK example.conf.j2
value_example = custom value in example.conf.j2
# END ANSIBLE MANAGED BLOCK example.conf.j2
value3 = 789
关于Ansible 模板和神社 {%block%},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58793434/
Jinja 有没有办法检查一个变量是否可迭代?我正在使用 Django 并决定我是使用 objects.filter 还是 objects.get response 发送到 jinja 模板是可以的是
我需要生成一个随机的 128 位数字并获取它的二进制表示形式,b64 编码。 示例: vagrant@ubuntu1804:~$ consul keygen TUlzi8BWwPQR1zyjR1TiA
我有一个模板parent.tpl: {% set myvar = 'AAA' %} {% block par %} {{ myvar }} {% endblock %} 和一个child.tpl {%
我正在尝试在神社中创建以下循环: variable: > [ {% for replaceme in list %} { 'name': "{{ "string-{{r
我有一个 Flask 端点函数,它传递每个用户的评分、正分和负分字典,如下所示: leaderDict = { 'users': { '': { 'ra
在 Flask 应用程序中有两个文件: base.html Title {% marker "content" %} upload.html,它扩
我正在使用 Flask,我有一个 WTF 表单,其中包含 12 个输入字段,名称为 sold_1、sold_2、...、sold_12。 我想使用如下循环在 Jinja 中生成这些字段: {% for
我是一名优秀的程序员,十分优秀!