西数超哥博客
运维经验教程分享

[原创]Saltstack远程执行学习笔记:Returners

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环境下并不适合企业级应用。

转载请注明:西数超哥博客www.ysidc.top» [原创]Saltstack远程执行学习笔记:Returners

https://www.ysidc.top 西数超哥博客,数据库,西数超哥,虚拟主机,域名注册,域名,云服务器,云主机,云建站,ysidc.top

赞(0)
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除。本站原创内容未经允许不得转载:西数超哥博客 » [原创]Saltstack远程执行学习笔记:Returners