zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python进阶之装饰器之3利用装饰器强制函数上的类型检查
    python进阶之装饰器之6.装饰器为被包装函数增加参数,如何实现装饰器对类进行打补丁或者说对类的功能进行扩充
    python进阶之装饰器之5把装饰器作用到类和静态方法上
    python进阶之装饰器之4在类中定义装饰器,将装饰器定义为类,两者的区别与联系
    AOP的使用
    使用Maven搭建SSM框架
    js判断字符串是否有重复
    纯js实现复制功能
    关于Log文本的操作
    jquery往textarea鼠标光标选中的地方插入值
  • 原文地址:https://www.cnblogs.com/cqq-20151202/p/6963954.html
Copyright © 2011-2022 走看看