ansible 模板

发布时间: 更新时间: 总字数:502 阅读时间:2m 作者: IP上海 分享 网址

ansible templdte模块会在ansible控制机中对模板文件进行渲染

介绍

  • template模块 负责将最终生成的文件拷贝到远程主机,并渲染
  • 常见参数
    • owner 指定生成文件的属主
    • group 指定生成文件的属组
    • mode 指定生成文件拷贝到远程主机后的权限,如mode=0644表示,如果需执行权限,则使用 mode=u+x
    • force 覆盖文件
    • backup 备份文件

jinja2

参考Python jinja2 模版使用

基础使用

  • jinja2-demo1.j2
jinja2-demo1.j2 ...
### 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 ...
$ 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 #}' }}
  • raw块转义:原始输出,不被jinja2解析
$ 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() }}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数