授之以渔-运维平台Saltstack Web 管理一(Returnner篇)

接上篇《授之以渔-运维平台Saltstack Web 管理一(模块管理篇)》,今天介绍下Returnner。

一,returnner介绍

1,默认情况下,发送给minion的命令执行结果将返回给salt-master。Saltstack Returnner的接口允许将结果发送给任意系统。

GitHub:https://github.com/saltstack/salt/tree/develop/salt/returners

官网:https://docs.saltstack.com/en/latest/ref/returners/

二,returnner模块列表

image

##三、 食用过程

思路:主要用returners来处理saltstack执行的返回信息,通过http接口,存入数据库

###1.retrurn_http(位置/srv/salt/_returners/)

#coding=utf8
import json
import urllib
import urllib2
import os

class Salt_post:
    def __init__(self):
        self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor())
        urllib2.×××tall_opener(self.opener)
    def salt_post(self,salt_report_id,salt_report_jid,salt_report_full_ret):
        self.salt_report_id=salt_report_id
        self.salt_report_jid=salt_report_jid
        self.salt_report_full_ret=salt_report_full_ret
        _str=urllib.urlencode({'salt_report_id':self.salt_report_id,'salt_report_jid':self.salt_report_jid,'salt_report_full_ret':self.salt_report_full_ret})
        _response=urllib2.urlopen('http://veronica.youth.cn/cmdb/salt_returners/',_str)

def __virtual__():
    return 'return_redis'

def returner(ret):
    x=Salt_post()
    x.salt_post(ret['id'],ret['jid'],json.dumps(ret))

Q:为什么选择http的方式?
A:因为returners需要在每个客户端上执行,如果使用常规的mysql或者redis方式,直接写入数据库,需要在每个机器上装python的mysql或者redis扩展,无疑增加劳动力。

Q:salt_report_id,salt_report_jid,salt_report_full_ret干什么用?
A:salt_report_id指服务器客户端名称,salt_report_jid指jid,salt_report_full_ret指完成的返回信息。每次'http://veronica.youth.cn/cmdb/salt_salt_returners/被触发后,我会分别对我的Salt_hosts及Salt_report表进行更新。(更新这里效仿了puppet的Foreman中有hosts和reports两张表,有兴趣的同学可自行查看分别维护这每次主机信息和变更信息。)

models如下:

class Salt_hosts(models.Model):
    class Meta:
        verbose_name = 'Salt_host'
        verbose_name_plural = verbose_name
        ordering = ['salt_hosts_name'] 
    salt_hosts_name = models.CharField("主机名称",max_length=45)          
    salt_hosts_last_jid = models.CharField("jid",max_length=25,blank=True)
    salt_hosts_last_jid_time = models.CharField('最后jid时间',max_length=35,blank=True)
    salt_hosts_last_success_status = models.CharField("执行状态",max_length=10,blank=True)
    salt_hosts_last_models_success_count = models.CharField("模块执行成功",max_length=10,blank=True)
    salt_hosts_last_models_fail_count = models.CharField("模块执行失败",max_length=10,blank=True)
    salt_hosts_models_group = models.ForeignKey(Salt_models_group,verbose_name="执行模块组")
    salt_hosts_model = models.CharField("执行模块",max_length=10,blank=True)
    salt_change_at = models.DateTimeField('最后更改时间',auto_now=True)  

class Salt_report(models.Model):
    class Meta:
        verbose_name = 'Salt_report'
        verbose_name_plural = verbose_name 
    salt_report_fun = models.CharField("功能",max_length=25)
    salt_report_fun_args = models.CharField("参数",max_length=100,blank=True,null=True)
    salt_report_jid = models.CharField("jid",max_length=25)
    salt_report_id = models.CharField("id",max_length=45)
    salt_report_success = models.CharField("状态",max_length=10)
    salt_report_full_ret = models.TextField('结果',blank=True,max_length=2000) 
    salt_report_time = models.CharField('执行时间',max_length=35)
Salt_report(salt_report_fun=salt_report_fun,
                            salt_report_id=salt_report_id,
                            salt_report_jid=salt_report_jid,
                            salt_report_full_ret=salt_report_full_ret,
                            salt_report_success=salt_report_success,
                            salt_report_fun_args=salt_report_fun_args,
                            salt_report_time=salt_report_time).save()

Salt_hosts(salt_hosts_name=salt_report_id,
                           salt_hosts_last_jid=salt_report_jid,
                           salt_hosts_last_jid_time=salt_report_time,
                           salt_hosts_last_success_status=salt_report_success,
                           salt_hosts_last_models_success_count=success_count,
                           salt_hosts_last_models_fail_count=fail_count).save()

###2.Salt_hosts(类似Forman的reports)

image.png
###2.Salt_repot(类似Forman的hosts)
image.png

image.png
image.png

转载于:https://blog.51cto.com/qdream/2409023

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值