Saltstack 介绍Saltstack是一个新的基础设施管理工具。 目前处于快速发展阶段, 可以看做是强化的Func+弱化的Puppet的组合。间接的反映出了saltstack的两大功能:远程执行和配置管理。Saltstack 使用 Python 开发的,非常简单易用和轻量级的管理工具。由 Master 和 Minion构成,通过 ZeroMQ 进行通信。
一、Saltstack基本安装
1.安装源
1.1 安装epel源
cd/usr/local/src/
wget
rpm-ivh epel-release-6-8.noarch.rpm
1.2 安装rpmforge
这步很重要,在redhat 6和centos 6的epel源上没有-jinja2。
cat/etc/issue
wget
rpm-Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
2.安装依赖包
Vim /etc/yum.repos.d/epel.repo
[epel]
Baseurl=http://mirrors.hustunique.com/epel/6/x86_64/
yum install python-jinja2
3.安装saltstack
只需要一台安装master即可,其他的全部安装minion.
3.1 安装salt-master
yum -y install salt-master enablerepr=epel-testing
3.2 安装salt-minion
yum -y install salt-minion enablerepr=epel-testing
4.配置saltstack
4.1 minion配置
master前面有两个空格,这行代码表示我要连接的saltstack的master是10.102.36.67:
cat /etc/salt/minion| grep "^ master"
需要修改minion的配置文件/etc/salt/minion中的master选项,进行如下操作:
master: 10.102.36.67
id: 1
id :客户端的标识,用服务端连接时,就是用此标识来连接客户端,
如:salt '1' cmd.run 'df -h'
4.2master配置
master监听10.102.36.67,老样子前面也是有两个空格,否则启动的时候会报错.
cat /etc/salt/master | grep '^ interface'
默认情况下,salt master在所有接口(0.0.0.0)上监听4505和4506两个端口. 如果想bind某个具体的IP,需要对/etc/salt/master配置文件中"interface"选项做如下修改:
interface: 10.102.36.67
修改auto_accept为True,自动接受客户端的KEY,当然也可以这里不设置,手动接受就行,接受方式:salt-key -akeyname (keyname即为客户端刚才设置的id标识)
auto_accept: True
客户端每隔30s 去服务器同步资源,时间可以随便DIY mintus: hours: 这样的格式
跟客户端手动执行 salt-call state.highstate命令效果一样;
schedule:
highstate:
function: state.highstate
seconds: 30
5.启动saltstack
5.1 启动master
service salt-master start
5.2启动minion
service salt-minion start
6.测试saltstack
接下来的命令都在master上执行
命令的格式:salt ‘参数’‘对象’命令
6.1 查看minion列表
salt-key –L
6.2接受所有key
salt-key –A
在提示中提示y确认即可.接下来便可以向minion发送命令了
6.3简单测试
salt '*' test.ping
二、Master批量管理配置
服务器端写sls模,他的默认路径在 /srv/salt/下,没有就新建目录,然后新建一个top.sls就跟puppet的入口文件 site.pp 类似。
· Base: 默认的的起点配置项:
· '*':这个引号内的是匹配对象,针对所有受控主机
· rd.sc:就是指资源文件/srv/salt/rd/sc.sls
看rd目录下的资源文件
利用py模式的sls配置文件(其实就是脚本,只要返回yaml格式的字典文件就好了),我们可以将以上的操作简化成1步,思路如下:1,/srv/pillar/top.sls中编写配置:
base:
'*':
- custom
2,使用py模式编写/srv/pillar/custom/init.sls,自动读取pillar配置,例如salt id是:10.1.1.1-centos.game.web,那么project为game,然后根据获取的pillar_root组合成路径/srv/pillar/custom/game/10.1.1.1-centos.game.web.yaml,利用yaml模块从文件中读取信息,返回字典3,在/srv/salt/top.sls文件中匹配所有的minion
‘*’:
- centos.public_services
4,/srv/salt/centos/public_services/init.sls文件使用py模式编写,配置会获取对应的minion的pillar信息,如果包含mysql配置信息且配置正确的话,则返回mysql实例的配置。
那现在要怎么使用呢,很简单,例如你的id为10.1.1.1-centos.game.web,首先在/srv/pillar/custom/目录下建个game目录(从salt id获取的项目名),然后在game目录先新建文件10.1.1.1-centos.game.web.yaml,里面写上配置信息:
mysql:
ports:
- 3306
- 3307
- 3308
version: '5_5_25'
最后执行命令:
salt 10.1.1.1-centos.game.web state.highstate -v -t 300
静静的等待执行完成就好了!