简介
SaltStack是一种比较常见的运维自动化工具,一般来说一个稍微大些的互联网公司都有用到这类工具,类似的其他工具还有Ansible、Puppet等。每种工具之间都各有优缺点,都有自己适合的场景,如何选型就看自己的业务场景,关于优缺点的大家可以看下这篇文章(https://www.cnblogs.com/leon2659/p/10195443.html)或者自己网上搜索一下。
PS看完之后你可能觉得整个人都不好了,难道就没一种完美的解决方案吗,又不是小孩子,当然是什么都要的/// 对这个问题我个人看法是,在IT方面很少有一种产品能独占所有市场,或者说,很少有一种产品能解决所有的问题。只要有新的问题出现,有不能或者不能很好解决的问题,就有可能出现一款新的产品。除非有一天,所有操作系统都统一了,所有开发语言都统一了,所有硬件设备都统一了,但这一天我能不能亲眼看到都不知道😂
使用saltstack前有必要了解以下几点:
- 基于Python开发且支持二次开发
- 使用YAML配置文件格式
- 需要客户端(Ansible不需要客户端)
- 听说执行效率更高
安装
准备:
salt官网:https://docs.saltstack.com/en/getstarted/
查看并选择版本:https://repo.saltstack.com/index.html#rhel
开始安装:
服务端
1、安装SaltStack存储库和密钥(需要其他版本参考 https://repo.saltstack.com/index.html#rhel )
sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-3002.el8.noarch.rpm
2、清理当前环境
sudo yum clean expire-cache
3、根据自己的需要安装模块(模块功能简介:https://docs.saltstack.com/en/getstarted/overview.html)
```bash
# 中央管理系统
sudo yum install salt-master
# 被管理的机器上安装的客户端
sudo yum install salt-minion
# 使用salt-ssh模块则可以直接执行一些Linux系统命令
sudo yum install salt-ssh
# salt-syndic是代理,比如master一共要管理3000台机器,可以交给3个syndic各1000台机器代为管理,当master要执行一个命令时之和syndic说,syndic负责具体执行并返回结果
sudo yum install salt-syndic
# 随着云服务器发展起来的,一个方便管理云服务器的模块
sudo yum install salt-cloud
# 顾名思义,支持用API请求方式来执行salt命令的模块
sudo yum install salt-api
# 重启服务命令
sudo systemctl restart salt-master
客户端
1、安装SaltStack存储库和密钥
sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-3002.el8.noarch.rpm
2、清理当前环境
sudo yum clean expire-cache
3、根据自己的需要安装模块(模块功能简介:https://docs.saltstack.com/en/getstarted/overview.html)
```bash
# 被管理的机器上安装的客户端
sudo yum install salt-minion
4、配置服务端(如果用服务器需要注意端口是否开放)
# 测试端口
tcping $master_IP 4505
# vim /etc/salt/minion
master: $master_IP (master的ip)
# 重启服务命令
sudo systemctl restart salt-master
查看版本:
查看salt版本
# salt --version
salt 3002
查看salt及其组件的版本
# salt --versions-report
Salt Version:
Salt: 3002
Dependency Versions:
cffi: 1.11.5
cherrypy: Not Installed
dateutil: 2.6.1
docker-py: Not Installed
gitdb: Not Installed
gitpython: Not Installed
Jinja2: 2.10.1
libgit2: Not Installed
M2Crypto: 0.35.2
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.6.2
mysql-python: Not Installed
pycparser: 2.14
pycrypto: 3.9.8
pycryptodome: Not Installed
pygit2: Not Installed
Python: 3.6.8 (default, Apr 16 2020, 01:36:27)
python-gnupg: Not Installed
PyYAML: 3.12
PyZMQ: 19.0.0
smmap: Not Installed
timelib: Not Installed
Tornado: 4.5.3
ZMQ: 4.3.3
System Versions:
dist: centos 8 Core
locale: UTF-8
machine: x86_64
release: 4.18.0-147.8.1.el8_1.x86_64
system: Linux
version: CentOS Linux 8 Core
salt key管理
salt-key命令是salt-master用来管理salt-minion的凭证(保存在 /etc/salt/pki/ 目录下)
# salt-key -L
Accepted Keys:# 已经接受的key
instance-testtest
instance-tiangong
Denied Keys: # master自动拒绝。但出现:具有重复的ID或minion生成了新的密钥,而之前的密钥没有从master服务器中删除。在这种状态下,minion不会收到盐主的任何通讯。
instance-testtest
Unaccepted Keys: # 新增还没被接受的key
instance-wukong
Rejected Keys: # 使用salt-key命令拒绝的key
接受key
# salt-key -A -y
The following keys are going to be accepted:
Unaccepted Keys:
instance-wukong
Key for minion instance-wukong accepted.
其他命令:
salt-key -L # 查询key列表
salt-key -A # 接受所有key
salt-key -D # 删除所有key
salt-key -a <证书名> # 指定名称接收单个key
salt-key -d <证书名> # 指定名称删除单个key
到这里至少salt已经可以跑起来了
salt的默认安装目录在:/etc/salt下,更多的配置可以看官方文档:https://docs.saltstack.com/en/latest/ref/configuration/