saltstack安装部署

入职新公司后,需要管理近千台服务器,公司使用saltstack进行管理,出于工作需求,结合自身实施经验,整理了一下最近的一些经验。

学习参考资源链接

S alt官网、学习salt配置、命令、模块讲解

http://docs.saltstack.cn/topics/configuration/index.html

salt现官网仓库源,原 https://repo.salt.com已不可用,salt被broadcom收购

https://packages.broadcom.com/

S alt -3007.5 安装部署

本节内容适合Linux系统saltstack安装部署;

1 了解salt stack

saltstack是基于python开发的一套C/S架构配置管理工具,它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理。ZeroMQ使SaltStack能快速在成千上万台机器上进行各种操作,而且采用RSA Key方式确认身份,传输采用AES加密,使传输的安全性得到保障。

saltstack服务器端叫做Master,客户端叫作Minion,并且有消息队列中的发布与订阅(pub/sub)服务模式,minion与master之间通过ZeroMQ消息队列通信。Master和Minion端都以守护进程的模式运行,一直监听配置文件里面定义的ret_port也就是4506端口(接收minion请求)和publish_port也就是4505端口(ZMQ的发布消息)。当minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证。

下图是简单的saltstack架构

2 安装 python

saltstack是基于python开发的C/S架构的配置管理工具,安装前需要先给各个服务器安装python,

安装命令: yum install -y python3,

安装完成检查当前python版本: python --version;

centos7.8自带python安装包,如果系统没有python安装包,可以到官网下载,官网地址 https://www.python.org/downloads

3 下载导入公钥

salt仓库源已经发生迁移,从 https://repo.salt.com 迁移到 JFrog;

点击artifactory,选择saltproject-rpm,下载公钥,考虑到网络限制,建议下载到本地,再上传到待安装服务器;

执行公钥导入命令 gpg --import SaltProject.gpg.pub

4 安装 salt

需要先安装salt,再安装salt-master,否则会提需要安装salt;

yum install -y salt-3007.5-0.x86_64.rpm

5 下载安装 salt-master

从官网下载salt-master安装包,

安装命令 yum install -y salt-master-3007.5-0.x86_64.rpm

安装完成检查当前salt-master版本,命令 salt-master --version

6 下载安装salt -syndic

从官网下载salt-syndic安装包

安装命令 yum install --y salt-syndic-3007.5-0.x86_64.rpm

安装完成检查当前salt-syndic版本,命令 salt-syndic --version

7 配置 salt-master ,salt -syndic

master配置参考官网配置salt-master,

链接地址 http://docs.saltstack.cn/ref/configuration/master.html

我在安装的时候把master和syndic安装在同一台机器,master和syndic的master配置文件路径相同: /etc/salt/master

配置如下:

user: root

cachedir: /var/cache/salt/master

keep_jobs: 24

timeout: 60

color: false

max_open_files: 100000

worker_threads: 20

auto_accept: true

file_recv: true

file_roots:

base:

  • /home/salt

pillar_roots:

base:

  • /etc/salt/pillar

pillar_opts: true

order_masters: true

syndic_master: 192.168.183.135 #注释 syndic连接的master

syndic_master_port: 4506

启动salt-master,命令:systemctl start salt-master

启动salt-syndic,命令:systemctl start salt-syndic

8 下载安装 minion

从官网下载salt-minion安装包

安装minion也需要先安装salt,再安装minion,命令如下:

yum install -y salt-3007.5-0.x86_64.rpm

yum install -y salt-minion-3007.5-0.x86_64.rpm

安装完成检查当前salt-minion版本,命令:salt-minion --version

9 配置 salt-minion

minion配置参考官网配置salt-minion,链接地址 http://docs.saltstack.cn/ref/configuration/minion.html

