千家信息网

运维自动化之Saltstack使用详解

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,概要saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编配
千家信息网最后更新 2026年11月04日运维自动化之Saltstack使用详解

概要

saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编配, 远程执行, 配置管理等等。部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。号称世界上最快的消息队列ZeroMQ使得saltstack非常快速的管理大量服务器,采用RSA Key方式确认身份,传输采用AES加密,安全性也非常有保障。

Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。

SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。有如下特性:

(1)、部署简单、方便;

(2)、支持大部分UNIX/Linux及Windows环境;

(3)、主从集中化管理;

(4)、配置简单、功能强大、扩展性强;

(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;

(6)、支持API及自定义模块,可通过Python轻松扩展。

Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。


核心功能

1、使命令发送到远程系统是并行的而不是串行的

2、使用安全加密的协议

3、使用最小最快的网络载荷

4、提供简单的编程接口


架构
saltstack是基于C/S服务模式,在该架构中,服务器端叫做Master,客户端叫做Minion。传统的C/S模式我们这样理解,客户端发送请求给服务器端,服务器端接受到来自客户端的请求并处理完成后再返回客户端。 在saltstack架构中,不仅有传统的C/S服务模式,而且有消息队列中的发布与订阅(pub/sub)服务模式。目前我们一般用其C/S架构做批量管理。

1) Master:控制中心,salt命令运行和资源状态管理

2) Minion : 需要管理的客户端机器,会主动去连接Mater端,并从Master端得到资源状态

3) 信息,同步资源管理信息

4) States:配置管理的指令集

5) Modules:在命令行中和配置文件中使用的指令模块,可以在命令行中运行

6) Grains:minion端的变量,静态的

7) Pillar:minion端的变量,动态的比较私密的变量,可以通过配置文件实现同步minions定义

8) highstate:为minion端下发永久添加状态,从sls配置文件读取.即同步状态配置

9) salt_schedule:会自动保持客户端配置


Saltstack安装

安装方式有四种,下面通过一个案例简单介绍在CentOS6.8上进行SaltStack部署。

(1) yum方式安装(采用saltstack源)推荐这种方式,简单粗暴。注意没有配置saltstack源的,请先配置saltstack源。

Version 7:

rpm --importhttps://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

Version 6:

rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub

Save the following file to /etc/yum.repos.d/saltstack.repo:

Version 7 and 6:

[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

安装好saltstack源后,用yum 命令来检查是否添加到源列表。

yum repolist
Master端安装:

yum -y install salt-master

Minon端安装:

yum -y install salt-minion


配置并启动Saltstack

Salt 的配置非常简单。默认的 master 配置就可以在大多数情况下运行。仅仅需要更改的是 minion ,在 minion 配置文件中设置 master 的地址。

The configuration fileswill be installed to /etc/salt and are named after the respective components,/etc/salt/master, and /etc/salt/minion.

MASTER配置

默认Salt master监听所有网卡接口(0.0.0.0)的4505和4506端口. 如果需要指定监听IP, 通过 /etc/salt/master配置文件中的"interface"指令进行如下修改:

- #interface: 0.0.0.0
+ interface: 10.0.0.1 #此处是server端监听的地址。
auto_accept: True #此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能。

MINION配置

尽管Salt Minion有许多配置选项,但配置Minion还是非常简单的. 默认的配置Minion会尝试连接DNS名为"salt"的master,如果minion解析到的地址正确,就无需再做配置.

如果DNS名为"salt"并不能解析到本地正确的Master地址,需要通过如下方法修改 /etc/salt/minion 配置文件中的"master"指令:

- #master: salt
+ master: 10.0.0.1 #这里改成你的master服务器地址
id: web01 #建议这里修改成主机名,便于master端分辨
  #在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstate
schedule:
  highstate:
    function: state.highstate
    minutes: 5

更新完配置后,需要重启Salt minion以使配置生效.

运行Saltstack

1. 前台启动master(如果要以daemon方式启动,请指定 -d参数):salt-master
2. 前台启动minion(如果要以daemon方式启动,请指定 -d参数):salt-minion

运行有问题?

排除 Salt 故障最简单的方法是在前台运行 master 和 minion,同时把 log level 设为``debug``

salt-master --log-level=debug

以普通(非root)用户运行:

想要使用其他用户身份运行Salt,参见:conf_master:`user`参数在master配置文件中。

Additionally, ownership, and permissions need to be set suchthat the desired user can read from and write to the following directories (andtheir subdirectories, where applicable):

  • /etc/salt

  • /var/cache/salt

  • /var/log/salt

  • /var/run/salt

更多关于如何使用非特权用户运行salt的信息可以在 这里 找到。

salt-key证书管理:

master端证书存放路径:/etc/salt/pki/master/minions

注意:如果细心的话,你会发现小写字母针对的单一对象,大写都是针对全体。比如 -l显示单一key,-L显示所有key;-a 接受指定key,而-A 就是接受所有key。

saltstack认证原理:

1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

2)、master在接收到minion的publickey后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。


salt-key -L #查询所有接收到的证书

salt-key -a <证书名> #接收单个证书

salt-key -A #接受所有证书

salt-key -d <证书名> #删除单个证书

salt-key -D #删除所有证书

Salt在Master和Minion之间的通讯采用AES加密. 这就确保了发送给minions的命令不会被篡改, Master和Minion之间的通讯认证通过信任的已接受的key进行管理.

在发送给Minion之前,需要确保minion的key已经被Master所接受. 运行 ``salt-key``命令将列出Salt Master已知的所有keys.

[root@master ~]# salt-key -L
Unaccepted Keys:
alpha
bravo
charlie
delta
Accepted Keys:
[root@master ~]# salt-key -A -y
[root@master ~]# salt-key -L
Unaccepted Keys:
Accepted Keys:
alpha
bravo
charlie
delta

发送test.ping指令

[root@moban ~]# salt '*' test.ping
moban2:
    True
moban1:
    True

限于篇幅太长,请大家移步这里进行下载查看,谢谢!

下载地址:http://down.51cto.com/data/2306388

配置 客户 管理 客户端 服务 证书 运行 文件 方式 服务器 命令 地址 指令 架构 消息 监听 模式 状态 端口 端的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网 科技集团 重生之互联网科技帝国 互联网科技公司税收优惠 互联网巨头科技公司 华中科技大学互联网 银优互联网科技有限公司 互联网科技博客 上海亿帐通互联网科技 多迪互联网科技有限公司 成都玖崟互联网科技有限公司乐商圈怎么样 江阴互联网智能科技产品进口 银川新华互联网科技学校联系电话 保险科技服务互联网营销体系 上海科技产业互联网平台 银行科技岗属于互联网吗 梅州GM互联网络科技有限公司 萌小萌互联网科技河南有限公司 世界互联网科技成果奖 长沙渺峰互联网科技有限公司 互联网科技收购价值 博彦科技互联网金融 高科技互联网 互联网最新的科技 沃里互联网科技 掌上梦互联网科技 银川新华互联网科技学校联系电话 广州新华互联网科技学校电竞方面 高科技互联网套路 广州富喜互联网络科技 互联网科技快速发展优美句子
0