saltstack自动化运维管理—grains和pillar的详解、Jinja模板

1.grains和pillar的区别

saltstack的数据采集系统。他有俩种方式,一种是grains,另一种是pillar。俩者最大的区别有俩点:(1)是grains是静态的,pillar是动态的;(2)grains最终生效的地方是在minion端,pillar最终生效是在master端。在生产环境中,定义一些敏感信息时,我们都会用pillar来做,因为这些信息是不会推送到minion端。下面将详细介绍这俩种方式。

2.grains

(1)定义:
Grains是SaltStack的一个组件,存放在SaltStack的minion端。当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进入数据的更新。由于grains是静态数据,因此不推荐经常去修改它。
应用场景:
<1>信息查询,可用作CMDB
<2>在target中使用,匹配minion。
<3>在state系统中使用,配置管理模块。

(2)信息查询
作用:用于查询minion端的IP,FQDN等信息
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第1张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第2张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第3张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第4张图片
我们也可以自定义grains项
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第5张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第6张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第7张图片
这种方法通过修改配置文件来定义grains项,它是需要重启服务的,重启服务的成本比较高,因为他可能会造成服务中断,我们来看看另一种方式。
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第8张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第9张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第10张图片
上面俩种方法都是在minion端修改的,我们也可以通过在master中编写grains模块。
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第11张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第12张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第13张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第14张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第15张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第16张图片
grians它不管你是在minion配置还是在master端配置,最终生效的地方都是在minion端。

我们还可以使用grains来匹配应用。
在target中匹配minion:
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第17张图片
在top文件中匹配:
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第18张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第19张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第20张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第21张图片

3.pillar

(1)定义:
pillar和grains一样也是一个数据系统,但是应用场景不同。
pillar是将信息动态的存放在master端,主要存放私密,敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。
pillar更适合在配置管理中运用。

(2)自定义pillar项
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第22张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第23张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第24张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第25张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第26张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第27张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第28张图片
在这里插入图片描述
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第29张图片
(3)pillar数据匹配
命令行中匹配:
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第30张图片
state系统中使用:
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第31张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第32张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第33张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第34张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第35张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第36张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第37张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第38张图片

4.Jinja模板

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

(1)Jinja最基本的用法是使用控制结构包装条件

cd /srv/salt  ##进入salt的根目录
vim test.sls  ##编辑一个sls文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第39张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第40张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第41张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第42张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第43张图片
(2)Jinja在普通文件中使用
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第44张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第45张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第46张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第47张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第48张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第49张图片
上面的源配置文件中端口号我们是直接给出来的,我们也可以使用pillar来获取。
在这里插入图片描述
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第50张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第51张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第52张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第53张图片
上面我们在pillar里面设置的port的端口号为80,我们这里来帮他再改一下为8080再次来查看一下结构。

vim /srv/pillar/packages/init.sls

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第54张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第55张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第56张图片
我们再来修改一下,将源配置文件中的监听地址用grains来获取。
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第57张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第58张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第59张图片
以上展示了很多方法都可以,这里我们再来看一种方法。

vim /srv/salt/apache/init.sls

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第60张图片

vim /srv/salt/apache/files/httpd.conf

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第61张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第62张图片
(3)import方式,可在state文件之间共享。

vim /srv/salt/lib.sls  ##编辑一个定义变量的文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第63张图片

vim /srv/salt/apache/files/httpd.conf  ##编辑源配置文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第64张图片

vim /srv/salt/apache/inits

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第65张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第66张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第67张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第68张图片
关于jinja模板的使用我们再举一个例子,实现高可用。

cd /srv/salt  ##进入salt的根目录中
mkdir keepalived   ##建立这个目录
cd keepalived  ##进入目录中
vim init.sls  ##编辑启动文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第69张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第70张图片

salt '*' state.sls keepalived  ##向所有允许连接的主机推送一下

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第71张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第72张图片
软件安装好了,我们来配置一下文件和启动服务。

vim init.sls ##编辑启动文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第73张图片

mkdir files  ##创建files目录,因为启动文件中要用到源文件
cd files  ##进入这个目录
scp server2:/etc/keepalived/keepalived.conf .  ##server2刚有装这个软件,所以直接将他的配置文件传到当前目录下
vim keepalived.conf   ##编辑配置文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第74张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第75张图片

cd /srv/pillar  ##进入pillar这个目录
cd packages  ##进入packages目录
vim init.sls   ##编辑引导文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第76张图片

cd /srv/salt/keepalived  ##进入到这个目录中
vim init.sls   ##编辑引导文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第77张图片

salt '*' state.sls keepalived  ##来推送一下

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第78张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第79张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第80张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第81张图片
我们在其他节点上来看一下配置文件是否发生改变,服务是否开启。
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第82张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第83张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第84张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第85张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第86张图片
由于之前的实验,httpd的端口变为了8000,现在我们在来把他改为80端口。

cd /srv/salt/apache  ##进入apache目录
cd files  ##进入这个目录
vim httpd.conf  ##编辑这个文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第87张图片

cd /srv/pillar  ##进入这个目录
cd packages
vim init.sls  ##编辑引导文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第88张图片

cd /srv/salt  
vim top.sls  ##编辑顶级引导文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第89张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第90张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第91张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第92张图片

vim /srv/salt/apache/init.sls  ##编辑apache的引导文件

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第93张图片

vim /srv/salt/apache/files/httpd.conf  

saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第94张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第95张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第96张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第97张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第98张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第99张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第100张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第101张图片
saltstack自动化运维管理—grains和pillar的详解、Jinja模板_第102张图片

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