(安装、配置、启动)
配置管理工具:
Saltstack最基本的三大功能:
Saltstack常用的网址:
Saltstack组件:
Saltstack支持的操作系统:
Saltstack四种运行方式:
配置两台设备:
Saltstack提供自己官方repo仓库 请点击 ,里面存在各个系统版本安装步骤
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
建议安装一个本地仓库,我才用的aliyun,如下:
关闭Saltstack01和Saltstack02防火墙:
systemctl stop firewalld.service #临时关闭firewall
systemctl disable firewalld.service #禁止firewall开机启动
2.1 启动Saltstack01的salt-master
1 | systemctl start salt-master #先启用salt-master |
---|
Saltstack01的目录
Saltstack02的目录
2.2 配置Saltstack01和Saltstack02的minion配置文件, 并启动salt-minion
cd /etc/salt
vi minion # minion配置文件(多一个空格都能报错,配置master的ip地址或域名,前提要有DNS)
注意:
配置文件采用YAML语言,切记不要使用TAB键。
默认配置master就可以,还有一个ID选项:如果不设置Id的话,默认获取到主机名:socket.getfqdn()。
1 | systemctl start salt-minion |
---|
没有设置id的时候,查看一下minion_id默认就是FQDN名,就是Saltstack02。
minion_id 值的生成过程:
minion 默认按照如下顺序,试图在找到一个不是localhost的值作为ID:
Python函数socket.getfqdn() 获取的值;
/etc/hostname 定义的值(仅限于非Windows系统);
/etc/hosts (%WINDIR%\system32\drivers\etc\hostson
Windows hosts) 中定义的任何映射 127.0.0.0/8 的主机名做ID值
如果以上都能够产生一个ID, 并且不是localhost,then a sorted list of IP addresses on the minion (excluding any within 127.0.0.0/8) is inspected. The first publicly-routable IP address is used, if there is one.Otherwise, the first privately-routable IP address is used.如果一切都失败了,那么则使用localhost作为备用,最终获取的ID将记录在/etc/salt/minion_id文件中,该文件可以手动更改,重启服务后不会被重新覆盖。
注意:如果minion端主配置文件 /etc/salt/minion 中启用了 id: xxxx , 那么这个ID值将覆盖 /etc/salt/minion_id 中记录的ID数值.
此时Saltstack01的目录
此时Saltstack02的目录(启动minion之后就有了pki目录,并生成两个公钥和私钥文件)
2.3 Salt minion和Salt master如何通信???
通信之前需要认证,采用公钥和私钥。
salt-key 常用参数:
Accepted Keys 表示已经接受的公钥
Denied Keys 表示已经拒绝的公钥
Unaccepted Keys 表示还没有被接受的公钥
Rejected Keys 表示已经被拒绝的公钥
其中:Deny 是直接把包丢掉,不会有任何回应,相对粗暴点,而 Reject 则是会通知对方你的包被我拒绝了
总结:
当初始化安装 minion 启动服务启动后:
minion端生成一个秘钥对,并产生一个ID值,minion服务会安装ID值命名的公钥发送给 master ,直到接受为止;
master认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在 /etc/salt/pki/master/minions_pre 目录中(无ID值默认就是FQDN名);
master认证完毕后,会将自身的公钥发送给 minion,并存储为 /etc/salt/pki/minion/minion_master.pub。
扩展:
master 秘钥对默认存储在/etc/salt/pki/master/master.pub /etc/salt/pki/master/master.pem
master 端认证的公钥存储在:/etc/salt/pki/master/minions/
minion 秘钥对默认存储在/etc/salt/pki/minion/minion.pub /etc/salt/pki/minion/minion.pem
minion 存放的master公钥/etc/salt/pki/minion/minion_master.pub
minion_id 默认存储在/etc/salt/minion_id
master会将master的公钥发给minior,此时miniors的目录:
master开始可以管理miniors,此时master的目录(会将pki/master/minons_pre下的目录转移到pki/master/minons下):
此时master已经可以和miniors通信,测试一下:
salt'*'test.ping #
salt ‘*’ test.ping涉及的组件比较多,包括Master Req Server,Master Publisher,Minion,Master EventPubliser等,现在概要地介绍下整个实现流程:
在salt-master机器执行salt ‘*’ test.ping命令;
salt向Master Req Server发送带publish命令的消息;
Master Req Server收到消息后向publish_pull.ipc push消息;
Master Publisher向Minion Publish消息;
Minion收到消息后启动一个新进程来执行消息中fun指定的函数;
函数执行完成后,返回结果给Master Req Server;
Master Req Server把结果push给Master EventPublisher;
这时因为salt客户端订阅了Master EventPublisher,将收到返回结果,之后直接输出到终端。整个流程结束。
master有端口4505和4506,minior无端口:
lsof -n -i:4505 #检查所有和端口4505有关的连接
lsof -n -i:4506 #检查所有和端口4506有关的连接
......
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。