一 saltstack 简介:

saltstack 是基于python开发的一套C/S架构配置管理工具,底层使用zeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理


ZeroMQ 使得saltstack能快速在成千上万台机器上进行各种操作,而且采用RSAkey 方式确认身份,传输采用AES加密。
saltstack中服务端叫做master,客户端叫做minion,
在master和minion端都是以守护进程的模式运行,一直监听配置文件里面的ret_port(接受minion请求)和publish_port(发布消息)的端口。
当minion运行时会自动连接到配置文件里面定义的master地址ret_port端口进行连接认证,默认客户端请求id 是 socket.getfqdn()取到的值,也可以在minion启动之前修改minion的id值。

二 服务的安装及基本说明

1 server 1 上安装客户端和服务器端

软件和相关文档:
链接:https://pan.baidu.com/s/1wBVFXI8qYf-Z0YTDnjchYg
密码:mofl

saltstack 自动化运维
saltstack 自动化运维

2 server 2 和 server3 端安装客户端

saltstack 自动化运维
saltstack 自动化运维

3 服务端安装树并查看其状态

saltstack 自动化运维
saltstack 自动化运维_第1张图片

4 其密钥的存放路径

saltstack 自动化运维_第2张图片

5 将从节点指向主节点

saltstack 自动化运维
saltstack 自动化运维

6 指向前查看其密钥为空

saltstack 自动化运维_第3张图片

7 启动slave服务

saltstack 自动化运维

8 查看从节点密钥,当服务启动后,会自动使用md5校验生成密钥

saltstack 自动化运维

9 服务器master端查看并启动服务

saltstack 自动化运维_第4张图片

10 查看节点slave情况

saltstack 自动化运维_第5张图片

11 允许所有未注册的节点注册,并查看是否注册成功

saltstack 自动化运维_第6张图片

12 查看master 端生成的公钥

saltstack 自动化运维

13 查看slave 及 minion端由master发送的公钥

saltstack 自动化运维

14 查看master端由minion端发送的公钥

saltstack 自动化运维_第7张图片
saltstack 自动化运维_第8张图片
由此可知,其验证是双向验证,及master端将其公钥发送到minion端,minion也将公钥发送到master端。

saltstack 自动化运维_第9张图片

其中4505 负责发送数据到客户端,
4506 负责接收客户端的数据到服务器

三 基础应用

1 部署远端httpd 服务

1 master环境准备

开启工作目录并重启进程加载

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维

2 了解YAML

1 默认的sls文件的renderer 是YAML renderer ,YAML是一个有很多强大特性的标记性语言,salt 使用了一个YAML的小型子集,映射非常常规的数据结构,向列表和字典,YAML renderer 的工作是将YAML数据格式的结构编译成python数据结构给salt使用


规则一 :
缩进: YAML 使用一个固定的缩进风格表示数据层结构关系,salt需要每一个缩进级别都有两个空格组成,不要使用tab


规则二:
冒号:python 的字典当然是简单的键值对


规则三:
短横杠:想要表示列表项,使用一个短横杠加一个空格,多项使用同样的缩进级别作为同一列表的一部分。

3 部署:

saltstack 自动化运维
saltstack 自动化运维_第10张图片

其中apache-install只是一个名字
pkg.installed中pkg是数据包处理的类,是一个大的方式,installed 表示其是对数据包进行安装处理
-pkgs 用于指定安装多个数据包~~

saltstack 自动化运维_第11张图片
saltstack 自动化运维_第12张图片

4 查看安装结果

saltstack 自动化运维

5 设置部署并启动

saltstack 自动化运维
saltstack 自动化运维_第13张图片

其中service 也是一个大的类,而running是其中的方法
其有reload 、restart、enable 等常用方法

6 实施

saltstack 自动化运维_第14张图片

7 查看

saltstack 自动化运维

8 配置httpd配置文件并推送

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维

9 配置

saltstack 自动化运维
saltstack 自动化运维_第15张图片

其中使用到了file.managed模块
--name:表示目标目录,及客户端对应的目录
--source:表示配置文件的来源路径,其是相对于/srv/salt的路径

10 部署

saltstack 自动化运维
saltstack 自动化运维_第16张图片
saltstack 自动化运维_第17张图片

11 查看 :

saltstack 自动化运维

12 另一种配置方式:

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第18张图片
saltstack 自动化运维_第19张图片
saltstack 自动化运维

2 nginx 源码包编译配置

1 配置并认证通过server3

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第20张图片

2 创建相关文件夹,并查看,用于存放不同的文件和数据包

