saltstack部署returner

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

saltstack执行结果写入到mysql数据库配置

1.建数据库及表

#假设我们的数据库服务器为192.168.3.206,也可以在master上面安装一个数据库。

进入192.168.3.206数据库上面操作如下:

#建数据库

CREATE DATABASE  salt

DEFAULT CHARACTER SET utf8

DEFAULT COLLATE utf8_general_ci;

#打开数据库

use salt

#新建表结构

CREATE TABLE `salt_returns` (

`fun` varchar(50) NOT NULL,

`start_time` varchar(255) NOT NULL,

`jid` varchar(255) NOT NULL,

`return` mediumtext NOT NULL,

`minion_id` varchar(255) NOT NULL,

`order` varchar(255) NOT NULL,

`success` varchar(10) NOT NULL,

KEY `minion_id` (`minion_id`),

KEY `jid` (`jid`),

KEY `fun` (`fun`),

KEY `jid_success` (`jid`,`success`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#建权限

use mysql

GRANT ALL PRIVILEGES ON salt.* TO 'salt'@'192.168.3.%' IDENTIFIED BY 'salt_pass';

#这里只允许192.168.3网段连接数据库.用户为salt密码为salt_pass

2.安装MySQLdb模块

在minion上面操作如下:

注意:我的所有minion都是用的/usr/bin/python2.6 /usr/bin/salt-minion -d 这种方式启动的.

他是执行的/usr/bin/python2.6这个python文件,系统本身还存在一个python 2.4.3版本,要想

minion操作数据库.我们以后执行python的时候,全部要用/usr/bin/python2.6这个命令.不然会报错.

2.1.下载setuptools

http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c8.tar.gz

cd /root/soft

tar -zxf setuptools-0.6c8.tar.gz

cd setuptools-0.6c8

/usr/bin/python2.6 setup.py build

/usr/bin/python2.6 setup.py install

2.2.下载:MySQL-python

yum -y install mysql-devel libxml2 libxml2-dev libxslt* zlib gcc openssl python26-mysqldb python26-devel  #安装这些依赖包,不然要报错.

cd /root/soft

unzip MySQL-python-1.2.5.zip

cd MySQL-python-1.2.5

/usr/bin/python2.6 setup.py build

/usr/bin/python2.6 setup.py install

2.3.测试模块

cd /usr/local

/usr/bin/python2.6 -c 'import MySQLdb'

#如果没有报错表示正常.测试以前一定不要在MySQL- python-1.2.5这个目录测试,会有冲突的.

可以cd到其他目录测试.我这边测试以前是先cd /usr/local目录.

3.mysql_return模块编写

在master上面操作如下:

3.1编写mysql_return.py文件

vim /srv/salt/_returners/mysql_return.pyimport MySQLdb,json,time

__virtualname__ = "mysql_return"

def __virtual__():

return __virtualname__

def returner(ret):

MysqlConn=MySQLdb.connect(host='192.168.3.206',user='salt',passwd='salt_pass',db='salt',charset="utf8")

MysqlCursor=MysqlConn.cursor()

SaltSql="insert into salt_returns values (%s,%s,%s,%s,%s,%s,%s)" % (str(json.dumps(ret['fun'])),"'"+str(time.strftime("%F %T"))+"'",str(json.dumps(ret['jid'])),"'"+str(json.dumps(ret['return']))+"'",str(json.dumps(ret['id'])),"'"+str(json.dumps(ret['fun_args']))+"'","'"+str(json.dumps(ret['success']))+"'")

try:

MysqlCursor.execute(SaltSql)

except:

SaltSql="insert into salt_returns values (%s,%s,%s,%s,%s,%s,%s)" % (str("false"),str("false"),str("false"),"'"+str(time.strftime("%F %T"))+"'",str("false"),str("false"),"'"+str("false")+"'")

MysqlCursor.execute(SaltSql)

MysqlConn.commit()

MysqlCursor.close()

MysqlConn.close()

#备注:这里的IP是数据库IP及连接salt的用户和密码

3.2同步returner到所有minion机器

salt '*' saltutil.sync_returners

web100:

- returners.mysql_return

web101:

- returners.mysql_return                       #看到左边信息说明模块同步成功

3.3执行命令查看结果

salt "*" cmd.run "hostname" --return=mysql_return

3.4进入192.168.3.206数据库上面操作如下:

mysql -u root -p123

mysql> use salt

mysql> select * from salt_returns;

+-----------+---------------------+----------------------+--------------+-----------+--------------+---------+

| fun       | start_time          | jid                  | return       | minion_id | order        | success |

+-----------+---------------------+----------------------+--------------+-----------+--------------+---------+

| cmd.run   | 2014-07-25 10:37:29 | 20140725103729630158 | "srv100.com" | web100    | ["hostname"] | true    |

| cmd.run   | 2014-07-25 10:37:29 | 20140725103729630158 | "srv101.com" | web101    | ["hostname"] | true    |注:看到数据库里面有记录,说明执行日志写入数据库成功.

saltstack处理xml文件_saltstack部署returner [三]相关推荐

  1. Tomcat xml文件的部署失败问题解决

    关于tomcat Catalina下localhost中用xml文件自定义部署路径失败的问题 问题 解决方法 问题 系统:win10 tomcat版本:8.0.50 在某视频网站学习tomcat部署时 ...

  2. 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )

    文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...

  3. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

  4. XML文件的数据抽取

    目录 一.XML文件介绍 二.XML文件的主要用途 三.案例介绍 数据准备 四.案例实现 1.建立转换 2.配置控件 3.保存运行转换 一.XML文件介绍 XML是一种可扩展标记语言,也是一种元标记语 ...

  5. 打包tomcat没有xml文件_Spring Boot 项目打包 War 并部署到 Tomcat

    之前使用 SpringBoot 所做的开发,都是将项目打包成 Jar 的,但是如果是作为一个 Web 项目,最好是将项目打包成 War. 1. Jar 包和 War 包的区别 1.概念 jar 包:J ...

  6. Maven基础(三)Maven仓库和settings.xml文件配置

    一.Maven仓库的分类 Maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A.项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在 ...

  7. mybatis入门(三)之Mapper XML 文件

    转载自   mybatis Mapper XML 文件 Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单 ...

  8. linux打jar包xml文件,springboot打jar包部署外置配置文件

    一.读取配置文件的优先级 默认: Jar包同级目录的config目录 Jar包同级目录 classPath(即resources目录)的config目录 classpath目录 最高优先级的方式是项目 ...

  9. xml文件的三种解析方式 DOM SAM PULL

    <?xml version="1.0" encoding="UTF-8"?> <root><student id="1& ...

  10. web.xml文件中的web-app元素 部署

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

最新文章

  1. Android之linux基础教学之七 中断下半部之软中断
  2. 化零为整WCF(14) - 事务(Transaction)
  3. thinkphp5 异步调用方法_thinkphp5 swoole 执行异步任务
  4. ie 调用java的时候报错,调用javabean的非常郁闷的异常。
  5. malloc/free 和 new/delete的联系和区别
  6. git add 命令的一个习惯用法:逐个挑选改动
  7. Django和SQLAlchemy,哪个Python ORM更好?
  8. (DT系列四)驱动加载中, 如何取得device tree中的属性
  9. Mysql实战之高可用HMA
  10. Thingsboard 3.1.0 - 规则链:转换数据结构
  11. win7连接共享打印机时安装驱动程序出现0x00000bcb错误
  12. 创业感悟:低调务实是创业者最可贵的精神
  13. Format函数详解
  14. 公网与私网地址转换——NAT技术的使用小技巧,超简单!!!
  15. HTML5 Canvas 绘制加拿大枫叶旗
  16. 第2章 初学 emWin 的准备工作及其快速上手
  17. 服务器c盘logs文件夹,Win10系统Logs文件夹有什么作用Logs文件夹可以删除吗
  18. 在ubuntu上显示 电脑 、垃圾桶、文件夹等图标
  19. Mac OS X 工具技巧:一文搞定个性化命令行窗口(iTerm2 + zsh + oh-my-zsh 配置Powerline风格)
  20. 台式机开机无logo显示直接进入欢迎界面,无法进入bios

热门文章

  1. Character类的常用方法
  2. java string 深拷贝_探讨java深拷贝
  3. mysql msvcp140.dll修复_丢失msvcp140.dll怎么办
  4. ERD Commander 2005 使用教程
  5. Redis主从复制原理
  6. 移动端H5控制台调试(手机web页面控制台调试)
  7. linux跨平台通信软件,下载:跨平台即时通信工具Pidgin 2.7.5
  8. 问卷设计一:问卷题目哪些有类型和注意要点?
  9. 打开Adobe Premiere Pro提示“由于找不到msvcp110.dll,无法继续执行代码。重新安装程序可能会解决此问题”。【方法适用于几乎所有dll文件丢失时】
  10. Unity Shader :实现漫反射与高光反射