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.highstateminutes: 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实时批量操作

语法:

1

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连接断开的情况,导致有些服务器会执行命令失败,这个请大家要注意。

转载于:https://blog.51cto.com/bobbie/1674070

自动化运维工具Saltstack详细介绍相关推荐

  1. 自动化运维工具SaltStack详细部署

    2019独角兽企业重金招聘Python工程师标准>>> 自动化运维工具SaltStack详细部署 2014-12-28 17:30:34 标签:saltstack 原创作品,允许转载 ...

  2. ansible自动化运维工具的详细介绍、使用、工作原理、安装方式、与被管理节点建立信任关系等等

    ansible简介 Ansible 是一个IT自动化工具,它能够配置系统.部署软件.编排更复杂的it任务,如连续部署或零停机时间滚动更新 Ansible用python编写,尽管市面上已经又很多可供选择 ...

  3. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

  4. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...

  5. 自动化运维工具Saltstack(一)

    1.saltstack简介: 什么是saltstack? saltstack是基于python开发的一套C/S架构配置管理工具 使用SSL证书签方的方式进行认证管理 号称世界上最快的消息队列ZeroM ...

  6. 自动化运维工具——SaltStack(上)

    SaltStack 一.SaltStack简介 二.SaltStack部署 三.远程执行模块 四.apache自动安装配置 五.nginx 自动化安装 六.grains模块使用 1.grains默认模 ...

  7. 企业级 ##自动化运维工具Saltstack扩展(salt-api)##

    1.[server3]建立服务: [root@server3 ~]# yum install -y salt-api [root@server3 ~]# /etc/init.d/salt-minion ...

  8. 自动化运维工具ansible(安装与模块介绍)

    自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...

  9. 自动化运维工具ansible的安装管理以及模块介绍

    自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...

最新文章

  1. php 图片预览原理,JavaScript_纯JS实现的批量图片预览加载功能,1.实现原理直接见代码,需要一 - phpStudy...
  2. Java中的ReentrantLock和synchronized两种锁定机制的对比
  3. javascript window 属性和方法。
  4. Linux中/proc目录下文件详解(二)
  5. Kubernetes 入门(4)集群配置
  6. new/delete与malloc/free
  7. Cookie篡改攻击
  8. python数据结构二叉树的前序,中序,后续遍历与推导
  9. SOA技术相关介绍(RPC, Web Service, REST,SOAP,JMI)
  10. 快速学习、快速决策、快速改变;突破自我
  11. Confluence 6 LDAP 用户结构设置
  12. FLV、AAC、AVC封装格式分析
  13. 虚拟服务器建网站苹果cms,零基础搭建苹果cmsv10影视站教程
  14. 给定经纬度计算距离_根据两点经纬度计算距离!
  15. 哔哩哔哩HLB站缓存合并电脑版链接:https://wwa.lanzoui.com/b016vmouf版本:1.1公告:1、支持旧版(blv)合并2、新增提取音频功能3、修复合并失败的bug
  16. Adobe Photoshop Lightroom 5.7.1
  17. shell了解MySQL_MySQLShell:01从入门到蒙圈
  18. css表格随内容变化,css 使表格随着内容自动适应宽度
  19. yaml 编码格式简述
  20. Windows10系统自带输入法如何切换全角/半角字符

热门文章

  1. fcm模糊聚类matlab实例_一文学会使用MATLAB将仿真、试验数据可视化附带源程序
  2. win10添加美式键盘_win10玩dnf卡顿,怎么解决?
  3. git查看相对于最新的push改动内容
  4. sns.distplot图例标注怎么添加_百度地图API图标、文本、图例与连线
  5. qt 中 设置 背景的方法
  6. Linux服务器集群系统(一)—— LVS(Linux Virtual Server)简介
  7. 2021下半年软考分数线会有变动吗?
  8. 工作随笔0828:领导离职前对我的忠告
  9. 笔记-项目管理基础知识-复习要点
  10. CentOS中使用Dockerfile部署带websocket的SpringBoot的jar包