自动化运维之SaltStack(概述及简单配置实例)

在生产环境中,服务器往往不止一台,有可能是成千上万台。对于运维人员来说,如果单独对每台服务器进行管理,工作难度实在是太大了。SaltStack是一个服务器基础设施管理工具,它具有配置管理、远程执行、监控等功能。SaltStack由Python语言编写,是非常简单易用和轻量级的管理工具。

通过部署SaltStack环境,可以在成千上万台服务器上批量执行命令。对于不同的业务进行集中管理、分发文件、采集数据、软件包管理等,有利于运维人员提高工作效率,规范业务配置和操作。

SaltStack原理

SaltStack由Master和Minion构成,Master是服务端,表示一台服务器;Minion是客户服务端,表示多台服务器。在Master上发送命令给符合条件的Minion,Minion就会执行相应的命令,Master和Minion之间是通过ZeroMQ(消息队列)进行通信的。
SaltStack的Master端监听4505与4506端口,4505为MAster和Minion认证通信端口,4506为Master用来发送命令或者接收Minion的命令执行返回信息。
当客户端启动后,会主动连接Master端注册,然后一直保持该TCP连接,而Master通过这条TCP连接对客户端进行控制。如果连接断开,Master对客户端将不能进行控制。但是,当客户端检查到连接断开后,会定期向Master端请求注册连接。

SaltStack常用模块

SaltStack提供了非常多的功能模块,以便于对操作系统的基础功能和常用工具的操作。

  • (1)pkg模块
    pkg模块的作用是包管理,包括增删更新。
  • (2)file模块
    file模块的作用是管理文件操作,包括同步文件、设置文件权限和所属用户组、删除文件等操作。
  • (3)cmd模块
    cmd模块的作用是在Minion上执行命令或者脚本。
  • (4)user模块
    user模块的作用是管理系统账户操作。
  • (5)service模块
    service模块的作用是管理系统服务操作。
  • (6)cron模块
    cron模块的作用是管理cron服务操作。

案例:SaltStack批量部署并配置Apache

需求分析

1.案例目的

在生产环境中,经常需要根据不同的业务需求来分组部署和配置Nginx服务器。本案例使用了三台服务器,均采用CentOS7.4系统版本,要求能连接互联网,SELinux和防火墙均已关闭。
需要注意的是,三台服务器一定要设置完整的FQDN,和域名一样的形式,不然在主控端执行远程执行命令或者配置的时候,等待的时间会非常长,甚至还会出现其他不可控的问题。

2.部署环境

角色 主机名 IP地址 组名
master master.saltstack.com 192.168.88.13 ——
minion web01.saltstack.com 192.168.88.14 group1
minion web02.saltstack.com 192.168.88.15 group2

操作步骤

1.SaltStack安装

1.1首先安装epel源,因为后面需要安装SaltStack服务端和客户端,也包括后面的Apache

yum install epel-release -y     //三台都执行此操作

1.2主控端(master)安装salt-master,被控端(minion)安装salt-minion

[[email protected] ~]# yum install salt-master -y
[[email protected] ~]# yum install salt-minion -y
[[email protected] ~]# yum install salt-minion -y

1.3配置主控端配置文件/etc/salt/master,注意默认master文件全部是注释的。主控端修改内容如下:

[[email protected] ~]# cat /etc/salt/master | grep -v ^$ | grep -v ^#
interface: 192.168.88.13        //修改15行监听地址

auto_accept: True               //修改215行的主控端会自动认证被控端的认证

file_roots:                     //修改416行saltstack文件根目录位置,需要修改后创建
  base:
    - /srv/salt

pillar_roots:                   //修改529行的主目录,需要修改后创建
  base:
    - /srv/pillar

pillar_opts: True               //修改552行的pillar开启功能

nodegroups:                     //修改710行的组分类
  group1: ‘web01.saltstack.com‘
  group2: ‘web02.saltstack.com‘

1.4创建salt文件根目录及pillar目录

[[email protected] ~]# mkdir /srv/salt
[[email protected] ~]# mkdir /srv/pillar

1.5启动salt-master服务并检查端口

[[email protected] ~]# systemctl start salt-master.service
[[email protected] ~]# netstat -natp | egrep ‘4505|4506‘
tcp        0      0 192.168.88.13:4505      0.0.0.0:*               LISTEN      3316/python
tcp        0      0 192.168.88.13:4506      0.0.0.0:*               LISTEN      3338/python

1.6配置两台被监控端配置文件/etc/salt/minion(注意默认的minion文件全部也是注释的)

master:192.168.88.13            //16行,指定主控端IP
id:web01.saltstack.com          //72行,指定被控主机名,另一台是web02.saltstack.com

1.7分别启动两台被控端服务,并在主控端上简单测试一下主控端和被控端的通信状态,如果返回都是True,则说明正常。

