saltstack之自动化运维
引入简介saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。 早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。 salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。 不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。 Salt是python编写的,支持用户通过python自定义功能模块,也提供了大量的python API接口,用户可以根据需要进行简单快速的扩展。 saltstack的运维方式
salt基本架构在安装salt之前,先理解salt架构中各个角色,主要区分是salt-master和salt-minion,顾名思义master是中心控制系统,minion是被管理的客户端。 salt架构中的一种就是master > minion。 服务器环境准备
<span style="color: #008000;">#<span style="color: #008000;"> 关闭iptables
iptables -<span style="color: #000000;">F <span style="color: #008000;">#<span style="color: #008000;"> 关闭selinux 安装saltstack注意:salt软件包需要epel源的支持, 如果没有安装epel源 <>有教程 在 192.168.178.131 中安装salt-master yum install salt-master -y
另一台安装salt-minion yum install salt-minion -y
salt端口安装好salt之后开始配置,salt-master默认监听两个端口: 4505 publish_port
4506 ret_port
配置文件salt-master的配置文件是/etc/salt/master
salt-minion的配置文件是/etc/salt/minion
写入salt-master配置文件如下: interface: 0.0.0.0
publish_port: 450554506/var/run/salt-/var/log/salt/<span style="color: #008000;">#<span style="color: #008000;"> 自动接收minion的key<span style="color: #008000;">
<span style="color: #008000;"> auto_accept: False
<span style="color: #008000;">#<span style="color: #008000;">s alt的运行线程,开的线程越多一般处理的速度越快,但一般不要超过CPU的个数
worker_threads: 10 <span style="color: #008000;">#<span style="color: #008000;"> master的管理端口 <span style="color: #008000;">#<span style="color: #008000;"> master跟minion的通讯端口,用于文件服务,认证,接受返回结果等 <span style="color: #008000;">#<span style="color: #008000;"> 如果这个master运行的salt-syndic连接到了一个更高层级的master,那么这个参数需要配置成连接到的这个高层级master的监听端口 <span style="color: #008000;">#<span style="color: #008000;"> 指定pid文件位置 写入sale-master配置文件如下: master: 192.168.178.132
master_port: 4506
acceptance_wait_time: 10/var/log/salt/minion
<span style="color: #008000;">#<span style="color: #008000;"> salt运行的用户权限
<span style="color: #000000;">user: root <span style="color: #008000;">#<span style="color: #008000;"> master的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串 <span style="color: #008000;">#<span style="color: #008000;"> master通信端口 <span style="color: #008000;">#<span style="color: #008000;"> 备份模式,minion是本地备份,当进行文件管理时的文件备份模式 <span style="color: #008000;">#<span style="color: #008000;"> 执行salt-call时候的输出方式 <span style="color: #008000;">#<span style="color: #008000;"> minion等待master接受认证的时间 <span style="color: #008000;">#<span style="color: #008000;"> 失败重连次数,0表示无限次,非零会不断尝试到设置值后停止尝试 <span style="color: #008000;">#<span style="color: #008000;"> 重新认证延迟时间,可以避免因为master的key改变导致minion需要重新认证的syn风暴 <span style="color: #008000;">#<span style="color: #008000;"> 日志文件位置 启动
systemctl start salt-master
systemctl status salt-master
==================================== <span style="color: #008000;"># <span style="color: #008000;"> 192.168.178.132systemctl start salt-minion <span style="color: #008000;">#<span style="color: #008000;"> 启动minion systemctl status salt-minion <span style="color: #008000;">#<span style="color: #008000;"> 检查状态 注意:如果启动报错,查看是否有 /var/log/salt/ 这个文件 在master上接收minion密钥在minion启动后连接master会请求master为其签发证书,等待证书签发完成后,master可以信任minion,并且minion和master之间的通信是加密的。 在salt-master执行 salt-key命令用于管理mionion秘钥 [root@master ~]
Rejected Keys:
此时slave已经出现在unaccepted keys中,说明minion已经和master联系,并且master已经获取了minion的公钥,等待下一步指令。 密钥匹配在master上执行: [root@master ~]
97:b5:9a:65:b8:49:a1:50:a5:6a:66:ce:33:ea
然后在minion上获取密钥: [root@slave ~]
97:b5:9a:65:b8:49:a1:50:a5:6a:66:ce:33:ea
此时可确认密钥匹配,在master上接收密钥 [root@master ~]
/ minion slave accepted.
确认接收秘钥后,检验minion秘钥是否被接收 [root@master ~]
好了,配置完成,可以执行命令了。 常用命令salt-key只有master接收了minion key后才能进行管理。 [root@master ~]
Accepted Keys:
Denied Keys:
Unaccepted Keys:
Rejected Keys:
<span style="color: #008000;"># <span style="color: #008000;">常用参数-L <span style="color: #008000;">#<span style="color: #008000;"> 查看KEY状态 -A <span style="color: #008000;">#<span style="color: #008000;"> 允许所有 -D <span style="color: #008000;">#<span style="color: #008000;"> 删除所有 -a <span style="color: #008000;">#<span style="color: #008000;"> 认证指定的key -d <span style="color: #008000;">#<span style="color: #008000;"> 删除指定的key -r <span style="color: #008000;">#<span style="color: #008000;"> 注销掉指定key(该状态为未被认证) <span style="color: #008000;">#<span style="color: #008000;"> 在master端/etc/salt/master配置 常用命令参数: rpm -ql salt-/etc/salt/master <span style="color: #008000;">#<span style="color: #008000;"> salt master主配置文件
/usr/bin/salt <span style="color: #008000;">#<span style="color: #008000;"> salt master 核心操作命令 /usr/bin/salt-cp <span style="color: #008000;">#<span style="color: #008000;"> salt 文件传输命令 /usr/bin/salt-key <span style="color: #008000;">#<span style="color: #008000;"> salt证书管理 /usr/bin/salt-master <span style="color: #008000;">#<span style="color: #008000;"> salt master 服务命令 /usr/bin/salt-run <span style="color: #008000;">#<span style="color: #008000;"> salt master runner命令 rpm -ql salt-/etc/salt/minion <span style="color: #008000;">#<span style="color: #008000;"> minion配置文件
/usr/bin/salt-call <span style="color: #008000;">#<span style="color: #008000;"> 拉取命令 /usr/bin/salt-minion <span style="color: #008000;">#<span style="color: #008000;"> minion服务命令 /usr/lib/systemd/system/salt-minion.service <span style="color: #008000;">#<span style="color: #008000;"> minion启动脚本 salt命令: [root@master ~]
<span style="color: #008000;">#<span style="color: #008000;"> salt 是一个命令 <span style="color: #008000;">
<span style="color: #008000;"> * 表示目标主机,在这里代表所有目标主机 <span style="color: #008000;"><span style="color: #008000;"> test.ping是salt远程执行的一个模块下面的方法。<span style="color: #000000;"> [root@master ~]$salt ------------------------------ test.versions_report
cmd运行命令:
[root@master ~]$salt cmd.run
pkg安装命令:
[root@master ~]$salt pkg.install
[root@master ~]$salt pkg.remove
[root@master ~]$salt pkg.version
service管理服务模块: [root@master ~]$salt service.start
[root@master ~]$salt service.status
[root@master ~]$salt service.stop
--out 控制salt命令结果输出的格式:
[root@master ~]$salt --out=json cmd.run_all
[root@master ~]$salt --out=yaml cmd.run_all
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |