saltstack mysql returner

https://github.com/saltstack/salt/blob/develop/salt/returners/mysql.py

http://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql

http://lixcto.blog.51cto.com/4834175/1430638

http://lihuipeng.blog.51cto.com/3064864/1403387

这个就是把saltstack的运行结果存入到mysql数据库中。

先决条件: master 和 minion上都要安装 yum install MySQL-python

1,saltmaster (192.168.1.212)上安装 mysql,

mysql -uroot -p

use mysql

GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘192.168.1.215‘ IDENTIFIED BY ‘mysqlpw‘ WITH GRANT OPTION;

FLUSH  PRIVILEGES;

// 允许root用户从minion (192.168.1.215)登陆,

//创建数据库

 CREATE DATABASE  `salt`

      DEFAULT CHARACTER SET utf8

      DEFAULT COLLATE utf8_general_ci;

    USE `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,

      `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

      KEY `id` (`id`),

      KEY `jid` (`jid`),

      KEY `fun` (`fun`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2, 在saltmaster(192.168.1.212)上: cat /srv/salt/_returners/testmysql.py

# -*- coding: utf-8 -*-

import sys

import json

import time

import MySQLdb

import salt.returners

try:

import MySQLdb

HAS_MYSQL = True

except ImportError:

HAS_MYSQL = False

__virtualname__ = ‘testmysql‘

def __virtual__():

if not HAS_MYSQL:

return False

else:

return  __virtualname__

def returner(ret):

conn=MySQLdb.connect(host=‘192.168.1.212‘,user=‘root‘,passwd=‘mysqlpw‘,db=‘salt‘,

port=3306)

cursor=conn.cursor()

sql = ‘‘‘INSERT INTO `salt_returns`(`fun`,`jid`,`return`,`id`,`success`,`full_ret`)

VALUES (%s,%s,%s,%s,%s,%s)‘‘‘

cursor.execute(sql % (str(json.dumps(ret[‘fun‘])),str(json.dumps(ret[‘jid‘])),

str(json.dumps(ret[‘return‘])),str(json.dumps(ret[‘id‘])),

‘"‘+str(ret[‘success‘])+‘"‘,"‘"+json.dumps(ret)+"‘"))

conn.commit()

cursor.close()

conn.close()

//注意 virtualname

# salt ‘*‘ saltutil.sync_returners

# salt ‘centos5‘ cmd.run ‘df -H‘ --return testmysql

mysql> select * from salt_returns\G

*************************** 1. row ***************************

fun: cmd.run

jid: 20140923164910093656

return: Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg_centos2-lv_root

19G  2.6G   16G  15% /

tmpfs                 981M     0  981M   0% /dev/shm

/dev/sda1             508M   79M  403M  17% /boot

id: centos5

success: True

full_ret: {"fun_args": ["df -H"], "jid": "20140923164910093656", "return": "Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg_centos2-lv_root

19G  2.6G   16G  15% /

tmpfs                 981M     0  981M   0% /dev/shm

/dev/sda1             508M   79M  403M  17% /boot", "retcode": 0, "success": true, "fun": "cmd.run", "id": "centos5"}

alter_time: 2014-09-23 16:49:10

时间: 2024-11-04 15:42:45

saltstack mysql returner的相关文章

saltstack部署returner [三]

saltstack部署returner感悟:大家有没有遇到过当salt的minion太多时候,每次查看执行结果都要看很久,而且屏幕都占满了.也不方便查看是否执行成功.这个时候saltsack的returner功能上场了.我们可以把执行的命令结果存入数据库,通过数据库查看就很方便了.不过在安装测试中遇到很多问题.这里要感谢成都运维群的运维@安,他帮我查到为什么不能写入数据库的原因,在这里感谢他.saltstack执行结果写入到mysql数据库配置  1.建数据库及表  #假设我们的数据库服务器为1

saltstack自定义returner之利用fluent+mysql进行结果收集

mysql表结构 自定义returner fluent采集 客户端配置 服务端配置 背景: salt自带的有很多可选的returner,但是都需要在minion做配置,我感觉这点挺操蛋,而且正好我们平台上在使用fluent做采集,于是就自定义一个reutren,然后用fluent采集,处理,入库 具体操作过程如下: mysql表结构 CREATE TABLE `fluent`; CREATE TABLE `salt_returns` ( `id` mediumint(9) NOT NULL AU

saltstack(七)返回值

一.自定义创建模块 在base目录下创建_modules目录,你自己编写的模块都可以存放在该目录下,当前目录结构下: 1 2 3 4 5 6 7 8 [[email protected]:]# tree -L 3 salt salt ├── etc ├── _grains │   ├── dmp_scribe.py │   └── zabbix_conf.py ├── _modules │   └── ip.py 通过上图可以看到已经创建了一个名为ip.py文件,看看相关内容: 1 2 3 4

V 9 saltstack (1)

salt是一个新的基础平台管理工具,2011-02-20诞生,创造者Thoms SHatch,起名salt原因生活中常见.易记,使用saltstack.com原因这个域名没有被注册,Because salt goes everywhere: 部署简单,只需花费很短时间即可运行起来,扩展性足以支持管理上万台server: 速度很快,毫秒级通信,server间完成数据传递足够快: 用python语言开发: 工作方式:Master/Minion(ZeroMQ),Masterless,Salt-SSH(

基于Salt Event系统构建Master端returner

前置阅读 环境说明 开工 前置配置 编写returner 测试 SaltStack 的 returner 是由minion端主动连接returner完成执行结果的存储, 在部分场景下并不能满足需求. 由于Salt底层已经构建了一套 Event系统, 所有的操作均会产生event. 因此基于Salt Event系统构建Master端returner成为一种可能. 之前已经完成了 SaltStack Event系统监听events测试, 本文将基于Salt Event系统构建Master端retur

SaltStack学习笔记

一.安装部署 实验环境: Server : 192.168.0.41 Client-1: 192.168.0.42 Client-2: 192.168.0.43 1.安装epel源. rpm -Uvh http://mirrors.sohu.com/fedora-epel/6Server/x86_64/epel-release-6-8.noarch.rpm 2. 服务端安装salt-master,客户端安装salt-minion 3. 修改客户端配置文件/etc/salt/minion 修改两个

SaltStack Mine

Salt Mine用于从minion端收集任意数据然后存储到Master端.这些数据可以通过调用salt.modules.mine模块来供其他minion访问 这些数据是在minion端收集然后发送到Master端,只有最近的数据才被维护.如果需要长期维护这些数据可以使用saltstack的 returner或者 the external job cache

运维管理平台实现与学习心得

经过一段时间的学习,写了一个简单的运维管理平台小项目,先看看啥样吧! 下面说明下具体实现: 软件架构:HTML+CSS+Jquery+Bootstrap+Ajax+Python2.7+Django1.9+SaltStack+MySQL 功能描述: 数据可视化:采用百度开源的ECharts绘图,通过Python脚本每分钟统计Nginx日志分析PV/UV量写到数据库. 资产管理:采用SaltStack Restful API二次封装调用收集主机配置信息入库,并提供增删改查. 主机批量管理:也是调用S

常用服务安装部署

学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环境: centos7 + vmware + xshell 即将登场的是: mysql(mariadb) redis python nginx saltstack MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险.