saltstack使用指南:Jinja2模板

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']}}

三、流程控制语句

你可能感兴趣的:(salt)