登录 | 立即注册 切换到窄版
查看: 3893|回复: 0

ansible callback mysql存储结果

[复制链接]

1

主题

2

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2016-9-28 11:24:42 | 显示全部楼层 |阅读模式
本帖最后由 atom 于 2016-9-28 11:34 编辑

cat mysql.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import MySQLdb
import datetime

from ansible.plugins.callback import CallbackBase

TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
now = datetime.datetime.now()

MYSQL_HOST = "192.168.8.29"
MYSQL_USER = "root"
MYSQL_PASS = "password"
MYSQL_DB = "ansible"
MYSQL_PORT = 3306


def insert(host, res):
    conn = MySQLdb.connect(host=MYSQL_HOST, user=MYSQL_USER,
                           passwd=MYSQL_PASS, db=MYSQL_DB, port=MYSQL_PORT)
    cur = conn.cursor()
    sql = r'''insert into status(hosts, result, date) values("{0}", "{1}", "{2}")''' .format(
        host, res, now.strftime(TIME_FORMAT))
    cur.execute(sql)
    conn.commit()
    conn.close()


class CallbackModule(CallbackBase):

    CALLBACK_VERSION = 2.0
    CALLBACK_TYPE = 'notification'
    CALLBACK_NAME = 'mysql'
    CALLBACK_NEEDS_WHITELIST = True

    def __init__(self):
        super(CallbackModule, self).__init__()
    # 2.0之前
    # def runner_on_ok(self, host, res):
    #     insert(host, res)

    def v2_runner_on_ok(self, res):
        host = res._host.get_name()
        result = res._result
        insert(host, result)

------------------------------------------------------------------------------------------------------
创建数据库和表(mysql)
create database ansible;
use ansible;
create table status(hosts char(15), result text, date datetime);

将代码贴到/usr/share/ansible/plugins/callback目录下
没有就mkdir -p /usr/share/ansible/plugins/callback
目录可以修改,配置在ansible.cfg(默认callback_plugins   = /usr/share/ansible/plugins/callback)

添加白名单(ansible.cfg) callback_whitelist = mysql
mysql为文件名



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Ansible中国社区 ( 京ICP备13038968号

GMT+8, 2019-1-24 10:09 , Processed in 0.080921 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表