默认情况下,发送到Salt Minions端的命令的返回值直接返回给Salt Master。使用Salt Returners,可以将返回数据存储到其他外部数据存储用于以后的分析和归档。


Returners从Salt Minion端拉去配置数据,只配置一次,通常是在启动时间

Retuner interface允许返回数据被发送到任何可以接收数据的系统,例如Redis,MongoDB,MySQL等


在/usr/lib/python2.6/site-packages/salt/returners目录下定义了可以用的returner




编写一个Returner

一个returner就是一个包含名叫returner函数的python模块

将自定义returner放到file_roots定义的目录下的_returners目录下,默认是/srv/salt/_returners


/srv/salt/_returners/redis_return.py

import redis
import json

def returner(ret):
    '''
    Return information to a redis server
    '''
    # Get a redis connection
    serv = redis.Redis(
                host='10.10.41.20',
                port=6379,
                db='0')
    serv.sadd("%(id)s:jobs" % ret, ret['jid'])
    serv.set("%(jid)s:%(id)s" % ret, json.dumps(ret['return']))
    serv.sadd('jobs', ret['jid'])
    serv.sadd(ret['jid'], ret['id'])
~



自定义Returner在执行以下操作时被分发到各个minion端

state.highstate

saltutil.sync_returners

saltutil.sync_all






参考资料:

http://docs.saltstack.com/en/2014.7/ref/returners/index.html