saltstack服务器集群管理平台

1,简介

1)SaltStack 本身是基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ 与 Python 第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack 和 PyYAML 等)构建。
saltstack服务器集群管理平台_第1张图片
image.png

2)一个基于 C/S 架构,服务器集群管理的解决方案。管理端称为 Master,客户端称为 Minion,具备配置管理、远程执行、监控等功能,minion 负责接收服务器端发布的指令并执行,同时负责客户端的状态监控。。
3)4505消息发布端口(所有minion在4505上保持established),salt客户端和服务端通信使用4506端口,内容传输使用消息队列。
4)salt 有很多可执行模块,cmd模块,cp模块等。

2,salt环境搭建

1)安装python2.7以及piphttp://www.jianshu.com/p/f7be0d432538
2)rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
vim /etc/yum.repos.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS 6
baseurl=https://repo.saltstack.com/yum/redhat/6/x86_64/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
master
yum install salt-master -y
yum install salt-ssh -y
chkconfig salt-master on
slave
yum install salt-minion -y
chkconfig salt-minion on
3)配置文件
master组件的配置文件
/etc/salt/master
minion组件的配置文件
/etc/salt/minion

saltstack服务器集群管理平台_第2张图片
image.png

service salt-master start
service salt-minon restart
4)部署发布目录
salt的部署发布目录在/srv/salt下
mkdir -p /srv/salt
5)安装遇到问题。
No module named yum--->vim /usr/bin/yum #!/usr/bin/python2.6
The master key has changed, the salt master could have been subverted
-->master上salt-key -d id,minion上rm -rf /etc/salt/pki/minion/minion_master.pub,service salt-minion restart
6)其他。
salt-master启动时可以指定-c参数,指定配置路径;
7)salt --versions 查看salt的版本。

3,master-minion之间认证过程。

1)minion端生成一个秘钥对(/etc/salt/pki/minion下minion.pem,minion.pub),并产生一个ID值,minion服务会安装ID值命名的公钥发送给 master ,直到接受为止;
2)master认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在在/etc/salt/pki/master/minions下。

3)master认证完毕后,会将自身的公钥发送给 minion,并存储为 /etc/salt/pki/minion/minion_master.pub.
saltstack服务器集群管理平台_第3张图片
image.png
saltstack服务器集群管理平台_第4张图片
image.png

4,salt操作。

1)salt-key 密钥管理,通常在master端执行
salt-key [options]
salt-key -L ##查看所有minion-key
salt-key -a ##接受某个minion-key
salt-key -d ##删除某个minion-key
salt-key -A ##接受所有的minion-key
salt-key -D ##删除所有的minion-key

saltstack服务器集群管理平台_第5张图片
image.png

2)salt-run 在master执行runner
salt-run [options] [runner.func]
salt-run manage.status ##查看所有minion状态
salt-run manage.down ##查看所有没在线minion
salt-run manged.up ##查看所有在线minion
saltstack服务器集群管理平台_第6张图片
image.png

3)salt可以让minion执行命令.
执行模块命令。通过cmd.run模块执行shell命令。cmd.script方式:可以向远程主机执行脚本。
salt -C 'web-01' test.ping 模块命令。测试minion存活状态,-C多参数
salt 'web-01' cmd.run '/etc/init.d/redis_6392 stop'
salt 'web-01' cmd.run '/etc/init.d/mysqld restart' //无日志输出, 需要修改启动脚本
saltstack服务器集群管理平台_第7张图片
image.png

salt 'web-01' cmd.run 'tail -400 /var/log/mysqld.log'
salt '*' cmd.script salt://temp.sh salt:// == /srv/salt(salt的默认发布目录)
4)salt命令 salt '' [argument]
function是salt带的或自己写的可执行模块里面的function,target指定命令或者模块应用到哪些minion上
globbing通配符 salt 'aliyun-*' test.ping
正则表达式 salt -E 'web-(0001 | 0003)' test.ping
list列表 salt -L 'web-0001,web-0002' test.ping
1个或者多个参数 salt -C 'web-0001, web-0002, xx' test.ping
salp执行cmd的cp命令。salt 'web-01' cmd.run 'cp /home/zhanqi/a.cnf /home/zhanqi/temp/a.cnfbk'
image.png
saltstack服务器集群管理平台_第8张图片
image.png

5)salt执行cp模块 salt-cp 分发文件到minion上,不支持目录分发。
salt-cp 'l-qa*' a.cnf /home/zhanqi/a.cnf
saltstack服务器集群管理平台_第9张图片
image.png

image.png

6)salt执行自定义脚本。
salt:// 是指 /srv/salt(salt的默认发布目录)
saltstack服务器集群管理平台_第10张图片
image.png

saltstack服务器集群管理平台_第11张图片
image.png

5,YMAL(Yet Another Markup Language

1)可读性高,表达数据序列的编程语言,ymal以数据为设计语言的重点,xml以标记为重点。
2)规则
缩进:使用固定的层次表示缩进,不能使用tab,saltstack中要求两个空格。
冒号:冒号后一个空格。
短横线:后面加一个空格,表示列表。
3)示例
对象:name: hzq
数组:["h","z","q"]
- h
- z
- q
对象数组复合结构
names:
   -   hzq
   -   hahaha
   -   bob
字符串:字符串默认不使用引号表示。

6,SLS文件。

1)saltstack使用ymal语言将sls文件,即SaLt State文件 / 配置管理文件(SLS描述了系统的目标状态,由格式简单的数据构成。)解释成它自己识别的内容,jinja是基于python的模板引擎,sls文件可以使用jinja模板来做一些操作。
2)在使用sls之前,需要先指定环境配置的根目录。master的/etc/salt/master文件中。

saltstack服务器集群管理平台_第12张图片
image.png
saltstack服务器集群管理平台_第13张图片
image.png
saltstack服务器集群管理平台_第14张图片
image.png

3) /srv/salt/top.sls
top.sls 是配置管理的入口文件
base标签开始解析,下一级是 操作的目标 : 正则,分组,或者grain模块;再下一级是 要执行的state文件(无扩展名)
image.png
子state文件webserver.sls
image.png

4)单个sls执行
salt '*' state.sls webserver
salt '*' state.apply webserver
highstate执行
salt '*' state.highstate top
5)sls命名空间。
webserver.sls简称webserver
webserver/dev.sls可写作webserver.dev
webserver/init.sls可写作webserver(webserver.sls比init.sls优先级高)

7,Jinja模板

1)salt包含jinja2模板引擎,可以用在sls文件,pillar文件和其他被salt管理的文件中。可以使用Jinja去访问million的configuration values,pillar data,call Salt execution modules。
2)Pillar可以用来存储类似于用户名和密码等数据,或者任何其它类型的数据,此数据可以在states中访问。

8,使用returner将salt执行返回的信息存起来

salt '*' cmd.run '/etc/init.d/duobeiyund status' --out=json --out-indent=-1
salt '*' saltutil.sync_returners
returner里面咱们定义的文件或者数据库都是相对于minion来说。(redis等模块需要在minion上安装)
salt '*' cmd.run 'locale' 查看机器编码

你可能感兴趣的:(saltstack服务器集群管理平台)