文档章节

自动化运维工具saltstack使用

何悦
 何悦
发布于 2017/05/26 13:28
字数 1297
阅读 27
收藏 0

=================================================================================
一、基础介绍
=================================================================================

1、简介
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

2、特性
(1)、部署简单、方便;
(2)、支持大部分UNIX/Linux及Windows环境;
(3)、主从集中化管理;
(4)、配置简单、功能强大、扩展性强;
(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;

(6)支持API及自定义模块,可通过Python轻松扩展。

3、Master与Minion认证
(1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

(2)、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。

4、Master与Minion的连接
(1)、SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。

(2)、minion与master之间的通信模式如下:

5、本次测试环境

IP地址

角色

系统环境

     

10.10.10.7

Master

CentOS 6.8

     
     

10.10.10.3

minion

CentOS 7.0

     
     
     
     

10.10.10.2

Minion1

CentOS 7.0

=================================================================================
二、SaltStack基础安装与配置
=================================================================================

1、salt-master安装

vim /etc/yum.repo.d/saltstack.repo

[saltstack-repo]

name=SaltStack repo for RHEL/CentOS $releasever

baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest

enabled=1

gpgcheck=1

gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

其次,安装rpm -Uvh epel-release-X-Y.rpm

各种系统的epel下载地址,http://mirrors.neusoft.edu.cn/epel/

·         yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud  -y

2、salt-minion安装

同理,安装资源路径

·         yum install salt-minion -y

3、salt-master和salt-minion配置

配置前准备,所有节点hosts文件,并修改对应主机名

10.10.10.7  saltstack.master.com

10.10.10.3  saltstack.minion.com

10.10.10.2  saltstack.minion1.com

salt-master:

vim /etc/salt/master

interface: 10.10.10.7

auto_accept: True

启动master,service salt-master start

salt-minion:

vim /etc/salt/minion

master: saltstack.master.com

id: minion-10-130-87-151(授权的唯一标识)

#在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstate

schedule:

  highstate:

    function: state.highstate

    minutes: 5

启动minion,systemctl start salt-minion

4、SaltStack简单使用
## 查看当前的salt key信息
# salt-key -L

## 测试被控主机的连通性
# salt '*' test.ping

## 远程命令执行测试
# salt '*' cmd.run 'uptime'

## 根据被控主机的grains信息进行匹配过滤
# salt -G 'os:Centos' test.ping

## 显示被控主机的操作系统类型
# salt '*' grains.item os

## 远程代码执行测试
# salt '*' cmd.exec_code python 'import sys; print sys.version'

##服务器端 写sls 模板(我也不知道 该不该这样叫)  他的默认路径在 /srv/salt/ 下 没有就新建目录

然后新建一个top.sls   就跟puppet的入口文件 site.pp 类似

这里我讲解下 这个内容

base:  大家都这样取  因为只是一个代号吧  我也没改过

” : 这个引号内的是对象  说起匹配对象 你懂的  什么组 正则  类别都行  上面讲过的

-  fc7.sc  这样的东西是指资源文件是fc7目录下的sc.sls  这样的格式  这个一定得记住  好像还有一种方法 会用到init.sls  擦这个真忘记了

下面的fc7.pack  fc7.fc7 意思 都一样  #注意名称只是代号而已 你懂的

然后我们看fc7目录下的资源文件吧

讲解 我写图上了

这个就简单的实现 安装包(必须是yum能安装的)  服务  文件的最简单的管理了

我这里只是简单的演示 因为这个都是我测试过的 所以我没把客户端的结果给贴出来(客户端是30s抓一次) 当然也可以主动推

salt ‘*’ state.highstate

核心技术就是我上面说的 saltstack 管理这块 有很多模板 很多参数的

这里要说的是  如果以后你上线了   必须得规划好  准备用saltstack管些什么东西  然后再分类  什么初始化  什么服务 什么包 什么文件等等这些

初始化一般是进行一个简单的初始化

文件管理这块可以把不是经常变的 放到一起管理

包的话  可以细分成一些基础包 服务包这类

服务的话 一般跟该服务的配置文件 放到一起 需要watch 然后reload的

先写这么多吧  下次吧 资源管理那块 详细再弄下

© 著作权归作者所有

何悦
粉丝 0
博文 4
码字总数 3003
作品 0
长宁
私信 提问
SaltStack;以及与AnsibleWorks,Chef-solo,puppet等等等的比较!

SaltStack;以及与AnsibleWorks,Chef-solo,puppet等等等的比较! ...       http://www.vpsee.com/2013/08/a-system-configuration-management-and-orchestration-tool-saltstack/ 系统......

carocy
2017/10/31
72
0
SaltStack安装,添加主机,基本命令

为什么选择SaltStack: 可管理主机种类多样化,如Windows,Linux 使用Python开发,对于了解Python用户进行二次开发简单 部署方便(相对于Ansible复杂,但客户端安装部署相对非常简单了) 扩展...

蓝色_风暴
2017/07/15
0
0
PHP 7.0.0 一键安装脚本

OSCM (Operation System Configure Management) 是我创建的一个自动化运维脚本的项目,旨在提供敏捷运维。传统自动化运维工具例如 ansible, saltstack,puppet 不够灵活,配置繁琐,很多限...

neo-chen
2015/12/03
715
4
运维线下沙龙(北京站)-漫谈构建运维平台化

2014运维线下沙龙(北京站),有兴趣的朋友可以来参加 ,涉及的内容是运维开发和云端运维相关。 这次分享会规模也不大,大家可以开开心心的各种闲聊。 详情地址及报名地址: http://xiaorui....

rfyiamcool
2014/11/25
0
0
开源与自研:自动化运维平台从0到1的三段式探索

本文根据DBAplus社群第133期线上分享整理而成 当前市场上有不少商业和开源的运维产品工具,各有特色也各有利弊,这造成一个尴尬局面:产品工具很多,却很难找出一个可以很好适应自身企业持续...

李程
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部