saltstack

2020-11-9
SaltStack

  1. SaltStack 简介
    Salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯
    SaltStack 基于python开发的一套C/S架构,具备Puppet,ansible功能于一身的配置管理工具,号称使用 世界上最快的消息队列ZeroMQ,使用RAS key方式确认身份,传输采用 AES加密,安全性能更高
    消息队列ZeroMQ :
    消息处理队列库

2.SaltStack的通信端口
master: 4505
minion: 4506
Salt使用server-agent通信模型,服务端组件被称为Salt master ,agent被称为Salt minion

3.组件
SaltMaster
*管理系统\服务端,这个系统用来发送命令和配置SaltStack minion上运行
Salt Minion
接受管理系统\客户端,该系统接收来自Salt Master 的命令和配置
saltstack

通信模型图
Publisher (端口4505)所有Salt minions都需要建立一个持续连接到他们收听消息的发布者端口。命令是通过此端口异步发送给所有连接,这使命令可以在大量系统上同时执行。
Request Server (端口4506)Salt minios根据需要连接到请求服务器,将结果发送给Salt master,并安全地获取请求的文件或特定minion相关的数据值(称为Salt pillar)。连接到这个端口的连接在Salt master和Salt minion之间是1:1(不是异步)。
isof -i :4505

4.安装SaltStack
4.1配置服务器
yum -y install salt-master
systemctl enable salt-master
systemctl start salt-master

4.2安装Salt-Minion指向Salt-Master网络地址
minion]# yum -y install salt-minion
# cp /etc/salt/minion{,.back}
#sed -i ‘/#master: /c\master: salt-master’ /etc/salt/minion
#systemctl start salt-minion
#systemctl enable salt-minion
4.3进行认证
认证方式::
saltstack
Salt 的数据传输是通过 AES 加密,Master 和 Minion 之前在通信之前,需要进行认证。
Salt 通过认证的方式保证安全性,完成一次认证后,Master 就可以控制 Minion 来完成各项工作了

认证方式
4.3.1
minion 在第一次启动的时候,会在/etc/salt/pki/minion 自动生成minion.pem(private key)和minion.pub(public key),然后将minion.pub发送给master
4.3.2
master在第一次启动的时候,会在/etc/salt/pki/master自动生成master.pem和master.pub,并且会接收到minion发送的minion.pub,通过salt-key命令接收minion public key ,会在master的/etc/salt/pki/master/minions目录下存放以minion id 命令的public key ,验证成功后同时minion会保存一份master public key在minion的 /etc/salt/pki/minion/minion_master.pub里。
原理总结:minion会将自己的公钥给master, master认证成功后也会将自己的公钥发给minion
4.3.3
认证示例
master]#tree /etc/salt/pki
├── master
│ ├── master.pem
│ ├── master.pub
│ ├── minions
│ ├── minions_autosign
│ ├── minions_denied
│ ├── minions_pre
│ │ └── salt-minion01
│ └── minions_rejected
└── minion
minion]# tree /etc/salt/pki
├── master
└── minion
├── minion.pem
└── minion.pub
4.3.3.1
salt-key 命令解释
master]#salt-key -L
Accepted Keys: #已经接受的key
Denied Keys: #拒绝的key
Unaccepted Keys: #未加入的key
Rejected Keys: #吊销的key

#常用参数
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)
#配置master自动接受请求认证(master上配置 /etc/salt/master)
auto_accept: True

4.3.3.2
salt-key 认证
master]#salt-key -L
]#salt-key -a salt-minion(minion服务器的hosename) -y 添加指定的key
]#salt-key -A -y
]#salt-key -L
4.3.3.3
完成认证后再次查看master minion 的pki目录
master】#tree /etc/salt/pki
├── master
│ ├── master.pem
│ ├── master.pub
│ ├── minions
│ │ └── salt-minion01
│ ├── minions_autosign
│ ├── minions_denied
│ ├── minions_pre
│ └── minions_rejected
└── minion

minion]#tree /etc/salt/pki
├── master
└── minion
├── minion_master.pub
├── minion.pem
└── minion.pub
4.3.4
远程执行,判断主机是否存货
master】#salt ‘*’ test.ping
salt-minion02:
True
salt-minion03:
True
salt-minion01:
True

salt saltstack自带的一个命令

* 表示目标主机,这里表示所有目标主机

test.ping test是saltstack中的一个模块,ping则是这个模块下面的一个方法

4.3.4.1
使用cmd.run模块远程执行shell命令
master]#salt ‘salt-minion’ cmd.run ‘uptime’ 查看minion的时间