SaltStack自动化运维——使用Jinja模板引用变量

1.Jinja模板简介

Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作。
通过jinja模板可以为不同服务器定义各自的变量。
两种分隔符: {% … %} 和 { { … }},前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上。

2.Jinja模板使用方式

2.1基本方式引用变量

在/srv/salt/apache/files/httpd.conf文件中写入变量,在推送脚本中写入传给变量的值
(1)修改apache的推送脚本,将变量的值写入脚本中port:80
SaltStack自动化运维——使用Jinja模板引用变量_第1张图片
SaltStack自动化运维——使用Jinja模板引用变量_第2张图片
(2)编辑apache/files/httpd.conf文件,写入变量
SaltStack自动化运维——使用Jinja模板引用变量_第3张图片
SaltStack自动化运维——使用Jinja模板引用变量_第4张图片
(3)推送到server2,安装httpd服务
SaltStack自动化运维——使用Jinja模板引用变量_第5张图片
(4)在server2上查看配置文件里的参数,与上面写的变量一致,说明引用变量成功
SaltStack自动化运维——使用Jinja模板引用变量_第6张图片
SaltStack自动化运维——使用Jinja模板引用变量_第7张图片

2.2直接引用grains变量

(1)在state文件中引用

- template: jinja
    - context:
	- port:8080
	- host: {
    { grains['ipv4'][-1] }}

注释掉reload,有reload时不会看到效果,不加reload默认就使用restart,restart之后才可以看到效果
在这里插入图片描述
SaltStack自动化运维——使用Jinja模板引用变量_第8张图片
(2)推送,端口成为8080
在这里插入图片描述
SaltStack自动化运维——使用Jinja模板引用变量_第9张图片
(3)在server2上查看,8080端口开启,引用变量成功
SaltStack自动化运维——使用Jinja模板引用变量_第10张图片(4)在推送脚本中做动作:端口改为80,注销掉host行设置
在apache/files/httpd.conf文件中写入grains获取变量的值
SaltStack自动化运维——使用Jinja模板引用变量_第11张图片
SaltStack自动化运维——使用Jinja模板引用变量_第12张图片
(5)推送,端口成为80
SaltStack自动化运维——使用Jinja模板引用变量_第13张图片
SaltStack自动化运维——使用Jinja模板引用变量_第14张图片
(6)验证,在server2端可以看到已经改为80端口
SaltStack自动化运维——使用Jinja模板引用变量_第15张图片

2.3直接引用pillar变量

(1)在state文件中引用

- template: jinja
    - context:
	- port:80
	- host: {
    { pillar['ip'] }}

在这里插入图片描述
SaltStack自动化运维——使用Jinja模板引用变量_第16张图片
(2)在apache/files/httpd.conf文件中写入pillar获取变量的值
SaltStack自动化运维——使用Jinja模板引用变量_第17张图片
(3)编辑pillar目录下的脚本
SaltStack自动化运维——使用Jinja模板引用变量_第18张图片
SaltStack自动化运维——使用Jinja模板引用变量_第19张图片
(4)推送,成功
SaltStack自动化运维——使用Jinja模板引用变量_第20张图片

2.4其它方式引用(基于pillar)

(5)再次编辑
在推送脚本中注销掉host行设置,
在apache/files/httpd.conf文件中,写入

Listen {
    { pillar['ip'] }}:{
    { port }}	##netstat查看端口时,格式显示为ip:端口号

在这里插入图片描述
SaltStack自动化运维——使用Jinja模板引用变量_第21张图片
SaltStack自动化运维——使用Jinja模板引用变量_第22张图片
(6)推送
SaltStack自动化运维——使用Jinja模板引用变量_第23张图片
(7)编辑apache/files/httpd.conf模板文件、推送脚本,编写一个独立的脚本(lib.sls)存放变量的值,再次编辑apache/files/httpd.conf模板文件,在最上面引入变量
SaltStack自动化运维——使用Jinja模板引用变量_第24张图片
SaltStack自动化运维——使用Jinja模板引用变量_第25张图片
SaltStack自动化运维——使用Jinja模板引用变量_第26张图片
编写一个独立的脚本(lib.sls)存放变量的值
在这里插入图片描述
再次编辑apache/files/httpd.conf模板文件,在最上面引入变量
SaltStack自动化运维——使用Jinja模板引用变量_第27张图片
(8)推送
SaltStack自动化运维——使用Jinja模板引用变量_第28张图片
(9)验证
在server2上查看配置文件,发现正确引入变量,模板最上面一行的内容并没有复制过去,监听端口行显示为设置的格式
在这里插入图片描述
SaltStack自动化运维——使用Jinja模板引用变量_第29张图片
SaltStack自动化运维——使用Jinja模板引用变量_第30张图片
nginx脚本更改引用变量
(1)引用变量更改nginx的脚本
SaltStack自动化运维——使用Jinja模板引用变量_第31张图片
(2)推送到server3
SaltStack自动化运维——使用Jinja模板引用变量_第32张图片

你可能感兴趣的:(linux,运维)