• runners


    saltstack return 除了在配置文件中可以定义外(太繁琐),还可以自定义retunner,当然,这需要通过代码实现了,实现方式和自定义的pillar和grains类似,步骤如下:

    #创建_returners目录,并创建脚本
    [root@linux-node1 _returners]# pwd
    /srv/salt/base/_returners
    [root@linux-node1 _returners]# cat mysql_return.py    #这里脚本的名称需要和__virual__函数返回的一致
    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    __author__ = 'Charles Chang'
    
    import json
    import MySQLdb       #模块需要在master和minion端都安装
    
    def __virtual__():
        return 'mysql_return'
    
    def returner(ret):
        conn = MySQLdb.connect(host='192.168.74.20',user='salt',passwd='salt',db='salt',port=3306)
        cursor = conn.cursor()
        cursor.execute('INSERT INTO salt_returns VALUES (%s,%s,%s,%s,%s,%s)'%(json.dumps(ret['fun']),json.dumps(ret['jid']),
                       json.dumps(ret['return']),json.dumps(ret['id']),'"'+str(ret['success'])+'"',"'"+json.dumps(ret)+"'"))
        conn.commit()
        cursor.close()
        conn.close()
    
    
    
    #创建mysql库和表
    CREATE DATABASE `salt`
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci;
    
    GRANT ALL PRIVILEGES ON salt.* TO 'salt'@localhost IDENTIFIED BY 'salt';
    GRANT ALL PRIVILEGES ON salt.* TO 'salt'@'%'  IDENTIFIED BY 'salt';
    
    DROP TABLE IF EXISTS `salt_returns`;
    CREATE TABLE `salt_returns` (
    `fun` varchar(50) NOT NULL,
    `jid` varchar(255) NOT NULL,
    `return` mediumtext NOT NULL,
    `id` varchar(255) NOT NULL,
    `success` varchar(10) NOT NULL,
    `full_ret` mediumtext NOT NULL,
    KEY `id` (`id`),
    KEY `jid` (`jid`),
    KEY `fun` (`fun`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    #同步returnner到客户端
    [root@linux-node1 _returners]# salt '*' saltutil.sync_returners
    linux-node1.oldboyedu.com:
        - returners.mysql_return
    linux-node2-computer:
        - returners.mysql_return
    
    
    #执行
    [root@linux-node1 ~]# salt  *  cmd.run 'whoami' --return mysql_return
    linux-node2-computer:
        root
    linux-node1.oldboyedu.com:
        root
    
    
    #数据:每一个minion占据一行数据
    select * from salt_returnsG
    *************************** 6. row ***************************
         fun: cmd.run
         jid: 20170608165722516408
      return: root
          id: linux-node2-computer
     success: True
    full_ret: {"fun_args": ["whoami"], "jid": "20170608165722516408", "return": "root", "retcode": 0, "success": true, "fun": "cmd.run", "id": "linux-node2-computer"}
    *************************** 7. row ***************************
         fun: cmd.run
         jid: 20170608165722516408
      return: root
          id: linux-node1.oldboyedu.com
     success: True
    full_ret: {"fun_args": ["whoami"], "jid": "20170608165722516408", "return": "root", "retcode": 0, "success": true, "fun": "cmd.run", "id": "linux-node1.oldboyedu.com"}
    

      

    查看有哪些returner

    [root@linux-node1 ~]# salt '*' sys.list_returners
    linux-node2-computer:
        - carbon
        - couchdb
        - etcd
        - hipchat
        - local
        - local_cache
        - memcache
        - multi_returner
        - mysql
        - mysql_return
        - slack
        - smtp
        - sqlite3
        - syslog
    linux-node1.oldboyedu.com:
        - carbon
        - couchdb
        - django
        - etcd
        - hipchat
        - local
        - local_cache
        - mongo
        - mongo_return
        - multi_returner
        - mysql
        - mysql_return
        - pushover
        - rawfile_json
        - redis
        - slack
        - smtp
        - splunk
        - sqlite3
        - syslog
        - zabbix
    

    returner的源码在 salt项目下的 salt/returners.py

  • 相关阅读:
    刚好遇见你——软件工程
    int main(int argc,char* argv[]) 简单理解
    奇偶数分离
    A+B Problem
    日期计算
    正三角形的外接圆面积
    数数小木块
    谁是最好的Coder
    水仙花数
    5个数求最值
  • 原文地址:https://www.cnblogs.com/cqq-20151202/p/6963954.html
Copyright © 2020-2023  润新知