saltstack 自动化运维
saltstack 自动化运维_第21张图片

3 安装配置相关依赖包

saltstack 自动化运维
saltstack 自动化运维_第22张图片

4 安装配置nginx用户名

saltstack 自动化运维
saltstack 自动化运维_第23张图片

5 配置nginx的推送和解压

saltstack 自动化运维
saltstack 自动化运维_第24张图片
saltstack 自动化运维
saltstack 自动化运维_第25张图片

6 部署

saltstack 自动化运维
查看是否编译成功
saltstack 自动化运维_第26张图片
saltstack 自动化运维_第27张图片

7 创建nginx配置文件

saltstack 自动化运维
saltstack 自动化运维_第28张图片

8 创建启动和触发机制

saltstack 自动化运维_第29张图片
saltstack 自动化运维_第30张图片

9 部署

saltstack 自动化运维
saltstack 自动化运维_第31张图片

10 查看

saltstack 自动化运维

3 安装haproxy实现负载均衡:

1 另一个节点安装以获取到期配置文件

saltstack 自动化运维

2 复制配置文件主节点

saltstack 自动化运维

3创建haproxy 目录

saltstack 自动化运维_第32张图片

4 修改配置文件

saltstack 自动化运维
saltstack 自动化运维_第33张图片

5 配置客户端服务

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维

6 配置认证key

saltstack 自动化运维_第34张图片
saltstack 自动化运维

7 查看总的目录结构

saltstack 自动化运维_第35张图片

8 查看haproxy 目录结构

saltstack 自动化运维_第36张图片

9 配置haproxy安装配置文件

saltstack 自动化运维_第37张图片

10 设置其分配给不同的主机

saltstack 自动化运维_第38张图片

11 进行一键配置

saltstack 自动化运维

12 配置网页查看其负载均衡

saltstack 自动化运维
saltstack 自动化运维

13 测试其负载均衡

saltstack 自动化运维_第39张图片

客户端通过服务端数据发送到客户端指定的目录,并有客户端进行安装和配置,其配置文件目录如下

saltstack 自动化运维_第40张图片

四 扩展模块

1 grains

1 常用命令

saltstack 自动化运维_第41张图片
saltstack 自动化运维_第42张图片
saltstack 自动化运维_第43张图片
saltstack 自动化运维_第44张图片
saltstack 自动化运维_第45张图片
saltstack 自动化运维

2 设置标签

saltstack 自动化运维_第46张图片
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维

3 其他用法

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第47张图片

位置
server1


目录
/srv/salt/
mkdir _grains


创建文件


#!/usr/bin/env  python 
def my_grains():
    grains = {}
    grains['root']='root'
    grains['admin']='admin'
    return  grains

进行同步处理

salt   '*'  saltutil.sync_grains
salt  '*'  grains.item  admin  root
server2:
    ----------
    admin:
        admin
    root:
        root
server3:
    ----------
    admin:
        admin
    root:
        root

2 pillar 模板使用

1 配置pillar模块目录

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维

2 创建目录并创建文件

saltstack 自动化运维
saltstack 自动化运维_第48张图片
saltstack 自动化运维
saltstack 自动化运维

3 测试

saltstack 自动化运维_第49张图片

saltstack 自动化运维_第50张图片

3 mysql 应用于记录数据

1 安装数据库并导入相应的数据

saltstack 自动化运维
saltstack 自动化运维_第51张图片
saltstack 自动化运维_第52张图片
saltstack 自动化运维_第53张图片

2 客户端安装服务:

saltstack 自动化运维_第54张图片

3 客户端配置mysql相关数据

saltstack 自动化运维
saltstack 自动化运维

saltstack 自动化运维

4 mysql数据库进行授权

saltstack 自动化运维

5 测试并查看结果

saltstack 自动化运维_第55张图片

4 master端用于将数据提交给mysql

此处的客户端即需要将数据传送到master 端也需要将数据发送给mysql。难度大,如果直接在master端配置mysql-python则只需mater将数据写入数据库即可

1 客户端关闭mysql链接配置

saltstack 自动化运维
saltstack 自动化运维

2 重启服务

saltstack 自动化运维

3 服务端安装mysql-python

saltstack 自动化运维

4 服务端配置mysql相关配置

saltstack 自动化运维
saltstack 自动化运维_第56张图片

5 重启服务

saltstack 自动化运维

6 mysql授权:

saltstack 自动化运维

7 测试:

saltstack 自动化运维_第57张图片

配置相关模块

1 关闭mysql及配置,此处是实验,以防mysql影响正常性能:
saltstack 自动化运维
saltstack 自动化运维_第58张图片
saltstack 自动化运维

