转自:http://wiki.saltstack.cn/ref/returners/index
salt returners将salt minion执行命令的返回数据发送到指定的returner上
* 原文出处: http://docs.saltstack.com/ref/returners/index.html * 译者: pengyao
Returners
默认情况下,发送给salt minion的命令执行结果将返回给salt master. 但是自从salt minions的命令执行从salt master的调用中分列出来后,将结果返回给salt master不再必须了.
This is where the returner interface comes in. Returners are modules called in place of returning the data to the Salt master.
Returner接口允许将结果发送给任意系统,意味着可以将结果发送给Redis server、MongoDB server、MySQL server等等其他系统.
-
可以查看salt内置returner列表获取更多详情
使用Returners
所有的命令都会将数据返回给master。 可以添加更多的returner接口,以便结果也可以发送到指定的returner接口.
通过以下命令指定returner:
salt '*' test.ping --return redis_return
该命令将确保使用redis_return returner接口.
当然,也可以指定多个returners:
salt '*' test.ping --return mongo_return,redis_return,cassandra_return
本命令将会将test.ping的命令执行结果返回给指定的三个returners.
写自己的Returner
一个return是一个模块,其中包含returner函数(function)。这个returner函数只能指定一个参数。参数是通过调用minion函数的返回结果. 比如minion函数test.ping将返回的参数是True.
一个简单returner的例子:
1 import redis
2 import json
3
4 def returner(ret):
5 '''
6 Return information to a redis server
7 '''
8 # Get a redis connection
9 serv = redis.Redis(
10 host='redis-serv.example.com',
11 port=6379,
12 db='0')
13 serv.sadd("%(id)s:jobs" % ret, ret['jid'])
14 serv.set("%(jid)s:%(id)s" % ret, json.dumps(ret['return']))
15 serv.sadd('jobs', ret['jid'])
16 serv.sadd(ret['jid'], ret['id'])
例子return将会把数据以json格式发送给redis server并存储在redis中.
你也可以将自定义的returner存放在file_roots(master的配置文件中指定具体对应的目录)目录下的_returners目录中。 这样自定义的returner将会在执行state.highstate或运行saltutil.sync_returners或saltutil.sync_all函数时分发到minion上.
例子
内置的Salt returners可以在https://github.com/saltstack/salt/blob/develop/salt/returners中查看
* 原文出处: http://docs.saltstack.com/ref/returners/all/index.html * 译者: pengyao
内置的returner模块列表
Returner Module | 简述 |
将结果返回给carbon接收器 | |
将结果返回给Cassandra ColumnFamily | |
将结果返回给本地的测试returner接口,即打印当前的结果 | |
将结果返回给mongodb | |
将结果返回给mongodb | |
将结果返回给mysql | |
将结果返回给Postgres | |
将结果返回给redis | |
将结果返回给sentry | |
通过email返回salt数据 | |
将结果返回给操作系统的syslog facility |