您的位置:首页 > 运维架构

自动化运维之SaltStack

2018-10-28 23:15 1601 查看

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

SaltStack原理

  1. SaltStack由Master和Minion构成,master是服务端,表示一台服务器;minion是客户服务端,表示多台服务器。在master上发送命令给minion,minion就会执行相应的命令。master与minion之间是通过ZeroMQ(消息队列)进行通信的。

  2. SaltStack的master端监听4505与4506端口,4505为master和minion认证通信端口,4506为master用来发送命令或者接受minion的命令执行返回信息。

  3. 当客户端启动后,会主动连接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服务操作

部署环境介绍

角色主机名IP
master
master.saltstack.com192.168.195.147
minionweb01.saltstack.com192.168.195.167
minionweb02.saltstack.com b60 192.168.195.168

SaltStack安装部署

修改三台服务器主机名

hostnamectl set-hostname master.saltstack.com       //在master修改

hostnamectl set-hostname web01.saltstack.com       

hostnamectl set-hostname web02.saltstack.com

修改三台hosts文件(内容相同)

vim /etc/hosts

192.168.195.147 master.saltstack.com

192.168.195.167 web01.saltstack.com

192.168.195.168 web02.saltstack.com


init 6      //分别重启系统 让各主机名生效

安装saltstack

重启之后将三台服务器的防火墙关闭,selinux功能关闭

systemctl stop firewalld.service

setenforce 0

分别为三台机器添加epel源,本地有官方源

yum install epel-release -y     #安装epel源

master上安装saltsatck服务端

yum install salt-master -y      #安装 master salt 服务

安装好之后修改配置文件

vim /etc/salt/master

第15行

interface: 192.168.195.147    # master 监控地址

第215行

auto_accept: True    #开启  避免要运行salt-key来确认证书认证,自动授权同意

第416行

file_roots:                #开启saltstack文件根目录位置,存放文件

  base:

    - /srv/salt            #默认文件夹不存在,需要创建

第710行529GG

nodegroups:

  group1: 'web01.saltstack.com'        #指定被控制服务器主机名

  group2: 'web02.saltstack.com'

第552行

pillar_opts: True    #开启pillar功能   

第529行

pillar_roots:        #pillar的主目录,存放动态信息

  base:

    - /srv/p 111c illar    #默认文件夹不存在,需要创建


mkdir /srv/salt      #创建

mkdir /srv/pillar

cat /etc/salt/master | grep -v ^$ | grep -v ^#   #查看配置文件修改内容


systemctl start salt-master.service   #开启服务

netstat -antp | egrep '4505|4506'    #查看 4505 4506 端口是否打开

被管理端minion上的部署配置

两台minion上安装saltstack客户端

yum -y install salt-minion          #安装 minion salt 服务

安装好之后修改配置文件

vim /etc/salt/minion

第16行

master: 192.168.195.147    #指向 master IP地址

第78行

和master配置文件中节点服务器名称统一 

id:web01.saltstack.com     #节点一上修改 

id:web02.saltstack.com       #节点二上修改

启动被监控主机服务

systemctl start salt-minion.service     

在监控端master查看管理的主机

salt-key list   #查看被控主机

在主控端测试与被控端的通信状态!

salt '*' test.ping      测试与被管理端是否网络连通

salt '*' cmd.run 'df -h'   //远程执行命令

查看被控主机上grains所有值:(每次minion在启动是都会获取客户端信息)

salt 'web01.saltstack.com' grains.items (静态数据)

salt 'web01.saltstack.com' pillar.items  (动态数据)

配置管理安装Apache

下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:

修改配置文件

vi /etc/salt/master     // 打开如下内容的注释

file_roots:

  base:

    - /srv/salt/

注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)

vi /srv/salt/top.sls

base:

  '*':

    - apache

注意:'*',则表示在所有的客户端执行 apache 模块。

vi /srv/salt/apache.sls

apache-service:

  pkg.installed:

    - names:                // 如果只有一个服务,那么就可以写成 –name: httpd 不用再换一行

      - httpd

      - httpd-devel

  service.running:

    - name: httpd

    - enable: True

注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。

重启服务

systemctl restart salt-master

执行命令

salt '*' state.highstate 

在minion上查看apache服务是否安装成功



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息