其他扩展模板的基本使用

saltstack 自动化运维_第59张图片
saltstack 自动化运维
可以通过此格式编写其他的服务
saltstack 自动化运维_第60张图片
saltstack 自动化运维_第61张图片

5 jinja 模板的使用

1 方式一 :

saltstack 自动化运维
saltstack 自动化运维_第62张图片
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第63张图片
saltstack 自动化运维

2 方式二:通过模板进行修改

saltstack 自动化运维
saltstack 自动化运维_第64张图片
saltstack 自动化运维_第65张图片
saltstack 自动化运维_第66张图片
saltstack 自动化运维

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第67张图片
saltstack 自动化运维

3 方式三 通过grains进行修改IP

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第68张图片
saltstack 自动化运维_第69张图片
saltstack 自动化运维_第70张图片
saltstack 自动化运维_第71张图片
saltstack 自动化运维

通过定义配置文件进行修改其端口或IP地址
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第72张图片
saltstack 自动化运维
saltstack 自动化运维_第73张图片
saltstack 自动化运维

6 keepalived 安装与基本配置:

1 yum 的方式安装

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第74张图片
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第75张图片
saltstack 自动化运维
saltstack 自动化运维_第76张图片
saltstack 自动化运维
saltstack 自动化运维_第77张图片
saltstack 自动化运维
saltstack 自动化运维_第78张图片
saltstack 自动化运维_第79张图片

2 通过编译的方式进行keepalived的安装

1 关闭和删除前面配置的服务

saltstack 自动化运维_第80张图片
saltstack 自动化运维_第81张图片

2 准备数据包

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第82张图片

3 基本服务配置,用于生成配置文件和启动脚本

saltstack 自动化运维_第83张图片

4 拷贝配置文件和启动脚本

saltstack 自动化运维
saltstack 自动化运维

5 编辑配置文件

saltstack 自动化运维
saltstack 自动化运维_第84张图片

6 添加下面的启动脚本复制

saltstack 自动化运维
saltstack 自动化运维_第85张图片

7 创建运行脚本,并加上变量

saltstack 自动化运维
saltstack 自动化运维_第86张图片

8 添加变量

saltstack 自动化运维_第87张图片

9 配置top.sls

saltstack 自动化运维
saltstack 自动化运维_第88张图片

10 运行,必须在top.sls所在的目录下

saltstack 自动化运维

11 查看结果:

saltstack 自动化运维_第89张图片

6 salt proxy 安装与配置

1 服务器端删除原有的minion配置及key 重新获取key

saltstack 自动化运维_第90张图片
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第91张图片
saltstack 自动化运维_第92张图片

2 master 端安装服务,用于链接mastertop 和 master

saltstack 自动化运维_第93张图片

3 配置与server4 之间的链接

saltstack 自动化运维
saltstack 自动化运维

4 topmaster 端安装配置

saltstack 自动化运维

5 配置配置文件

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第94张图片

saltstack 自动化运维

6 启动master端服务,使其认证key

saltstack 自动化运维_第95张图片

7 服务端获取key 并通过认证

saltstack 自动化运维_第96张图片

8 测试

saltstack 自动化运维_第97张图片

7 salt ssh:

saltstack 自动化运维
saltstack 自动化运维
saltstack 自动化运维_第98张图片
saltstack 自动化运维
saltstack 自动化运维

8 salt API:

1 安装api软件

saltstack 自动化运维

2 生成密钥

saltstack 自动化运维_第99张图片
saltstack 自动化运维_第100张图片

3 修改服务端配置,使其支持API

saltstack 自动化运维
saltstack 自动化运维

4 创建用户名和密码,用于认证API,并创建相关用户和密码

saltstack 自动化运维_第101张图片
saltstack 自动化运维_第102张图片
saltstack 自动化运维
saltstack 自动化运维_第103张图片

5 重启服务并查看相关端口

saltstack 自动化运维_第104张图片

6 测试minion端的连通性

saltstack 自动化运维_第105张图片

7 API 链接测试,并获取token

saltstack 自动化运维_第106张图片

8 进行获取客户端列表

saltstack 自动化运维_第107张图片

9 配置saltapi.py 用于生成相关服务的脚本

saltstack 自动化运维
saltstack 自动化运维_第108张图片
saltstack 自动化运维

saltstack 自动化运维_第109张图片

10 在客户端删除相应的服务。并通过salt-API进行创建

saltstack 自动化运维_第110张图片

saltstack 自动化运维_第111张图片

11 查看,则安装成功

saltstack 自动化运维