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() }}