rhel6.5-saltstack

一.saltstack的基本了解

    SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块构建。通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等。可以实现一键部署服务,免去了重复执行安装的麻烦,比如一键部署lnmp架构或者haproxy+keepalived的高可用等实用性很强的服务。salt-master连接salt-minion之后将会以root用户权限运行,执行命令要格外小心。

二.saltstack平台的构建

172.25.78.11(server11)
salt-master
172.25.78.12(server12)
salt-minion
172.25.78.13(server13)
salt-minion
1.saltstack服务需要salt-master和salt-minion共同创建,需要两步来完成:

(1)在salt-minion的节点上指定salt-master的主机IP(如果是指定主机名,需要在/etc/hosts文件做本地解析)


(2)在salt-master上面把salt-minion的key值添加

salt-key   -L            ##列出key

salt-key    -A          ##添加所有的key

salt-key    -a          ##添加指定的key

salt-key    -d          ##删除指定的key

salt-key    -D         ##删除所有的key


upaccepted  keys    ##监测到的minion但是还未添加到master

accepted  keys         ##已经认证的key

2.测试

(1)利用test模块的ping函数进行测试,测试minion的key是否添加成功


(2)使用cmd.run在master对minion进行操作

3.master和minion之间通过密钥建立通信,所有的密钥都放在/etc/salt/pki/这个目录下,当minion指定master的IP后,重启服务。Minion第一次启动后会在/etc/salt/pki/minion生成公钥秘钥,然后将公钥发送给Master,等待Master为签发证书后才能与该Minion建立通信,同时master也会把自己的公钥发送给minion。

/etc/salt/pki/master/minion目录下是所有minion的公钥

master的公钥


minion接受到的公钥(与master的公钥一致,也是通信的关键)

minion密钥的结构

三.一键推送nginx服务


1.在/etc/salt/master的配置文件中打开服务的创建目录

2.在/srv/salt/下创建nginx的目录、nginx源码安装的依赖包、nginx用户的创建目录以及top.sls文件(一键推送的关键)

(1)/srv/salt/pkgs/install.sls    ##nginx安装的依赖包

(2)/srv/salt/nginx/install.sls   ##nginx的安装文件

include:         ##nginx的源码安装包含的依赖包

nginx-install:    ##nginx的安装(名称随意,保持全局唯一即可)

file.managed    ##nginx的源码包的存放位置

cmd.run            ##nginx的安装过程(为了安全使用sed取消了nginx的版本号)

creates           ##避免重复安装,当监测到/usr/local/nginx目录存在,就不再进行安装

(3)nginx用户创建的文件(源码安装创建nginx用户)


(4)nginx服务的控制文件

/etc/init.d/nginx   ##nginx脚本在minion的位置

source    ##启动脚本在master的位置

mode:775    ##脚本的权限(脚本要有执行权限)

nginx-service     ##管理nginx服务状态

watch                ##在启动或者重启之前先要检测nginx的配置文件

3.可以单个推送服务,也可以使用salt '*' state.highstate进行推送

在推送服务的时候会检测每一个服务ID,可以只推送nginx的安装而不推送nginx的配置文件,当nginx安装完成后,再从minion复制配置文件,因为当时没有配置文件,要把nginx安装完成后,才会生成配置文件


4.测试

nginx服务成功开启,用户也成功创建



四.grains组件的使用(可以通过grains匹配minion的属性,主机号、IP、DNS、selinux等)

1.匹配minion的操作系统

2.匹配minion的主机名

3.匹配minion的所有信息

salt server2 grains.items

4.指定minion角色的方法

(1)修改配置文件重启salt-minion服务

(2)在minion创建/etc/salt/grains文件

salt server12 saltutil.sync_grains   ##minion不用重启,同步即可

(3)在master创建python脚本

5.根据角色去执行命令

6.结合minion的角色、操作系统的类型(解决了版本的兼容性问题)进行nginx的一键推送

当nginx服务的推送量一旦达到一定数量之后,把minion都要一个一个加到top.sls文件中显然不现实,有了grains去匹配,使得推送更加的简洁

五.pillar组件的使用(对于一些敏感的数据,比如密码等,数据是存储在master本地)

1.在master的配置文件中开启pillar组件

2.在/srv目录下创建pillar目录,重启服务生效


3.在/srv/pillar目录创建top.sls文件,对所有minion都推送web.apache

(1)通过grains组件匹配主机,在server13部署httpd,设置监听IP以及端口


(2)salt '*' saltutil.refresh_pillar   ##同步

(3)根据apache的类型进行测试以及命令的执行


(4)salt ‘*’ pillar.items     ##查看pillar组件控制的所有信息

 

六.pillar结合jinja模板在推送服务时匹配主机名或者操作系统,针对不同的服务要求设置不同的配置文件(设置变量,根据pillar去匹配)

pillar-->top.sls-->salt-->jinja-->httpd.conf-->salt '*' state.highstate

在httpd的配置文件中设置bind和port的变量

salt://httpd/httpd.conf         ##在master要去推送的配置文件中更改


在server13的httpd的配置文件中也成功更改bind和port

server13主机的http端口也成功改为在pillar/top.sls中设置的8888


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值