自动化运维工具saltstack详解
家庭自动化维修工具:必备螺丝刀、万用表等基础工具。 #生活知识# #家庭维修常识# #家庭自动化维修#
文章目录 saltstack详解saltstack简介什么是zmq消息队列?与其他自动化管理工具对比服务端口salt的安装与部署salt配置路径数据存放.sls文件语法saltstack任务简单示例saltstack详解
学习指南
saltstack简介
Saltstack是基于Python开发的一套C/S架构,具备Puppet、Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高;使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作,而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高;
Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器。目前Salt-cloud项目也已经合并到Saltstack主项目里,Saltstack已经支持Docker相关模块,在友好地支持各大云平台之后,配合Saltstack的Mine实现各云平台业务自动扩展。
saltstack的核心特点:
使用命令发送到远程系统是并行的而不是串行的
使用安全加密的协议
使用最小最快的网络载荷 提供简单的编程接口,设备轻量级
SaltStack作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行
什么是zmq消息队列?
引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。
与其他自动化管理工具对比
服务端口
4505对应的是ZMQ的PUB system,用来发送消息4506对应的是REP system,是来接受消息的。 salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制;如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。salt的安装与部署
实验说明:
server角色ipserver1master172.25.3.1server2minion172.25.3.2server3minion172.25.3.3在server1
(1)搭建salt yum源
vim /etc/yum.repos.d/salt.repo [salt] name=salt baseurl=http://repo.saltstack.com/yum/redhat/7.3/x86_64/2019.2/ gpgcheck=0 123456
(2)下载salt-master
[root@server1 yum.repos.d]# yum install -y salt-master 1
为了方便查看salt节点部署,下载lsof
[root@server1 yum.repos.d]# yum install -y lsof [root@server1 yum.repos.d]# systemctl start salt-master ##启动salt-master服务 [root@server1 yum.repos.d]# lsof -i :4505 ##4505服务端口信息 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mast 2379 root 15u IPv4 25380 0t0 TCP *:4505 (LISTEN) [root@server1 yum.repos.d]# lsof -i :4506 ##4506服务端口信息 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mast 2386 root 23u IPv4 25428 0t0 TCP *:4506 (LISTEN) 12345678910
查看salt节点授权信息
[root@server1 yum.repos.d]# salt-key -L ##salt授权信息,此时没有可授权主机,也无授权信息 Accepted Keys: ##允许授权主机 Denied Keys: ##授权失败主机 Unaccepted Keys: ##未授权主机 Rejected Keys: ##拒绝授权主机 12345
在server2 (server3设置相同)
(1)与server1相同,搭建salt yum源
vim /etc/yum.repos.d/salt.repo [salt] name=salt baseurl=http://repo.saltstack.com/yum/redhat/7.3/x86_64/2019.2/ gpgcheck=0 123456
(2)下载salt-minion
[root@server2 yum.repos.d]# yum install -y salt-minion 1
(3)配置客户端minion
[root@server2 yum.repos.d]# vi /etc/salt/minion 16 master: 172.25.3.1 ##salt-master为 172.25.3.1 [root@server2 yum.repos.d]# systemctl start salt-minion ##启动salt-minion服务 12345
授权处理
授权命令salt-key 常用参数
此时再次查看master端授权信息列,可以看到已有可授权主机出现
[root@server1 yum.repos.d]# salt-key -L Accepted Keys: Denied Keys: Unaccepted Keys: server2 server3 Rejected Keys: 1234567
对salt-minion端授权
[root@server1 yum.repos.d]# salt-key -A 1
授权成功
salt连通测试:
利用test.ping (test模块下的ping方法)测试连通性
[root@server1 yum.repos.d]# salt server? test.ping ##表示测试server所有主机 1
salt配置路径
主配置文件存放路径
(1)master端:[root@server1 srv]# cd /etc/salt/ [root@server1 salt]# ls cloud cloud.profiles.d minion proxy cloud.conf.d cloud.providers.d minion.d proxy.d cloud.deploy.d master minion_id roster cloud.maps.d master.d pki [root@server1 salt]# vim master ##master主配置文件 1234567
需要注意的是:当我们修改主机名后需要将minion_id 删除后重启服务,否则可能会发生错误
(2)minion端:/etc/salt/minion 1
服务路径
创建base目录 以/src/salt为根 (该路径不存在,需要自行建立)
[root@server1 salt]# mkdir -p /srv/salt 1
数据存放
master端:
master端的密码数据以及minion端信息数据都存放在目录/etc/salt/pki下
minion端:
sls任务执行过程:
是salt-master端在推送sls文件时,是直接将sls任务下发至minion端,也就是说master端通过命令下放的sls任务文件在minion端也一定存在;都存放在 /var/cache/salt目录之下
.sls文件语法
(1).sls文件本质上是python嵌套字典(键值对),由salt-master以广播的形式传递给salt-minion,通过sls文件告知使用哪个模块的哪个函数,参数有哪些,在salt-minion一侧进行函数调用
(2)冒号’:’ 用来分隔键和值, 冒号:与后面的单词如果在一行,一定要有一个空格, 一个单词后面是否有冒号:取决于这个单词是否是key, 后面是否有值或者是嵌套的内容
(3)短横杠 - 表示这项是个列表项, 短横杠与后面的单词有一个空格
(4)缩进: 本层与下一层要有缩进, 缩进不能用tab, 一般是两个空格. 相同的缩进表示相同的层级
saltstack任务简单示例
以apache服务的部署为例[root@server1 salt]# pwd /srv/salt [root@server1 salt]# mkdir apache ##创建任务角色 [root@server1 salt]# cd apache/ [root@server1 apache]# pwd /srv/salt/apache [root@server1 apache]# vim apache.sls ##编写.sls任务 apache-install: ##唯一性声明 pkg.installed: ##调用模块 - pkgs: - httpd-tools - httpd file.managed: ##配置文件修改 - name: /etc/httpd/conf/httpd.conf - source: salt://apache/files/httpd.conf service.running: - name: httpd - reload: true - watch: ##检测这项任务是否发生改变 发生改变reload服务 - file: apache-install [root@server1 apache]# mkdir files root@server1 apache]# ls apache.sls files [root@server1 apache]# cd files/ [root@server1 files]# ls httpd.conf
12345678910111213141516171819202122232425262728或者
[root@server1 apache]# vim apache.sls apache-install: ##唯一性声明 httpd: pkg.installed ##调用模块 saltstack中的sls写法比较灵活,两种方式都是可以的 123456
执行推送:
[root@server1 apache]# salt server3 state.sls apache.apache 1
或者写顶级sls文件进行全局推送
[root@server1 salt]# vi top.sls base: 'server3': - apache.apache [root@server1 apache]# salt '*' state.highstate 123456
网址:自动化运维工具saltstack详解 https://www.yuejiaxmz.com/news/view/187567
相关内容
业界主流的自动化运维工具有哪些自动化运维工具
带你了解Linux自动化运维工具——ansible
现在主流的开源自动化工具有哪些,哪些比较好用
自动化工具篇:Top 10 自动化工具和软件
自动化工具:VLADMANDIC/Automatic
使用WebHooks实现自动化工作流程的技术详解
自动化工具大全
APP自动化测试工具:八款推荐解析
自动化测试工具 学习