salt是一款非常流行的开源软件,用于跨平台infra管理。常用的功能包括跨平台远程执行命令,跨平台配置管理等等。
这一节主要是介绍salt的工作原理,以及其组成模块和对应功能。有了高屋建瓴的视角,后面的章节再对各个模块进行深入讲解。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
salt的工作方式
- 通信方式
salt采用server-agent通信方式,server称为salt master,agent称为salt minion。salt master负责给minion发送指令,并收集和显示指令的返回结果。因为其轻量性,一个salt master可以轻松管理数千乃至上万个minion。
salt master会同时监听4505和4506两个端口。所有的minion会主动和master的4505端口建立一个持久的连接,并在这个连接上监听master发送的命令。命令会以异步(asynchronously)的方式发送给所有的minion,所以几乎所有的minion都会同时接收到发送的命令。如果minion有特殊请求,例如发送结果给master,或者从master获取数据(例如配置信息),才会连接到4506端口。如下所示,我的实验环境有一台master和两台minion,在saltmaster上检查端口连接情况如下图所示,可见两台minion都和master的4505端口建立了连接。
root@saltmaster:/srv/salt# netstat -ntap | grep python
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 16010/python2
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 16018/python2
tcp 0 0 192.168.50.10:4505 192.168.50.11:52394 ESTABLISHED 16010/python2
tcp 0 0 192.168.50.10:4505 192.168.50.12:44442 ESTABLISHED 16010/python2
在初次连接的时候,minion会把自己的public