saltstack 运维工具

SaltStack 是基于 Python 开发的一套 C/S 架构配置管理工具(功能不仅仅是配置管理,如使用 salt-cloud 配置 AWS EC2 实例),它的底层使用 ZeroMQ 消息队列 pub/sub 方式通信,使用 SSL 证书签发的方式进行认证管理。
号称世界上最快的消息队列 ZeroMQ 使得 SaltStack 能快速在成千上万台机器上进行各种操作,而且采用 RSA Key 方式确认身份,传输采用 AES 加密,这使得它的安全性得到了保障。SaltStack 经常被描述为 Func 加强版 + Puppet 精简版。

saltstack 安装

salt-master

salt-master 是 saltstack 的管理端,以守护进程的方式运行。

## 1. 安装 epel 源
yum -y install epel-release

## 2. 安装 salt-master
yum -y install salt-master

## 3. 运行 salt-master
service salt-master start # 开了防火墙需要放行 4505、4506 端口

salt-minion

salt-minion 是 saltstack 的客户端,以守护进程的方式运行。

## 1. 安装 epel 源
yum -y install epel-release

## 2. 安装 salt-minion
yum -y install salt-minion

## 3. 配置 salt-minion
sed -i 's/#master:.*/master: MASTER_IP/' /etc/salt/minion # 修改为 master 的 IP

## 4. 运行 salt-minion
service salt-minion start

saltstack 授权

首次连接时需要先在 master 端进行授权:
salt-key -L,查看当前证书签证情况;
salt-key -A -y,授权所有未授权的 minion;

saltstack 例子

## 批量 ping
salt '*' test.ping          # * 表示通配符,表示所有主机

## cmd.run,运行 shell 命令
salt '*' cmd.run 'ls -al'   # 运行 shell 命令并返回结果

## 默认 salt 使用通配符匹配主机
# -E 选项 指定为正则表达式匹配
salt -E '192.168.1.\d{2}$' test.ping                # 匹配最后一段 ip 为两位数的主机

# -L 选项 指定为列表匹配
salt -L '192.168.255.101,192.168.255.222' test.ping # 匹配 192.168.255.101,192.168.255.222