首页 > 其他分享 >自动化运维工具Saltstack详细介绍

自动化运维工具Saltstack详细介绍

时间:2023-07-13 16:31:28浏览次数:33  
标签:运维 minion saltstack etc zabbix master 自动化 Saltstack salt

         Saltstack是一个新的基础设施管理工具。目前处于快速发展阶段,可以看做是pssh+弱化的Puppet的组合。间接的反映出了saltstack的两大功能:远程执行和配置管理。


 


  Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。



   Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。



1.     saltstack安装

centos/redhatserver端安装



#导入EPEL YUM源 
rpm -Uvh http: //mirror .pnl.gov /epel/5/i386/epel-release-5-4 .noarch.rpm
#服务器master的安装 
  yum -y  install  salt-master

centos/redhat客户端minion安装



#导入EPEL YUM源 
rpm -Uvh http: //mirror .pnl.gov /epel/5/i386/epel-release-5-4 .noarch.rpm
yum -y  install  salt-minion

ubuntu/debian server端和client端安装



wget -q -O -  "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -
echo  "deb http://debian.saltstack.com/debianwheezy-saltstack main"  /etc/apt/sources .list
echo  "debhttp://debian.saltstack.com/debian wheezy-saltstack main"  | tee /etc/apt/sources .list
apt-get update
apt-get installsalt-master       # On the salt-master
apt-get installsalt-minion       # On each salt-minion
apt-get  install  salt-syndic


2.     saltstacks配置文件修改

master端配置文件修改

vi  /etc/salt/master
interface: 115.28.2.1   #此处是server端监听的地址。
auto_accept: True     #此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能。

启动master



/etc/salt/master  -d   #后台启动
/etc/salt/master   #前台启动,方便调试

minion端配置文件修改:


#vi /etc/salt/minion
master: 115.28.2.1   #这里改成你的master服务器地址
id : web01    #建议这里修改成主机名,便于master端分辨
  
#在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstate
schedule:
   highstate:
     function : state.highstate
     minutes: 5

启动minion:


/etc/salt/minion  -d  #后台启动
/etc/salt/minion   #前台启动,方便调试
注:minion启动后,自动会生成公钥私钥,并把公钥发送到master端。minion不监听端口,全靠和master保持长连接,可通过 netstat  -an| grep  ES来查看是否有连接。

3.     salt-key证书管理

master端证书存放路径:/etc/salt/pki/master/minions


salt-key  -L             #查询所有接收到的证书
salt-key  -a <证书名>    #接收单个证书
salt-key  -A             #接受所有证书
salt-key  -d <证书名>    #删除单个证书
salt-key  -D             #删除所有证书

4.     salt实时批量操作

语法:


salt [选项]   '<target>'    < function >  [arguments]

常用命令举例:



salt  '*'   test . ping   
#*为匹配所有主机,test.ping为salt一个函数,注:*号是正则,若分了多个组,可以类似于web*,只匹配web服务器
salt  '*'   cmd.run  'df -h'  
#查看所有主机的磁盘信息,cmd.run执行单个命令
salt  '*'   cmd.script salt: //hello .sh 
salt  '*'   cmd.script  salt: //scripts/runme .sh  'arg1 arg2 "arg 3"'
#cmd.script执行一个脚本,即把本地脚本拷贝到远程主机上执行,hello.sh要放在指定的文件存放路径,默认是/srv/salt/
salt  '*'   state.highstate
        #向客户端推送master端配置。
salt  '*'  cmd.run  'df -h '   -t 5   
     #超时控制


5.     salt分组管理

在配置文件/etc/salt/master中加入如下内容:


[root@yang salt] # vimaster.d/group.conf
  
nodegroups:
   group1:  'L@DG-Server-27,DG-Server-28'
   group2:  'L@qsmind'
#分组格式可在/etc/salt/master中搜索group看示例

分组执行:



salt -N group1 cmd.run 'hostname'


6.     salt-ssh远程主机批量自动登陆

salt-ssh批量密码认证登陆,参考峰云大神的博文


http://rfyiamcool.blog.51cto.com/1030776/1305710



7.     salt-run检查客户端up状态

注:该处状态检查salt使用的是test.ping,如果服务器禁ping,则该处不准。



salt-run manage.status  #查看所有客户端up/down状态
salt-run manage.up     #只显示up状态的客户端
salt-run manage.down   #只显示down状态的客户端

8.     salt-cp批量拷贝文件

在master端执行:



语法:

salt- cp  [options]  '<target>' SOURCE DEST

   

示例:

 salt- cp  '*'   /etc/hosts    /etc/hosts  #把master上的hosts文件分发到所有主机。

9.     saltstack定时同步

可以把salt-call state.highstate命令放在minion端的定时任务中,来进行自动请求同步。


也可以把salt '*' state.highstate放在master端的定时任务中,来进行自动推送到所有机器。


也可以在/etc/salt/minion配置文件中加入如下内容,如下是每隔5分钟同步,效果一样。



 

schedule:
           highstate:
                  function :state.highstate
                  seconds:300


10.             saltstack自动分发目录

指定同步的目录后,以后文件只需放到该目录下就会自动同步到minion端。



[root@yang salt] # cat /srv/salt/top.sls
base:
   "DG-Server*" :
     - ssh_key.key
- zabbix.zabbix
#在top.sls文件中指定哪些主机访问哪些目录
  
[root@yang salt] # cat /srv/salt/zabbix/zabbix.sls
/usr/local/zabbix/scripts :      #指定minion端同步后生成的目录
   file .recurse:
-  source : salt: //zabbix/zabbix_scripts     #指定要master端同步的原始目录,以后只要把想要分发的文件放在这个目录中,就会自动同步了。
- dir_mode: 755
- file_mode: 744

