Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其他程序,它支持多种存储方式,比如MySQL、Redis、Memcache等,通过Return我们可以对SaltStack的每次操作进行记录,对以后日志审计提供了数据来源。
Return的流程:Return是在Master端触发任务,然后Minion接受处理任务后直接与Return存储器建立连接,然后把数据Return存到存储服务器,整个过程都是Minion端操作存储服务器。
接下来选择Redis作为Return结果的存储方式(Redis和master部署到了一起)
<1>在master端部署redis
[root@master ~]# wget http://download.redis.io/releases/redis-3.0.6.tar.gz
[root@master install]# tar xf redis-3.0.6.tar.gz
[root@master install]# cd redis-3.0.6
[root@master redis-3.0.6]# make
[root@master redis-3.0.6]# cd src/
[root@master src]# make install
[root@master src]# mkdir -p /usr/local/redis/bin/
[root@master src]# mkdir -p /usr/local/redis/etc
[root@master src]# mv ../redis.conf /usr/local/redis/etc/
[root@master src]# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis/bin/
[root@master src]# vim /usr/local/redis/etc/redis.conf
daemonize yes //设置为后台方式运行
[root@master src]# cd /usr/local/redis/bin/
[root@master src]# ./redis-server /usr/local/redis/etc/redis.conf //启动redis
[root@master src]# netstat -anpt | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 5802/./redis-server
tcp 0 0 :::6379 :::* LISTEN 5802/./redis-server
<1>在minion端部署redis客户端
[root@minion-1 install]# wget –no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz
[root@minion-1 install]# tar xf redis-2.8.0.tar.gz
[root@minion-1 install]# cd redis-2.8.0
[root@minion-1 redis-2.8.0]# python setup.py install
[root@minion-1 redis-2.8.0]# python -c 'import redis; print redis.VERSION' //确定安装没有问题
(2, 8, 0)
<3>修改minion端的配置文件,并重新启动服务
[root@minion-1 redis-2.8.0]# vim /etc/salt/minion
redis.db: '0'
redis.host: '192.168.200.101'
redis.port: 6379
[root@minion-1 redis-2.8.0]# service salt-minion restart
<4>在master端执行一个操作
[root@master ~]# salt 'minion-1' cmd.run 'hostname' --return redis
<5>查看redis的输出
[root@master ~]# redis-cli monitor
OK
1504161420.535733 [0 192.168.200.102:49207] "SELECT" "0"
1504161420.535990 [0 192.168.200.102:49207] "SET" "minion-1:20170831143700483708" "{\"fun_args\": [\"hostname\"], \"jid\": \"20170831143700483708\", \"return\": \"minion-1\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"minion-1\"}"
1504161420.536240 [0 192.168.200.102:49207] "LPUSH" "minion-1:cmd.run" "20170831143700483708"
1504161420.536545 [0 192.168.200.102:49207] "SADD" "minions" "minion-1"
1504161420.536704 [0 192.168.200.102:49207] "SADD" "jids" "20170831143700483708"
这就是本次小实验的内容,每台minion跟存储服务器连接后发送返回数据,所以说在有大规模的minion端的环境下不适合使用。