Saltstack安装及二次开发说明

Saltstack安装及二次开发说明书

 

1      Saltstack介绍

SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。

通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

Minion(被管理节点)与master(管理节点)之间的通信模式如下:

 

2      Saltstack安装包下载

saltstack添加包,RPM包已在:http://172.17.31.171/salt/,TA可以直接配置在repo源内,进行安装。

 

3      Saltstack安装部署

3.1     服务器端安装

[root@saltstack ~]# yum install salt-master –y

3.2     安装客户端

[root@saltstack ~]# yum install salt-minion –y

3.3     配置客户端服务端

由于每台客户端的配置文件中,默认配置的服务器名为salt。因此可以在客户端和服务器端配置一个host文件,映射salt 为服务器端,这样每台客户端无需配置任何,便可以与服务端通信。

[root@saltstack ~]# echo "172.17.32.86 salt" >>/etc/hosts

二选一,或者直接在客户端配置服务器端地址即可,如下:

 

(注意master:与IP间,中间有空格)

服务器端配置:

3.4     设置开机启动

由于salt是最底层的服务,因此需要开机启动,且必须在root用户下安装,这样可以管理任何用户下的软件。

         服务端执行命令:[root@saltstack ~]# chkconfig salt-master on

         客户端执行命令:[root@saltstack ~]# chkconfig salt-minion on

3.5     启动服务

启动服务端: [root@saltstack ~]# service salt-master start

启动客户端: [root@saltstack ~]# service salt-minion start

3.6     服务端接收客户端认证

默认情况下,客户端启动后,便向服务端发出认证请求。因此在服务端和客户端启动后。

服务端查看,被管理的客户端请求的服务器名:

查看所有的客户端认证命令:[root@saltstack ~]# salt-key –L

接受所有客户端的认证命令:[root@saltstack ~]# salt-key –A

接受单个客户端的认证命令:[root@saltstack ~]# salt-key -a key

[root@saltstack ~]# salt-key -D  //删除所有KEY,[root@saltstack ~]# salt-key -d key  //删除单个key

下图绿色的表示被接受的客户端服务器名,红色表示尚未接收和认证的客户端名,蓝色表示拒绝的服务器名,其中服务器名便是master认证的key,因此服务器名不能重复。

 

3.7     测试验证

[root@saltstack ~]# salt '*' test.ping   //此命令向每台服务器ping一下

[root@saltstack ~]# salt "*" cmd.run "ifconfig"  //查看每个客户端的IP

4      Saltstack二次开发

4.1     在master节点安装salt-api包

[root@yun11 yum.repos.d]# yum install salt-api –y

4.2     启动服务

[root@yun7 salt-rest-api]# ./app.py

Bottle v0.13-dev server starting up (using WSGIRefServer())...

Listening on http://0.0.0.0:8818/

Hit Ctrl-C to quit.

此服务相当于一个微服务,仅仅提供单一的功能,接收客户端的一个rest请求,返回数据。

 

这个二次开发接口,使用了bottle的rest框架。由于botle是python包,因此无需安装任何东西,直接运行app.py即可,当服务端接收到每条rest的命令请求是,都会返回信息。

 

4.3     接口通信协议及使用说明

仅一个接口,接收post请求的服务。

URL: http://0.0.0.0:8818/run

TYPE:POST

Data: {"servers":"******,******","cmd":"cat /etc/issue"}

//servers:是向哪台服务器发送指令,cmd:是具体的指令信息。

Return:json格式数据。

{ "return":

    {

        "**********": "CentOS release 6.5 (Final) Kernel \r on an \m",

        "********": "CentOS release 6.5 (Final) Kernel \r on an \m"

    }

}

4.4     代码示例:

[root@yun7 salt-rest-api]# ./app.py

其中app.py的代码如下:

[root@yun7 salt-rest-api]# cat app.py

#!/usr/bin/python

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

 

#########################################################################

# File Name: app.py

# Author: DRUNK

# Created Time: Sun 26 Apr 2015 07:52:05 PM PDT

#########################################################################

 

from bottle import Bottle, run, route, request, response

from bottle import static_file

#引入saltstack 的包

import salt.client

 

try:

    import simplejson as json

except ImportError as ex:

    import json

 

app = Bottle()

 

@app.post('/run')

def saltrun():

  data = request.body.read()

  try:

    jd = json.loads(data)

    servers = jd['servers']

    cmd = jd['cmd']

    print(cmd)

    local = salt.client.LocalClient()

    results = local.cmd(servers, 'cmd.run', [cmd], expr_form='list')

    return {"return": results}

  except Exception, e:

   print(e)

   return {"return":"Something is error!"}

 

# 设置route页面

@app.route('/')

def index():

  return 'Hello,saltstack'

 

# 设置服务器和端口

run(app, host='0.0.0.0', port=8818)

4.5     测试

查看127.0.0.1服务器的IP

 

获取所有认证客户端和为认证客户端:

 

转载于:https://www.cnblogs.com/DRUNK2013/p/4517061.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值