配置内容接上篇
server1 172.25.29.1 salt-master
server2 172.25.29.2 salt-minion haproy+keeplived
server3 172.25.29.3 salt-minion nginx
server4 172.25.29.4 salt-minion nginx
server5 172.25.29.5 salt-minion haproy+keeplived
做之前配置好本地解析
grains是minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中。其实grains在每次的minion启动(重启)的时候都会采集,即向master汇报一次的。
修改server3和server4的salt-minion,设定nginx角色
在server3和server4的/etc/salt下创建grains,内容如下
推送成功
1. 在master端创建_grains文件
2. 修改server3和server4的grains或者是删除grains文件,做到不影响下面master这边的grains
3. 向server3和server4同步grains
查看server3和server4的salt缓存
4. 修改top.sls推送文件
推送成功
grain和pillar区别
(1)grains存储的是静态、不常变化的内容,pillar则相反
(2)grains是存储在minion本地,而pillar存储在master本地
(3)minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改
修改server1上的master配置文件,开通pillar base目录,可以与grains共存
采集主机名
刷新
查看采集的推送项目,按照不同的主机名通过pillar下的web.sls做不同的事情
通过salt采集server3开启的服务
远程重启server3的nginx服务
将master server1上的文件群传给minion端
群查看minion的/tmp下的文件,已经传过来了
远程查看passwd文件
远程给server4安装htppd文档
远程给server4安装losf工具
Jinja是基于python的模板引擎,在saltstack中我们使用yaml_jinja渲染器来根据模板生产对应的配置文件,对于不同的操作系统或者不同的情况通过jinja可以让配置文件或者操作形成一种模板的编写方式。
模版文件里面变量使用{{名称}},例如{{PORT}}
变量使用Grains:{{ grains[‘fqdn_ip4’] }}
变量使用执行模块:{{ salt‘network.hw_addr’ }}
变量使用Pillar:{{ pillar[‘apache’][‘PORT’] }}
以httpd下的web.sls为例,添加模版,端口,地址
server3 httpd服务8080端口正常
在httpd.conf配置文件的最上面添加变量模块
下面的监听端口上按python的方式取值
在files下面新建 vim lib.sls
将之前的web.sls里的template下面注释掉
用jinja模版给server3推送httpd服务
将httpd.conf里刚才上面写的删除,因为会与下面的这个方法冲突
监听端口修改为下图所示
将web.sls文件修改为以下设置
vim lib.sls
进入到pillar的base目录下
(1)配置文件第一种写法
vim httpd.conf
(2)配置文件第二种写法
vim httpd.conf
推送
salt server4 state.sls httpd.web
1. 配置keepalived salt文件
vim keepalived.conf,添加vip
vim install.sls
vim service.sls
单击keepalived推送成功
2. 由于keepalived高可用,主备的配置文件不一样,需要添加jinja模版
在install.sls里添加jinja模版
keepalived.conf里的state和priority写成变量
3.新添加一台虚拟机server5做keepalived的高可用
将server5加入到salt-key
4. 修改top.sls文件并推送
5. 查看推送结果
haproy+keeplived正常启动,vip在主上
将主server2上的keepalived关闭,服务到备server5上
负载均衡haproxy正常