ansible templdte模块会在ansible控制机中对模板文件进行渲染
介绍
template模块
负责将最终生成的文件拷贝到远程主机,并渲染
- 常见参数
owner
指定生成文件的属主
group
指定生成文件的属组
mode
指定生成文件拷贝到远程主机后的权限,如mode=0644表示,如果需执行权限,则使用 mode=u+x
force
覆盖文件
backup
备份文件
jinja2
参考Python jinja2 模版使用
基础使用
### str
{{ 'testString' }}
{{ "testString" }}
### num
{{ 15 }}
{{ 18.8 }}
### list
{{ ['Aa','Bb','Cc','Dd'] }}
{{ ['Aa','Bb','Cc','Dd'].1 }}
{{ ['Aa','Bb','Cc','Dd'][1] }}
### tuple
{{ ('Aa','Bb','Cc','Dd') }}
{{ ('Aa','Bb','Cc','Dd').0 }}
{{ ('Aa','Bb','Cc','Dd')[0] }}
### dic
{{ {'name':'bob','age':18} }}
{{ {'name':'bob','age':18}.name }}
{{ {'name':'bob','age':18}['name'] }}
### Boolean
{{ True }}
{{ true }}
{{ False }}
### filter
{{ 'abcd' | upper}}
### tests
{{ testvar1 is defined }}
{{ testvar1 is undefined }}
{{ '/opt' is exists }}
{{ '/opt' is file }}
{{ '/opt' is directory }}
### lookup
{{ lookup('file','/testdir/testfile') }}
{{ lookup('env','PATH') }}
渲染命令:
ansible 172.17.0.3 -m template -a "src=jinj2-demo1.j2 dest=/opt/test"
结果
$ cat /opt/test
### str
testString
testString
### num
15
18.8
### list
['Aa', 'Bb', 'Cc', 'Dd']
Bb
Bb
### tuple
('Aa', 'Bb', 'Cc', 'Dd')
Aa
Aa
### dic
{'name': 'bob', 'age': 18}
bob
bob
### Boolean
True
True
False
False
...
if
{% if testnum > 3 %}
greater than 3
{% else %}
<= 3
{% endif %}
for
{% for 迭代变量 in 可迭代对象 %}
{{ 迭代变量 }}
{% endfor %}
转义
{{ '{{' }}
{{ '}}' }}
{{ '{{ test redhat }}' }}
{{ '{% test redhat %}' }}
{{ '{# test redhat #}' }}
$ cat test2.j2
{% raw %}
{{ test }}
{% test %}
{# test #}
{% if %}
{% for %}
{% endraw %}
宏
$ cat test4.j2
{% macro testfunc() %}
test string
{% endmacro %}
{{ testfunc() }}
# 默认参数,也可支持 varargs、kwargs、caller 参数
{% macro testfunc1(tv1=111) %}
test string
{{tv1}}
{% endmacro%}
{{ testfunc1() }}