一、SaltStack 原理:
1、SaltStack 也是基于CS模式的主控master和client被控端 minion 结构;也是一个异构平台基础设置管理工具;遵守Apache2协议,完全开源。
2、通过ZeroMQ消息队列通信、用Python写成的批量管理工具,远程执行命令。
3、Minion上线后先与Master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信。
4、允许一个管理者Master对多个系统minion的统一管理操作。
二、SaltStack 监听端口:
SaltStack master 启动后默认监听4505和4506两个端口。
1、4505(publish_port)为 saltstack 的消息发布系统,对应的是ZMQ的PUB system;
2、4506(ret_port)为 saltstack 被控端与服务端通信的端口。
三、SaltStack 认证原理:
1、minion在第一次启动时,会在/etc/salt/pki/minion/(可以在/etc/salt/minion里面设置)下自动生成minion.pem(private key 私钥)和 minion.pub(public key 公钥),然后将 minion.pub发送给master。
2、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。
当/etc/salt/master没有配置auto_accept: True时,需要通过salt-key命令来进行证书认证操作 salt-key -L 显示已认证或未认证的被控端id
salt-key -D 删除所有认证主机id证书 salt-key -d id 删除单个id证书
salt-key -A 接受所有id证书 salt-key -a id 接受单个id证书
salt-key -j id 拒绝单个id证书 salt-key –J 拒绝所有id证书
四、工作机制
SaltStack 通信模式是使用的ZeroMQ;
Master下发任务匹配到的Minion上去,Minion执行模块函数,并返回执行结果。
salt的核心功能:
使用命令 发送到远程系统上是并行,而不是串行
使用安全加密协议
使用最少最快的网络载荷
提供简单的编辑接口