saltstack使用指南:Jinja2模板
一、Jinja2简介
Jinja2的应用场景:针对不同的操作系统安装软件,针对不同的cpu数量、内存等动态生成软件的配置文件,都需要Jinja2以及Grains和pillar的辅助,Jinja2就这样来到了我的视眼......
说起我和Jinja2的前世今生啊......让我慢慢来为大家揭晓吧!
Jinja2是一个强大的python模板引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的。
Jinja2官网文档:http://docs.jinkan.org/docs/jinja2/templates.html
二、Jinja2变量
Jinja2模板包含变量和表达式:变量用{{}}包围,表达式用{%%}包围。
为了让大家更能直观的理解,准备一个简单的例子吧!
[root@salt-master base]# vi var.sls
{% set var= 'zhangjunchao' %} #变量
test_var:
cmd.run:
- name: echo "my name is {{ var }}"
运行并查看变量的输出:
[root@salt-master base]# salt '*' state.sls var
izwz9f8xrvty50quc2gq50z:
----------
ID: test_var
Function: cmd.run
Name: echo "my name is zhangjunchao"
Result: True
Comment: Command "echo "my name is zhangjunchao"" run
Started: 14:59:33.220965
Duration: 5.721 ms
Changes:
----------
pid:
2681
retcode:
0
stderr:
stdout:
my name is zhangjunchao
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
通过上面的例子,不知道大家对Jinja2是不是有了一个简单的了解?
ok,我们继续深入剖解Jinja2!
常用的Jinja2变量有三种类型:
1. 字符串类型
{% set var='I ma boy' %}
{{var}}
2. 列表类型
{% set list=['zhang','jun','chao'] %}
{{list[1]}}
3. 字典类型
{% set dict={'name':'zhang','age':28} %}
{{dict['name']}}
三、流程控制语句