Jinja2是一个强大的Python模板引擎,可以使用代码动态生成内容创建文件内容。
1、jinja2变量
变量: {{ }}
表达式: {% %}
案例1:
[admin@master study]$ cat var.sls
{% set var="hello world" %}
test_var:
cmd.run:
- name: echo " var is {{ var }}"
[admin@master study]$ sudo salt 'node2*' state.sls study.var
node2.51yuki.cn:
----------
ID: test_var
Function: cmd.run
Name: echo " var is hello world"
Result: True
** Comment: Command "echo " var is hello world"" run**
Started: 13:56:10.085738
Duration: 8.349 ms
Changes:
----------
pid:
5461
retcode:
0
stderr:
stdout:
var is hello world
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
总结: 可以定义多种数据类型,比如字符串、列表、字典类型等
2、循环控制语句(For)
在循环内不能有break和continue
![](https://box.kancloud.cn/f756f031700cc5d62d3e323f108ca7aa_634x257.png)
3、条件判断语句(if)
当您的环境同时存在centos和ubuntu时,apache的软件名的名字就不同,我们可以通过Jinja的逻辑语法来指定
![](https://box.kancloud.cn/bba8174a95a30216ed81bd126dfe7eb2_415x138.png)
4、实际使用
[admin@master init]$ sudo vim dns.sls
/etc/resolv.conf:
file.managed:
- source: salt://init/files/resolv.conf
- user: root
- group: root
- mode: 644
- backup: minion
- template: jinja
- defaults:-----------------这个和template同级
DNS_SERVER: 10.1.10.6 (变量: 值)
编写模板文件,引用刚刚创建的变量
[admin@master init]$ sudo vim files/resolv.conf
# Generated by NetworkManager
nameserver {{ DNS_SERVER }}
(注意这里填写的变量,一定不能填写错误,要是在sls文件中定义了的变量)
测试:
[admin@master init]$ sudo salt 'node2*' state.sls init.dns
node2.51yuki.cn:
----------
ID: /etc/resolv.conf
Function: file.managed
Result: True
Comment: File /etc/resolv.conf updated
Started: 14:07:17.003602
Duration: 28.738 ms
Changes:
----------
diff:
---
+++
@@ -1,3 +1,2 @@
# Generated by NetworkManager
nameserver 10.1.10.6
-nameserver 202.96.209.133
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
5、jinja变量使用grains
{{ grains['fqdn_ip4'] }}
6、jinja变量使用执行模块获取的值
{{ salt['network.hw_addr']('eth0') }}
[admin@master init]$ sudo salt '*' network.hw_addr eth0
7、jinja变量使用pillar
{{ pillar['apache']['PORT']}}
- 第一章:saltstack的基本介绍
- 第二章:saltstack的安装部署
- 第一节:在centos7系统上安装saltstack工具
- 第二节:在windows server 2008上安装salt-minion
- 第三章: saltstack的配置管理
- 第一节:salt-master配置
- 第二节:salt-minion配置
- 第三节:了解YAML
- 第四节:salt-master配置文件详解
- 第五节:了解Jinja2
- 第六节:配置普通用户可以运行saltstack的模块
- 第四章:远程执行
- 第一节:远程执行基础介绍
- 第二节:目标定位
- 一、全局及正则表达式匹配
- 二、列表匹配
- 三、Grains
- 四: Pillar
- 五:subnet and ip
- 六:组合匹配
- 七: node group
- 第三节:常用模块
- 一、查看帮助
- 二、Network模块
- 三、Service模块
- 四:State模块
- 五、Cron模块
- 六、File模块
- 七、iptables模块
- 八、pkg包管理
- 第四节:Salt其他命令
- 一、salt-cp(拷贝文件)
- 二、salt-ssh
- 三、salt-key
- 第五节:saltstack返回程序
- 第一节:返回保持到数据库(mysql)
- 第五章:配置管理
- 第一节:简单入门
- 第二节:状态间关系
- 第六章:数据系统
- 第一节:grains
- 第二节:pillar
- 第七章:saltstack配置管理
- 第一节:系统初始化操作
- 第二节:功能模块
- 一、haproxy模块
- 二、keepalived模块
- 三、nginx模块
- 四: pcre模块
- 五: zlib模块
- 六:user模块
- 七:php模块
- 第三节:业务模块
- 第一节:haproxy代理
- 第二节:keepalived业务
- 第八章:自动化管理工具saltstack
- 第一节:文件管理
- 第二节:软件管理
- 第三节:服务管理
- 第四节:sysctl模块管理