saltstack的数据采集系统。他有俩种方式,一种是grains,另一种是pillar。俩者最大的区别有俩点:(1)是grains是静态的,pillar是动态的;(2)grains最终生效的地方是在minion端,pillar最终生效是在master端。在生产环境中,定义一些敏感信息时,我们都会用pillar来做,因为这些信息是不会推送到minion端。下面将详细介绍这俩种方式。
(1)定义:
Grains是SaltStack的一个组件,存放在SaltStack的minion端。当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进入数据的更新。由于grains是静态数据,因此不推荐经常去修改它。
应用场景:
<1>信息查询,可用作CMDB
<2>在target中使用,匹配minion。
<3>在state系统中使用,配置管理模块。
(2)信息查询
作用:用于查询minion端的IP,FQDN等信息
我们也可以自定义grains项
这种方法通过修改配置文件来定义grains项,它是需要重启服务的,重启服务的成本比较高,因为他可能会造成服务中断,我们来看看另一种方式。
上面俩种方法都是在minion端修改的,我们也可以通过在master中编写grains模块。
grians它不管你是在minion配置还是在master端配置,最终生效的地方都是在minion端。
我们还可以使用grains来匹配应用。
在target中匹配minion:
在top文件中匹配:
(1)定义:
pillar和grains一样也是一个数据系统,但是应用场景不同。
pillar是将信息动态的存放在master端,主要存放私密,敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。
pillar更适合在配置管理中运用。
(2)自定义pillar项
(3)pillar数据匹配
命令行中匹配:
state系统中使用:
Jinja模板是一种基于python的模板引擎,在SLS文件里可以直接使用Jinja模板来做一些操作。通过Jinja模板可以为不同服务器定义各自的变量。
俩种分隔符:{% … %}和{{ … }},前者用于执行诸如for循环或赋值的语句,后者把表达式的结果打印到模板上。下面将介绍Jinja模板的几种使用方式
(1)Jinja最基本的用法是使用控制结构包装条件
cd /srv/salt ##进入salt的根目录
vim test.sls ##编辑一个sls文件
(2)Jinja在普通文件中使用
上面的源配置文件中端口号我们是直接给出来的,我们也可以使用pillar来获取。
上面我们在pillar里面设置的port的端口号为80,我们这里来帮他再改一下为8080再次来查看一下结构。
vim /srv/pillar/packages/init.sls
我们再来修改一下,将源配置文件中的监听地址用grains来获取。
以上展示了很多方法都可以,这里我们再来看一种方法。
vim /srv/salt/apache/init.sls
vim /srv/salt/apache/files/httpd.conf
vim /srv/salt/lib.sls ##编辑一个定义变量的文件
vim /srv/salt/apache/files/httpd.conf ##编辑源配置文件
vim /srv/salt/apache/inits
cd /srv/salt ##进入salt的根目录中
mkdir keepalived ##建立这个目录
cd keepalived ##进入目录中
vim init.sls ##编辑启动文件
salt '*' state.sls keepalived ##向所有允许连接的主机推送一下
vim init.sls ##编辑启动文件
mkdir files ##创建files目录,因为启动文件中要用到源文件
cd files ##进入这个目录
scp server2:/etc/keepalived/keepalived.conf . ##server2刚有装这个软件,所以直接将他的配置文件传到当前目录下
vim keepalived.conf ##编辑配置文件
cd /srv/pillar ##进入pillar这个目录
cd packages ##进入packages目录
vim init.sls ##编辑引导文件
cd /srv/salt/keepalived ##进入到这个目录中
vim init.sls ##编辑引导文件
salt '*' state.sls keepalived ##来推送一下
我们在其他节点上来看一下配置文件是否发生改变,服务是否开启。
由于之前的实验,httpd的端口变为了8000,现在我们在来把他改为80端口。
cd /srv/salt/apache ##进入apache目录
cd files ##进入这个目录
vim httpd.conf ##编辑这个文件
cd /srv/pillar ##进入这个目录
cd packages
vim init.sls ##编辑引导文件
cd /srv/salt
vim top.sls ##编辑顶级引导文件
vim /srv/salt/apache/init.sls ##编辑apache的引导文件
vim /srv/salt/apache/files/httpd.conf