博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动化运维工具Saltstack详细介绍
阅读量:5781 次
发布时间:2019-06-18

本文共 4583 字,大约阅读时间需要 15 分钟。

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

  

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

 

    Saltstackmaster端监听45054506端口,4505salt的消息发布4506salt客户端与服务端通信的端口;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.rpmyum -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.listecho "debhttp://debian.saltstack.com/debian wheezy-saltstack main" |tee/etc/apt/sources.listapt-get updateapt-get installsalt-master      # On the salt-masterapt-get installsalt-minion      # On each salt-minionapt-get install salt-syndic

 

2.     saltstacks配置文件修改

master端配置文件修改

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

启动master

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

minion端配置文件修改:

#vi /etc/salt/minionmaster: 115.28.2.1  #这里改成你的master服务器地址id: web01   #建议这里修改成主机名,便于master端分辨 #在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstateschedule:  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 [选项]  '
'   
  [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批量密码认证登陆,参考峰云大神的博文

 

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] '
'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.slsbase:  "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.slsbase:  "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没有的方法时,可以自己增加模块。

参考峰云大神的文章吧。

 

 

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

 

转载地址:http://xkcyx.baihongyu.com/

你可能感兴趣的文章
kafka性能测试
查看>>
现实世界的Windows Azure:h.e.t软件使用Windows Azure削减50%的成本
查看>>
深入.net框架
查看>>
聚合类新闻client产品功能点详情分析
查看>>
湘潭邀请赛——Alice and Bob
查看>>
js设置定时器
查看>>
数据库除运算
查看>>
LeetCode--112--路径总和
查看>>
DeviceIOControl与驱动层 - 缓冲区模式
查看>>
感悟贴2016-05-13
查看>>
vim使用教程
查看>>
JDK在LINUX系统平台下的部署案例与总结
查看>>
跨vlan通信-----单臂路由技术
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
VS2017+EF+Mysql生成实体数据模型(解决闪退的坑)
查看>>
C++多态、继承的简单分析
查看>>
库克称未来苹果用户可自己决定是否降频 网友:你是在搞笑吗?
查看>>
6倍性能差100TB容量,阿里云POLARDB咋实现?
查看>>
linux 安装 MySQLdb for python
查看>>