saltstack之自动化运维

引入

简介

  saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。

  早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。

  salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。

  不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。 

  Salt是python编写的,支持用户通过python自定义功能模块,也提供了大量的python API接口,用户可以根据需要进行简单快速的扩展。

saltstack的运维方式

  • Local  本地运行,交付管理
  • Master/Minion (常用方式 )
  • Salt SSH   不需要客户端

salt基本架构

  在安装salt之前,先理解salt架构中各个角色,主要区分是salt-master和salt-minion,顾名思义master是中心控制系统,minion是被管理的客户端。

  salt架构中的一种就是master > minion。

服务器环境准备

ip地址

身份

软件包

关闭服务器安全策略
<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

写入sale-master配置文件如下:

master: 192.168.178.132 master_port: 4506 acceptance_wait_time: 10/var/log/salt/minion

启动

systemctl start salt-master systemctl status salt-master

====================================

<span style="color: #008000;">#<span style="color: #008000;"> 192.168.178.132
systemctl 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配置
auto_accept: True <span style="color: #008000;">#<span style="color: #008000;"> 如果对Minion信任,可以配置master自动接受请求

常用命令参数:

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 <span style="color: #800000;">'<span style="color: #800000;">*<span style="color: #800000;">' test.fib 50 <span style="color: #008000;">#<span style="color: #008000;"> 生成斐波那契数列
[root@master ~]$salt <span style="color: #800000;">'<span style="color: #800000;">slave<span style="color: #800000;">' sys.list_modules <span style="color: #008000;">#<span style="color: #008000;"> 列出所有salt的sys模块

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

相关文章

LinuxSystemd服务(2021.07.09)目录LinuxSystemd服务(2021.07...
opidrvabortingprocessM002ospid(3561)asaresultofORA-600OR...
安装好haproxy后,配置正确无法启动,看日志:Feb1309:32:50clu...
Linux 系统与服务管理工具Systemd被曝存在3大漏洞,影响几乎...
一、systemd查看日志文件有隐藏 systemctlstatusSERVICE-l-...
不要在mp目录下保存文件,该目录会定期清理文件mp默认保存10...