#用dir_mode和file_mode来设置文件和目录的权限


11.             saltstack自动分发文件

如下配置,当文件出现变更时,匹配DG-Server开头的主机,同步文件到这些minion上,并设置为对应的文件权限。


[root@yang salt] # cat /srv/salt/top.sls
base:
   "DG-Server*" :
     - ssh_key.key
- zabbix.zabbix
  
[root@yang zabbix] # cat /srv/salt/zabbix/zabbix.sls
/usr/local/zabbix/etc/zabbix_agentd .conf.d /UserParameter .conf:    #指定在minion端生成的文件名
file .managed:
   -  source : salt: //zabbix/UserParameter .conf     #指定在master同步的原始文件
   - backup: minion            #当文件发生变化时,都会把原文件备份,备份文件目录:/var/cache/salt/minion/file_backup/
   - mode: 744
   - user: root
   - group: root


12.             saltstack进程状态管理

例:如httpd的配置文件进行更改时,自动重新加载配置文件。(该图取于网上,说明见图上)





13.             saltstack自定义模块

当有需要使用一些statstack没有的方法时,可以自己增加模块。


参考峰云大神的文章吧。


http://rfyiamcool.blog.51cto.com/1030776/1262537




saltstack常用功能也就批量执行命令或脚本,批量分发文件,自动同步目录与文件,整体来说很简单实用。但salt有一个缺点,zeromq虽性能很高,但稳定性略差,经常出现minion与master连接断开的情况,导致有些服务器会执行命令失败,这个请大家要注意。


标签:运维,minion,saltstack,etc,zabbix,master,自动化,Saltstack,salt
From: https://blog.51cto.com/u_6186189/6713406

相关文章

  • 我对运维初学者的几点小建议
    在此分享一下运维的职业规划和Linux学习的路线。希望给正在做运维工作或者准备入行运维这行的同学一些启发和帮助。 首先在学习Linux之前,我个人其实非常建议先把计算机基础知识学习好的。这些基础十分重要,别看都是一些理论知识。但是正是这些理论知识可以为你后面的学习和工作......
  • 我对运维初学者的几点小建议
    我对运维初学者的几点小建议在此分享一下运维的职业规划和Linux学习的路线。希望给正在做运维工作或者准备入行运维这行的同学一些启发和帮助。首先在学习Linux之前,我个人其实非常建议先把计算机基础知识学习好的。这些基础十分重要,别看都是一些理论知识。但是正是这些理论知识可......
  • 全栈测试开发----unittest的设计及实现----自动化测试分层思想(1)
    通过unittest框架完成自动化分层操作,实现数据分离,减少代码于数据之间的依赖性,完成报告的生成并自动发送一系列操作。 前言:有人认为,在进行自动化测试过程中,测试代码只需要包含测试逻辑即可。其实不然,他需要包括很多类的代码,如URL拼接、访问UI控件、HTML/XML的解析等,如......
  • 智慧电力运维物联网平台
    我们构建软硬件结合的生态系统,打造电力设备物联平台,实现软件、硬件、平台、云数据一体化。在硬件领域通过自主研发推出了一系列电力领域的硬件设备,包括:智能电力测控终端、智能电力采集终端等产品。在软件领域,我们搭建电力设备物联平台。传统电力行业设备接入我们的电力设备物联......
  • 推荐Selenium 自动化测试实战
    你将获得深入Selenium源码、原理、封装、技巧;unittest、pytest、DDT、POM迭代测试方法;大型项目分布式测试解决方案;Jenkins持续集成和交付。演示地址:www.runruncode.com/portal/article/index/id/19451/cid/85.html 课程介绍Selenium凭着免费、开源、无操作系统/浏览器......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-6-元素定位大法-下篇
    1.简介上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的定位方法的理论基础知识以及在什么情况下推荐使用。今天这一篇讲解和分享一下,在日常中很少用到或者很少见的定位,但是遇到了我们也要会,俗话说:手里有粮心里不慌。2.阴影定位-ShadowDOM在做web......
  • WEB自动化-键盘操作
    实际工作中,按照用户操作习惯,进行的是模拟键盘和鼠标操作WEB。首先,导入键盘操作需要的服务#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2023/6/2617:32#@File:P01-test-selenium.py#@Software:PyCharmfromselenium.webdriverimportKeysdefP......
  • 开源一套接口自动化测试平台,大家一起学习交流
    一、概述Rocket是一款接口自动化测试平台,服务端是Python,前端Vue,源码下载方式放到末尾了。关键依赖:fastapihttprunner(v3.1.11版本)apschedulerelement-ui二、功能模块核心功能模块基本开发完成,可以直接拿来用,一些细节功能待开发,具体如下:系统管理用户管理字典管理......
  • 从钢铁行业数字化管控与超自动化融合,看华为WeAutomate能力进化
    文/王吉伟 钢铁行业的数字化转型,历来都是值得探讨的热点话题。2022年,我国粗钢产量10.13亿吨,占据了全球钢铁供给市场的半壁江山。这组数据可谓非常抢眼,但仍旧难掩诸多企业的各种经营问题。钢铁生产过程工序众多,大型设备集中,工艺流程极其复杂,更是典型的资源密集的高耗能产......
  • rust 自动化测试、迭代器与闭包、智能指针、无畏并发
    编写测试可以让我们的代码在后续迭代过程中不出现功能性缺陷问题;理解迭代器、闭包的函数式编程特性;Box<T>智能指针在堆上存储数据,Rc<T>智能指针开启多所有权模式等;理解并发,如何安全的使用线程,共享数据。自动化测试编写测试以方便我们在后续的迭代过程中,不会改坏代码。保证了程序......