当前位置: 首页 > news >正文

saltstack安装部署

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

学习参考资源链接

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

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

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

https://packages.broadcom.com/

Salt-3007.5安装部署

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

了解saltstack

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

下载导入公钥

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

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

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

安装salt

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

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

下载安装salt-master

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

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

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

下载安装salt-syndic

从官网下载salt-syndic安装包

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

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

配置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

下载安装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

配置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不会建立连接。

启动minion服务,执行命令 service salt-minion start

或者 systemctl start salt-minion

11 测试验证

确认minion和master连接正常,

Master上执行命令 netstat -anp | grep 4506

Minion01上执行命令 netstat -anp | grep 4506

Master上执行命令 salt “*” test.ping

192.168.122.1不存在这台服务器,所以master没有收到返回消息

12 Salt命令练习

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模块有哪些函数方法可以用。

http://www.lryc.cn/news/589601.html

相关文章:

  • docker搭建freeswitch实现点对点视频,多人视频
  • vscode里面怎么配置ssh步骤
  • 【PTA数据结构 | C语言版】层序遍历二叉树
  • js分支语句和循环语句
  • 小架构step系列15:白盒集成测试
  • NE综合实验3:链路聚合、VLAN与Trunk、STP、DHCP、OSPF及PPP整合部署
  • 经典排序算法之插入排序
  • 二分查找栈堆
  • 笔试——Day8
  • 力扣经典算法篇-25-反转链表 II(头插法)
  • AI 增强大前端数据加密与隐私保护:技术实现与合规遵
  • 牛客:HJ22 汽水瓶[华为机考][数字处理]
  • C# 网口demo
  • Neo4j Python 驱动库完整教程(带输入输出示例)
  • deepseekAI对接大模型的网页PHP源码带管理后台(可实现上传分析文件)
  • Python初学者笔记第十三期 -- (常用内置函数)
  • RestTemplate 实现后端 HTTP 调用详解
  • python 基于 httpx 的流式请求
  • kube-proxy 中 IPVS 与 iptables
  • Vue 2 和 Vue 3 中,组件的封装、二次开发和优化
  • React源码4 三大核心模块之一:Schedule,scheduleUpdateOnFiber函数
  • react - 根据路由生成菜单
  • 使用SQLMAP的文章管理系统CMS的sql注入渗透测试
  • PostgreSQL 大数据量(超过50GB)导出方案
  • DeepSDF论文复现1---数据集生成2---原理解析
  • MIPI DSI(五) DBI 和 DPI 格式
  • 生产问题排查-数据库连接池耗尽
  • bytetrack漏检补齐
  • 2025年夏Datawhale AI夏令营机器学习
  • 数据怎么分层?从ODS、DW、ADS三大层一一拆解!