这个地方有个坑需要注意:虚拟机默认安装的时候,主机名是localhost,如果在minion服务启动后,再去修改主机名,master端那边收到的证书请求,还是旧主机名的,这个是因为启动minion服务后,会产生/etc/salt/minion_id ,而这个文件里面的内容不会因为主机名的改变、服务的重启、机器的重启而改变,所以如果主机名发送了变化,想让master端那里的证书认证名称也跟着发送变化的话,就要删除/etc/salt/minion_id文件或者清空/etc/salt/minion_id文件里面的内容,然后重启minion服务。

我在master上也部署了一个minion,两个minion配置如下

Master上的minion配置

root@master salt\]# cat minion \| grep -e '\^\[\^#\]' master: 192.168.183.135 id: 192.168.183.135 #注释 id填minion服务器IP minion01上的minion配置 \[root@minion01 salt\]# cat minion \| grep -e '\^\[\^#\]' master: 192.168.183.135 id: 192.168.183.134 #注释 id填minion服务器IP ### 10 ******master上同步minion的key****** minion配置完成后,需要在master上同步minion的key, 命令 salt-key --A 同步完成,/etc/salt/pki/master/minions下会有同步过的key,如果没有对应主机的key,minion和master不会建立连接。 ![](https://i-blog.csdnimg.cn/direct/a5f3bcb8346440d4a81e4b27b78dc264.png) 启动minion服务,执行命令 service salt-minion start 或者 systemctl start salt-minion ### 11 ******测试验证****** 确认minion和master连接正常, Master上执行命令 netstat -anp \| grep 4506 ![](https://i-blog.csdnimg.cn/direct/0de9240f751d4377bbf649e70463deeb.png) Minion01上执行命令 netstat -anp \| grep 4506 ![](https://i-blog.csdnimg.cn/direct/7bc1f80ab99c41be84d08578cd6072fd.png) Master上执行命令 salt "\*" test.ping 192.168.122.1不存在这台服务器,所以master没有收到返回消息 ![](https://i-blog.csdnimg.cn/direct/dbe4d85fc87249ecaafc5a903f2e8483.png) ### 12 ******S**** ****alt命令练习****** Salt --s "192.168.183.134" test.ping Salt "192.168.183.134" cmd.run 'yum install --y httpd' test.ping和cmd.run 都是内置的用法,其实也就是python自带的模块功能,那么如何知道我们现在的salt可以使用哪些方法呢? # salt '\*' -d\|grep :\\'\|more #就可以以列表的形式查看所有可以使用的内置方法。为啥要加过滤呢,因为方法下面还有对应的举例。 # salt 'agent1.salt' sys.list_functions #上面的方法还是比较粗糙,如果你已经知道了用法,可以用sys.list_functions将所有我们可以使用的函数列出来,当然就指定一个节点就可以了,指定'\*'显示结果也是重复。 我现在已经把所有的可以用的模块的函数都查出来了,如果我只想看某个模块所拥有的函数方法呢? # salt 'agent1.salt' sys.list_functions test #如我可以查看test模块有哪些函数方法可以用。

相关推荐
Linux运维日记7 个月前
saltstack 和 ansible 最新比对
github·ansible·saltstack
马立杰7 个月前
Ansible的yum和saltstack的哪个功能相似
ansible·saltstack
马立杰7 个月前
一万台服务器用saltstack还是ansible?
服务器·ansible·saltstack
IT-民工211108 个月前
使用Ansible/SaltStack编写自动化运维脚本
运维·ansible·saltstack
henanxiaoman10 个月前
SaltStack自动化运维部署
运维·自动化·saltstack
happy_king_zi10 个月前
saltstack配置管理
自动化·devops·saltstack
浩泽学编程1 年前
SpringBoot+随机盐值+双重MD5实现加密登录
java·spring boot·后端·密码学·软件工程·md5·saltstack
有莘不破呀1 年前
基于saltstack开发自动化开通主机防火墙策略工具
服务器·自动化·saltstack
cronaldo912 年前
持续集成交付CICD:Jenkins使用基于SaltStack的CD流水线下载Nexus制品
ci/cd·jenkins·saltstack