[[email protected] salt]# systemctl start salt-minion.service
[[email protected] ~]# systemctl start salt-minion.service
[[email protected] ~]# salt ‘*‘ test.ping
web02.saltstack.com:
    True
web01.saltstack.com:
    True

2.SaltStack批量部署Apache

2.1 在主控端上创建入口文件top.sls

[[email protected] salt]# vim top.sls
base:
 ‘*‘:
   - apache

2.2定义被控机执行状态,安装apache软件,配置文件并启动

[[email protected] salt]# vim apache.sls
apache-service:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
  service.running:
      - name: httpd
      - enable: True

2.3重启服务后,在主控端执行刷新state命令,让两台被控端去执行安装apache并配置

[[email protected] salt]# systemctl restart salt-master.service
[[email protected] salt]# salt ‘*‘ state.highstate
web02.saltstack.com:
----------
          ID: apache-service
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: The following packages were installed/updated: httpd
     Started: 15:19:03.880968
    Duration: 47422.538 ms
     Changes:
              ----------
              apr:
                  ----------
                  new:
                      1.4.8-3.el7_4.1
                  old:
              apr-util:
                  ----------
                  new:
                      1.5.2-6.el7
                  old:
              httpd:
                  ----------
                  new:
                      2.4.6-80.el7.centos.1
                  old:
              httpd-tools:
                  ----------
                  new:
                      2.4.6-80.el7.centos.1
                  old:
...省略部分内容

2.4去被控端查看apache是否成功安装,并查看端口

[[email protected] salt]# rpm -q httpd
httpd-2.4.6-80.el7.centos.1.x86_64
[[email protected] salt]# netstat -natp | grep 80
tcp        0      0 192.168.88.14:42808     192.168.88.13:4505      ESTABLISHED 3487/python
tcp6       0      0 :::80                   :::*                    LISTEN      4186/httpd
[[email protected] ~]# rpm -q httpd
httpd-2.4.6-80.el7.centos.1.x86_64
[[email protected] ~]# netstat -natp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      4316/httpd

这样就完成了通过SaltStack批量部署配置Apache!

原文地址:http://blog.51cto.com/13625810/2155066

时间: 2024-10-15 07:10:25

自动化运维之SaltStack(概述及简单配置实例)的相关文章

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

自动化运维之Ansible概述及Ansible部署|(持续更新中)

Ansible概述 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护使得工作效率低下.这时,部署自动化运维就可以尽可能安全,高效地完成这些工作. 一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的Agent程序来完成管理功能,如:Puppet.Func.Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如:Ansible.Fabric等. 1.Puppet Puppet基于

自动化运维工具Saltstack学习记录一

一.初步摸索 对于Saltstack的初步了解知道相比puppet配置简单些,实现自动化运维,减少大批量操作的失误. 二.安装及测试 1.初期做实验,准备一台master作为服务器端,一台作为客户端 设置好机器的ip地址 [email protected] ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost l

自动化运维工具之ansible的简单应用

ansible: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,例如shell,copy,ping等,ansible只是提供一种框架.ansible的主要特性: 模块化:调用特定的模块,完成特定任务 基于Python语言实现,由Pa

自动化运维之SaltStack实践视频教程

点我开始学习: http://edu.51cto.com/course/course_id-2354.html 1      培训目标 本课程的目标是让所有参加培训的学员都可以使用SaltStack进行服务器管理,熟练使用远程执行的功能批量操作服务器,使用配置管理进行自动化安装.部署和管理.同时可以根据企业的生产需求进行自定义的开发.最后带领学员完成生产项目-使用<SaltStack进行OpenStack自动化部署>. 2      预备知识 l  熟悉Linux基本命令及系统管理. l  熟

自动化运维之saltstack(2)

这次主要介绍saltstack的配置管理,这一部分在企业应用中比较重要,也经常用到.states是saltstack系统中的配置语言,在日常运维中需要编写大量的states文件,例如:创建用户.安装软件.配置软件.服务运行等.需要编写一些"states sls"文件.该文件主要使用YAML语言,也可以支持使用python语言编写. 配置管理中常用模块 pkg模块 列出所有状态模块salt '' sys.list_modules查看状态模块中的函数:如pkg模块[[email prote

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

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

自动化运维工具SaltStack安装配置

SaltStack是一种全新的基础设置管理方式,部署轻松,在几分钟内可运作起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯.通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理.分发文件.采集服务器数据.操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率.规范业务配置与操作的利器. 特性:(1).部署简单.方便:(2).支持大部分UNIX/Linux及Windows环境:(3).主从集中化管理:(4

自动化运维工具---SaltStack安装部署及简单案例

SaltStack原理 SaltStack由Master(服务端)和Minion(客户端)组成,Master和Minion之间通过ZeroMQ(消息队列)进行通讯,Master和Minion分别监听4505与4506端口,4505为master与minion认证通信端口,4506为master用来发送或者接受minion的命令执行返回信息. 当客户端启动后,会主动链接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制,如果连接断开,master将对客户