centos7.4下saltstack安装配置详解及批量安装Apache!!!

centos7.4下saltstack安装配置详解及批量安装Apache!!!

什么是Saltstack

saltstack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。对于不同的业务进行集中管理,分发文件,采集数据,软件包管理等; saltstack是使用python语言开发的,同时也支持restAPI方便二次开发以及和它平台集成,同时官方也发布了一个Web管理界面halite。

优点:

速度快,基于消息队列+线程,跑完多台设备,都是毫秒级别的非常灵活,源码是python,方便理解和自定义模块(python 语言相对于其他的perl、ruby等还是很好理解的)命令简单,功能强大

saltstack运行方式

LocalMaster/MinionmasterSalt SSH

本文使用Master/Minion运行方式。master上发送命令给符合条件的minionminion就会执行相应命令,masterminion之间是通过zeroMQ消息队列进行通信的。Saltstackmaster端监听45054506端口,4505masterminion认证通信端口,4506master用来发送命令或者接收minion的命令执行返回信息。当客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制。如果连接断开,master对客户端将不能进行控制。但是当客户端检查到连接断开后,会定期向master端请求注册连接。

saltstack三大功能

远程执行配置管理云管理

saltstack数据系统

Grains (静态数据)pillar (动态数据)

saltstack配置管理

SLS(YAML、Jinja)HighstateStates Module

centos7.4下saltstack安装配置详解及批量安装Apache!!!

实验环境:

centos7.4下saltstack安装配置详解及批量安装Apache!!!

-----以下步骤三台主机均需要做----三台主机都必须有公网环境----------

systemctl stop firewalld

setenforce 0

vi /etc/host

192.168.80.183 master.saltstack.com

192.168.80.184 web01.saltstack.com

192.168.80.185 web02.saltstack.com

vi  /etc/hostname

...      //每台主机的主机名与上面表格中一一对应

yum install -y epel-release     //分别为三台机器添加epel源,本地有官方源

--------以下在master服务器安装--------

yum -y install salt-master

vi /etc/salt/master              //安装完成修改主配置文件

interface: 192.168.80.184      //15行,监听地址

auto_accept: True             //215行,避免要运行salt-key来确认证书认证

file_roots:                    //416行

   base:

      - /srv/salt           //saltstack文件根目录位置,目录需要创建

nodegroups:                //710行组分类

  group1: 'web01.saltstack.com'

  group2: 'web02.saltstack.com'  

pillar_opts: True          //552行,开启pillar功能

pillar_roots:              //529行

       base:

       - /srv/pillar       //pillar的主目录,需要创建

:wq

cat /etc/salt/master | grep -v ^$ | grep -v ^#      //查看对主配置文件做的更改

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

systemctl start salt-master       //启动服务器

systemctl enable salt-master    //设置开机自运行

netstat -anpt | egrep '4505|4506'

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

创建salt与pillar文件根目录:

mkdir /srv/salt

mkdir /srv/pillar

----------以下在两台minion上操作----------

在两台上分别配置:

yum -y install salt-minion

vi /etc/salt/minion

修改配置如下:

16行 master: 192.168.80.184     //指定主控端IP

78行 id: web01.saltstack.com     //指定被控端主机名

:wq

systemctl start salt-minion        //启动被控端服务

----------以上两台主机上都需做----------

---------以下是几条测试命令-----在master端操作---------

salt '*' test.ping                 //主控端测试与被控端的通信状态!

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

salt '*' cmd.run 'ls /root/'  //远程执行命令,命令内容查看各个minion的root目录内容

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

salt-key   //查看 master 上已经被接受过的客户端

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

Saltstack几个重要的组件:

grainsgrains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip等静态信息。grains的信息是静态的,并不会时时变更,它只是在 minion 启动时收集到的

pillarpillar 和 grains 不一样,是在 master 上定义的,并且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)可以存在 pillar 里,还可以定义变量等。

State:它saltstack的最核心功能,通过预先指定好的sls文件对被控主机进行管理:包/文件/网络配置/系统服务/系统用户等。

--------关于grains的使用----------

salt 'web01.saltstack.com' grains.items  //查看被控主机上grains所有值

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

自定义 grains的方法有两种(客户端自定义配置和服务端写脚本定义):
1.客户端配置(缺点:每台都得去配置,机器多了配置起来不方便)

2.服务端写Python脚本

--------这里在master端写一个Python脚本来输出一行语句并查看被控端磁盘空间(free -m)的内容--------

mkdir /srv/salt/_grains     

cd /srv/salt/_grains/

vi mytest.py

插入测试脚本:

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

import os

def my_test():

    grains = {}

    grains['say'] = 'hello world'

    return grains

def my_test1():

    grains = {}

    with os.popen('free -m') as f:    //os.popen读出执行的内容

        grains['mem_usage'] = f.read()

    return grains

salt '*' saltutil.sync_all     //同步文件*表示同步文件到所有的被控端

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

在被控端查看同步效果:

[[email protected] ~]# ll /var/cache/salt/minion/extmods/grains/

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

检测效果:

salt '*' grains.item say

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

salt '*' grains.item mem_usage

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

如果修改了Python脚本内容,用以下命令刷新查看:

salt '*' saltutil.sync_grains    //刷新grains

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

-----关于pillar管理------

------本例使用分组规则定义pillar,即不同分组引用各自的sls属性:定义被控端安装nginx的root目录------

1)定义入口文件top.sls,入口文件的作用是定义pillar的数据覆盖被控主机的有效范围:

[[email protected] ~]# vi /srv/pillar/top.sls    

base:

  group1:         //组名,/etc/salt/master中定义过的组名

    - match:nodegroup  //注意-后面有空格,否则无结果

    - web01server   //指定包括web01server.sls

  group2:

    - match:nodegroup

- web02server

2)定义私有配置,格式为python的字典形式,即"key:value"。

[[email protected] ~]# vi /srv/pillar/web01server.sls

nginx:

   root: /data   //注意:/之间有空格

[[email protected] ~]# vi /srv/pillar/web02server.sls

nginx:

   root: /www

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

[[email protected] ~]# salt '*' saltutil.refresh_pillar  //刷新pillar

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

配置管理安装Apache

下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:
1)修改配置文件

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

file_roots:

  base:

    - /srv/salt/

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

2)创建模块配置

mkdir /srv/salt

vi /srv/salt/top.sls

base:

  'web01.saltstack.com':

    - apache

注意:若换成 '*',则表示在所有的被控端执行 apache 模块。

3)配置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 表示开机启动。

4)重启服务并安装Apache

systemctl restart salt-master       //重启服务

salt 'web01.saltstack.com' state.highstate       //执行命令    

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

查看被控端已经运行了httpd服务

网址测试:访问185被控端

 centos7.4下saltstack安装配置详解及批量安装Apache!!!

测试成功!

关于更多saltstack的安装配置,推荐网址:

https://www.linuxidc.com/Linux/2017-10/147566.htm