1、简介
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
2、特性
(1)、部署简单、方便;
(2)、支持大部分UNIX/Linux及Windows环境;
(3)、主从集中化管理;
(4)、配置简单、功能强大、扩展性强;
(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;
(6)、支持API及自定义模块,可通过Python轻松扩展。
(注:办公网中,有一个暂时的测试环境,
master:172.22.2.193
minion:172.22.2.193,172.22.2.194,172.22.2.195,172.22.2.198
)
3、安装
注:以下安装方式针对centos7
(参考网址:http://repo.saltstack.com/?LLM=gg1@chengg.uu.me#rhel)
1)master安装
sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-2015.8-2.el7.noarch.rpm
sudo yum install salt-master
sudo yum install salt-minion
#sudo yum install salt-ssh
#sudo yum install salt-syndic
#sudo yum install salt-cloud
#sudo yum install salt-api
(#根据需要安装)
2)minion安装
sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-2015.8-2.el7.noarch.rpm
sudo yum install salt-minion
4、简单配置
salt的配置文件一般在/etc/salt
1)master配置
vi /etc/salt/master
更改日志等级:将log_level和log_level_logfile的warning 改为debug
更改interface:更改为本机IP地址
2)minion配置
vi /etc/salt/minion
配置master地址:设ip或域名(最好域名)
配置minion名称:自己命名,一般设ip或域名(以更好区分)
3)master与minion连接
配置完后,所有minion执行salt-minion重启,在master上执行‘salt-key L' ,可以看到主机的key管理,执行’salt-key -A' 接受所有的key
至此,salt的基本环境已经搭建好了。
4)测试连接
SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态
或者使用以下命令测试连接,所有minion显示true
5、salt常用模块简单用法
模块详细用法见官网说明
1)工作目录设置
2)cp模块(实现远程文件、目录的复制,以及下载URL文件等操作)
将主服务器file_roots指定位置下的目录复制到被控主机
salt '*' cp.get_dir salt://hellotest /data
将主服务器file_roots指定位置下的文件复制到被控主机
salt '*' cp.get_file salt://hellotest/rocketzhang /root/rocketzhang
下载指定URL内容到被控主机指定位置
salt '*' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz
3)cmd模块(实现远程的命令行调用执行)
salt '*' cmd.run 'netstat -ntlp'
4)sls用法
祥见官网,或者参考后面应用场景举例
6、salt其他设置
1)minion分组设置
master配置文件中设置,比如:
分组之后,可以针对分组进行批量配置,比如:
2)return设置
return是指salt系统对执行minion后返回的数据进行存储或返回给其他程序,在本环境中,采用mysql进行存储,在master中安装mysql数据库。
可以参考官网教程:https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html
举例:
在mysql数据库中可以看到执行结果
设置步骤:
a)master设置
master安装mysql数据库,并创建salt数据库。后续参考官网设置步骤如下:
直接复制以下命令行执行, 创建表。
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar(255) NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX jid ON jids(jid) USING BTREE;
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar(50) NOT NULL,
`jid` varchar(255) NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar(255) NOT NULL,
`success` varchar(10) NOT NULL,
`full_ret` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
KEY `id` (`id`),
KEY `jid` (`jid`),
KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
b)minion设置
minion配置文件中添加一下内容
c)minion安装msyql-python模块
d)测试正确与否
无报错即可。
7、salt应用场景简单举例
以下例子都是很简单的salt应用,复杂场景待更新或自行学习。
1)DNS设置
在/srv/salt/base/中,创建init/files/用于放置配置文件resolv.conf
在配置文件中设置好dns地址
在init中创建sls文件
dns.sls文件内容如下:
给所有minon执行dns同步,执行结果:
本文转自flayber 51CTO博客,原文链接:http://blog.51cto.com/406647516/1770058,如需转载请自行联系原作者