`

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

阅读更多

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

  

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

 

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

 

1.     saltstack安装

centos/redhatserver端安装

1
2
3
4
#导入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安装

1
2
3
#导入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端安装

1
2
3
4
5
6
7
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端配置文件修改

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

启动master

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

minion端配置文件修改:

1
2
3
4
5
6
7
8
9
#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

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

3.     salt-key证书管理

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

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

4.     salt实时批量操作

语法:

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

常用命令举例:

1
2
3
4
5
6
7
8
9
10
11
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中加入如下内容:

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

分组执行:

1
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,则该处不准。

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

8.     salt-cp批量拷贝文件

master端执行:

1
2
3
4
5
语法:
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分钟同步,效果一样。

1
2
3
4
          schedule:
          highstate:
                 function:state.highstate
                 seconds:300

 

10.             saltstack自动分发目录

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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上,并设置为对应的文件权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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的配置文件进行更改时,自动重新加载配置文件。(该图取于网上,说明见图上)

wKioL1QemaGxy1UEAAQB3FWJkRY467.jpg

 

13.             saltstack自定义模块

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

参考峰云大神的文章吧。

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

 

 

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

 

分享到:
评论

相关推荐

    自动化运维工具SaltStack的研究与自动化运维平台建设方法分析.pdf

    自动化运维工具 SaltStack 的研究与自动化运维平台建设方法分析 SaltStack 是一种自动化运维工具,主要用于服务器的自动化运维管理。通过对 SaltStack 的研究和二次开发,可以实现服务器之间的配置管理、批量部署...

    自动化运维工具SaltStack的研究与自动化运维平台建设方法分析.docx

    【自动化运维工具SaltStack的研究与自动化运维平台建设方法分析】 自动化运维工具SaltStack是现代IT环境中用于高效管理大规模服务器集群的重要工具。随着云计算和虚拟化技术的发展,传统的手动运维方式已经无法满足...

    自动化运维工具SaltStack在云计算环境中的实践.docx

    【自动化运维工具SaltStack在云计算环境中的实践】 随着云计算技术的快速发展,企业的IT环境变得日益复杂,传统的运维方式已无法适应大规模、高效率的需求。此时,自动化运维工具的重要性凸显出来,其中SaltStack...

    linux运维笔记:Saltstack自动化运维与实战.docx

    Linux 运维笔记:Saltstack 自动化运维与实战 Saltstack 是一个服务器基础架构集中化管理平台,它...Saltstack 是一个功能强大且扩展性强的自动化运维工具,它可以帮助运维人员提高工作效率、规范业务配置与操作。

    python自动化运维系统(saltstack+django+bootstrap)

    总的来说,Python 自动化运维系统(saltstack+django+bootstrap)的组合提供了从后台管理到前端展示的全面解决方案,是现代 IT 基础设施自动化管理的一个有力工具。通过深入理解和实践,你可以构建出更加高效、便捷...

    自动化运维管理工具.7z

    总的来说,CheungSSH是一个强大且实用的自动化运维工具,通过它,IT专业人员可以更加高效地管理多台服务器,降低运维复杂度,提升运维质量。无论是小型企业还是大型数据中心,都可以从CheungSSH中受益。对于想要提升...

    saltstack自动化运维使用详解

    SaltStack 自动化运维使用详解 SaltStack 是基于 Python 开发的 C/S 架构的一款批量管理工具,具有轻松部署、快速管理、安全可靠等特点。下面是 SaltStack 的详细知识点: 架构模式 SaltStack 采用 C/S 架构模式...

    自动化运维工具在云计算环境中的实践.docx

    自动化运维工具 SaltStack 在云计算环境中的实践随着云计算技术的快速普及与发展,越来越多的企业开始学习和搭建自己的云平台代替传统的 IT 交付模式,企业的 IT 环境也随之越来越复杂,常规的运维方法与技术已经...

    Python自动化运维::技术与最佳实践

    自动化运维是指通过使用自动化工具和技术来简化和加速日常运维任务的过程。它可以帮助企业更高效地管理服务器、应用程序和服务,同时降低出错率和运维成本。 ##### 2.2 Python在自动化运维中的优势 - **简洁性**:...

    企业基于开源自动化运维工具的运维实践.docx

    在具体实践中,以SaltStack为例,介绍自动化运维工具的部署及过程中的注意事项、故障诊断等内容。 - **部署准备**: - 安装Salt Master服务器作为控制中心。 - 在各目标服务器上安装Salt Minion,作为被管理端。 ...

    赵班长-基于SaltStack的自动化运维实践

    【基于SaltStack的自动化运维实践】是一篇关于赵班长在运维领域的专业知识分享,重点围绕SaltStack这一自动化运维工具展开。赵班长,本名赵舜东,是中国SaltStack用户组的发起人,拥有丰富的运维背景,从指挥自动化...

    使用脚本实现系统自动化运维.pdf

    自动化运维是指通过软件工具和技术来自动执行日常运维任务,例如监控、配置管理、故障恢复和性能优化等。这样,运维人员可以将更多的精力放在问题分析、策略规划和系统优化上,而不是简单地处理日常维护工作。 脚本...

    ansible puppet saltstack三款自动化运维工具的对比

    ### Ansible、Puppet、SaltStack三款自动化运维工具的对比 #### 一、基础介绍 在DevOps领域,自动化运维工具是实现高效部署、管理大规模服务器集群的关键。Ansible、Puppet 和 SaltStack 是目前业界较为知名的三款...

    自动化运维路线图

    自动化运维路线图也提到了Puppet和SaltStack这两种自动化工具,它们可以用于二次开发,以实现业务代码的后台界面化上线发布。审计需求涉及了服务器错误和异常日志的采集,以及系统运行的分析,这些都是为了提高安全...

    SaltStack自动化运维工作原理及安装配置手册.docx

    SaltStack 自动化运维工作原理及安装配置手册是介绍 SaltStack 自动化运维工具的工作原理和架构,并通过实例详述了如何使用 SaltStack 对云环境中的服务器进行命令的远程执行及配置管理,确保操作的安全性及高效性。...

    基于python的自动化运维系统设计与实现.doc

    本文设计并实现了一个自动化运维系统,该系统使用 VIM 开发工具、Python 开发语言、MySQL 数据库和 SaltStack 集中化运维管理工具,基于 web.py 架构完成。系统设计实现的功能包括账户管理、主机管理、已加入 ...

Global site tag (gtag.js) - Google Analytics