saltstack

Posted clbao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了saltstack相关的知识,希望对你有一定的参考价值。

salt介绍

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

salt强大吗

系统管理员日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等等。如果主机数量庞大,单靠人工维护实在让人难以忍受。

  早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是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。

技术分享图片

在远程执行系统中,salt用python通过函数调用完成任务。

运行salt依赖包

python
zeromq
pyzmp
pycrypto
msgpack-python
yaml
jinja2

服务器环境准备

配置本地文件解析,用于加速身份验证  编辑 /etc/hosts

   ip                      主机名
192.168.12.112    node1            # 主
192.168.12.181    minion1      # 从
192.168.12.182    minion2        # 从

yum配置

确保环境准备ok,确保每个节点的yum源配置正确

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all #清空缓存
yum makecache #生成yum缓存

安装

1.node1端安装salt-master 
yum install salt-master -y

2.在2个minion地址中安装salt-minion 
yum install salt-minion -y

 

修改配置文件

salt-master的配置文件是/etc/salt/master
salt-minion的配置文件是/etc/salt/minion

编辑的时候不能有空格!!!

1.master的配置文件
interface: 0.0.0.0 #绑定到本地的0.0.0.0地址
publish_port: 4505  #管理端口,命令发送
user: root      #运行salt进程的用户
worker_threads: 5  #salt运行线程数,线程越多处理速度越快,不要超过cpu个数
ret_port: 4506  #执行结果返回端口
pidfile: /var/run/salt-master.pid #pid文件位置
log_file: /var/log/salt/master  #日志文件地址
#自动接收minion的key
auto_accept: False

2.三个minion的配置文件
master: node1
master_port: 4506
user: root
id: s14minion1 #表示minion身份信息的,这里要修改,三个节点,为不同的id
acceptance_wait_time: 10
log_file: /var/log/salt/minion

 

启动进程

启动salt-master和salt-minion

systemctl start salt-master 
systemctl start salt-minion

检查秘钥通信

master端:
salt-key -f 指明节点id #查看节点的秘钥信息

minion端:
salt-call --local key.finger #查看自己的秘钥信息,与master端的进行对比

接受秘钥通信

在salt软件启动的时候,会进行通信连接,master可以检测到minion的身份地址,此时还未接收key,还未通信,需要认证秘钥才可以通信

salt-key -L  #查看所有主机秘钥信息
#salt
-key参数解析 -L #查看KEY状态 -A #允许所有 -D #删除所有 -a #认证指定的key -d #删除指定的key -r #注销掉指定key(该状态为未被认证)

运行测试

salt-key -a minion-id #指明接收一个minion

salt-key -A # 接收所有minion的秘钥

salt "*" test.ping #通过salt主命令 匹配所有的已接收的主机 发送ping命令,会得到True 或false

salt "*" cmd.run #通过执行命令接口,对所有主机,执行命令

salt "*" cmd.run "yum install nginx -y" #对所有主机发送安装nginx的命令

待续。。

 

以上是关于saltstack的主要内容,如果未能解决你的问题,请参考以下文章

首发分析 | SaltStack远程执行代码多个高危漏洞透析(CVE-2021-25281/25282/25283)

Python操作Saltstack

预警通报关于SaltStack多个高危漏洞的预警通报

漏洞告警SaltStack多个高危漏洞(CVE-2021-25281/25282/25283)

漏洞更新SaltStack 多个高危漏洞(含漏洞分析及深信服解决方案)

Saltstack