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

本文介绍了如何在SaltStack中使用Jinja模板进行自动化运维,详细讲解了如何引用变量,包括基本方式、引用grains变量、引用pillar变量以及基于pillar的其他引用方式。通过示例展示了如何在配置文件中动态设置端口,验证了变量引用的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Jinja模板简介

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

2.Jinja模板使用方式

2.1基本方式引用变量

在/srv/salt/apache/files/httpd.conf文件中写入变量,在推送脚本中写入传给变量的值
(1)修改apache的推送脚本,将变量的值写入脚本中port:80
在这里插入图片描述
在这里插入图片描述
(2)编辑apache/files/httpd.conf文件,写入变量
在这里插入图片描述
在这里插入图片描述
(3)推送到server2,安装httpd服务
在这里插入图片描述
(4)在server2上查看配置文件里的参数,与上面写的变量一致,说明引用变量成功
在这里插入图片描述
在这里插入图片描述

2.2直接引用grains变量

(1)在state文件中引用

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

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

2.3直接引用pillar变量

(1)在state文件中引用

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

在这里插入图片描述
在这里插入图片描述
(2)在apache/files/httpd.conf文件中写入pillar获取变量的值
在这里插入图片描述
(3)编辑pillar目录下的脚本
在这里插入图片描述
在这里插入图片描述
(4)推送,成功
在这里插入图片描述

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

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)推送
在这里插入图片描述
(7)编辑apache/files/httpd.conf模板文件、推送脚本,编写一个独立的脚本(lib.sls)存放变量的值,再次编辑apache/files/httpd.conf模板文件,在最上面引入变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编写一个独立的脚本(lib.sls)存放变量的值
在这里插入图片描述
再次编辑apache/files/httpd.conf模板文件,在最上面引入变量
在这里插入图片描述
(8)推送
在这里插入图片描述
(9)验证
在server2上查看配置文件,发现正确引入变量,模板最上面一行的内容并没有复制过去,监听端口行显示为设置的格式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
nginx脚本更改引用变量
(1)引用变量更改nginx的脚本
在这里插入图片描述
(2)推送到server3
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值