Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其他程序,它支持多种存储方式,比如用MySQL、MongoDB、Redis、Memcache等,通过Return我们可以对SaltStack的每次操作进行记录,对以后日志审计提供了数据来源。目前官方已经支持30种Return数据存储与接口,我们可以很方便地配置与使用它。当然也支持自己定义的Return。在选择和配置好要使用的Return后,只需在salt命令后面指定Return即可。下边看下官网的介绍:
Returners
Salt returners allow saving minion responses in various datastores, or to various locations, in addition to displaying the responses at the CLI. Returners can be used to extend Salt to communicate with new, or custom, interfaces and to support new databases.
Full list of returners
- Contains: list of returner modules used to store minion responses in Redis, Mongo, Cassandra, SQL, and others.
- Writing returners
- Contains: instructions for writing returner modules.
上边是官网的一个关于returners的说明,大概意思是说返回信息可以存放到一些数据库中,比如redis monggo sql等,以供其他第三方软件或接口进行调用。 我们这里以官网的redis做一个学习,其他的请根据自己操作比如官网针对mysql实现介绍的已经很详细了。
1,Minion配置文件。
操作之前,我们需要在我们的minion端安装python的redis模块
- wget –no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz
- tar -zvxf redis-2.8.0.tar.gz
- mv redis-2.8.0 python-redis-2.8.0
- cd python-redis-2.8.0
- python setup.py install
安装以后客户端执行python -c ‘import redis; print redis.VERSION’ 如果显示(2, 8, 0) 或其他其他版本号, 说明这个组件已经安装,如果显示 ImportError:No module named redis ,则需要按照上述代码进行一次安装。
完成以后,需要在Minion配置文件里面定义Return存储服务器信息。添加Redis服务器信息即可,代码如下:
redis.db: '0' redis.host: '139.129.17.xx' redis.port: 6379
具体服务器信息请根据自己情况设置,并注意防火墙开启6379端口。重启服务salt-minion。
2,查看运行结果。
操作之前,我们先到接受数据的redis上打开monitor,便于我们观察数据,比如我们master端执行一个模块cmd.run:
[root@Master python-redis-2.6.6]# salt '*' cmd.run 'hostname' --return redis Master: Master aliserver: aliserver HK-VPN: HK-VPN
可以看到我们的redis这边显示结果如下:
[root@Master ~]# redis-cli monitor OK 1457682137.672080 [0 139.129.17.95:56127] "SELECT" "0" 1457682137.672320 [0 139.129.17.95:56127] "SET" "Master:20160311154217529879" "{\"fun_args\": [\"hostname\"], \"jid\": \"20160311154217529879\", \"return\": \"Master\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"Master\"}" 1457682137.672653 [0 139.129.17.95:56127] "LPUSH" "Master:cmd.run" "20160311154217529879" 1457682137.672810 [0 139.129.17.95:56127] "SADD" "minions" "Master" 1457682137.672932 [0 139.129.17.95:56127] "SADD" "jids" "20160311154217529879" 1457682137.759422 [0 115.29.249.51:39506] "SELECT" "0" 1457682137.784372 [0 115.29.249.51:39506] "SET" "aliserver:20160311154217529879" "{\"fun_args\": [\"hostname\"], \"jid\": \"20160311154217529879\", \"return\": \"aliserver\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"aliserver\"}" 1457682137.809483 [0 115.29.249.51:39506] "LPUSH" "aliserver:cmd.run" "20160311154217529879" 1457682137.834607 [0 115.29.249.51:39506] "SADD" "minions" "aliserver" 1457682137.859607 [0 115.29.249.51:39506] "SADD" "jids" "20160311154217529879" 1457682138.385378 [0 43.252.228.170:37942] "SELECT" "0" 1457682138.536959 [0 43.252.228.170:37942] "SET" "HK-VPN:20160311154217529879" "{\"fun_args\": [\"hostname\"], \"jid\": \"20160311154217529879\", \"return\": \"HK-VPN\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"HK-VPN\"}" 1457682138.687801 [0 43.252.228.170:37942] "LPUSH" "HK-VPN:cmd.run" "20160311154217529879" 1457682138.838358 [0 43.252.228.170:37942] "SADD" "minions" "HK-VPN" 1457682138.988801 [0 43.252.228.170:37942] "SADD" "jids" "20160311154217529879"
关于这个JSON串这里就不解释了,很容易理解。关于官网的其他例子这里就不一一演示了。通过这个例子大家能理解Return流程就行,配置方面官网都有很详细的说明。关于Return这里多说一点,大家如果了解上面的流程之后发现是每台minion跟存储服务器连接后发送返回数据。在大规模的Minion环境下并不适合企业级应用。
转载请注明:21运维 » Saltstack远程执行学习笔记:Returners