saltstack处理xml文件_saltstack部署returner [三]
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 [三]相关推荐
- Tomcat xml文件的部署失败问题解决
关于tomcat Catalina下localhost中用xml文件自定义部署路径失败的问题 问题 解决方法 问题 系统:win10 tomcat版本:8.0.50 在某视频网站学习tomcat部署时 ...
- 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )
文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...
- [转]AndroidManifest.xml文件详解
转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...
- XML文件的数据抽取
目录 一.XML文件介绍 二.XML文件的主要用途 三.案例介绍 数据准备 四.案例实现 1.建立转换 2.配置控件 3.保存运行转换 一.XML文件介绍 XML是一种可扩展标记语言,也是一种元标记语 ...
- 打包tomcat没有xml文件_Spring Boot 项目打包 War 并部署到 Tomcat
之前使用 SpringBoot 所做的开发,都是将项目打包成 Jar 的,但是如果是作为一个 Web 项目,最好是将项目打包成 War. 1. Jar 包和 War 包的区别 1.概念 jar 包:J ...
- Maven基础(三)Maven仓库和settings.xml文件配置
一.Maven仓库的分类 Maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A.项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在 ...
- mybatis入门(三)之Mapper XML 文件
转载自 mybatis Mapper XML 文件 Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单 ...
- linux打jar包xml文件,springboot打jar包部署外置配置文件
一.读取配置文件的优先级 默认: Jar包同级目录的config目录 Jar包同级目录 classPath(即resources目录)的config目录 classpath目录 最高优先级的方式是项目 ...
- xml文件的三种解析方式 DOM SAM PULL
<?xml version="1.0" encoding="UTF-8"?> <root><student id="1& ...
- web.xml文件中的web-app元素 部署
[转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...
最新文章
- Android之linux基础教学之七 中断下半部之软中断
- 化零为整WCF(14) - 事务(Transaction)
- thinkphp5 异步调用方法_thinkphp5 swoole 执行异步任务
- ie 调用java的时候报错,调用javabean的非常郁闷的异常。
- malloc/free 和 new/delete的联系和区别
- git add 命令的一个习惯用法:逐个挑选改动
- Django和SQLAlchemy,哪个Python ORM更好?
- (DT系列四)驱动加载中, 如何取得device tree中的属性
- Mysql实战之高可用HMA
- Thingsboard 3.1.0 - 规则链:转换数据结构
- win7连接共享打印机时安装驱动程序出现0x00000bcb错误
- 创业感悟:低调务实是创业者最可贵的精神
- Format函数详解
- 公网与私网地址转换——NAT技术的使用小技巧,超简单!!!
- HTML5 Canvas 绘制加拿大枫叶旗
- 第2章 初学 emWin 的准备工作及其快速上手
- 服务器c盘logs文件夹,Win10系统Logs文件夹有什么作用Logs文件夹可以删除吗
- 在ubuntu上显示 电脑 、垃圾桶、文件夹等图标
- Mac OS X 工具技巧:一文搞定个性化命令行窗口(iTerm2 + zsh + oh-my-zsh 配置Powerline风格)
- 台式机开机无logo显示直接进入欢迎界面,无法进入bios
热门文章
- Character类的常用方法
- java string 深拷贝_探讨java深拷贝
- mysql msvcp140.dll修复_丢失msvcp140.dll怎么办
- ERD Commander 2005 使用教程
- Redis主从复制原理
- 移动端H5控制台调试(手机web页面控制台调试)
- linux跨平台通信软件,下载:跨平台即时通信工具Pidgin 2.7.5
- 问卷设计一:问卷题目哪些有类型和注意要点?
- 打开Adobe Premiere Pro提示“由于找不到msvcp110.dll,无法继续执行代码。重新安装程序可能会解决此问题”。【方法适用于几乎所有dll文件丢失时】
- Unity Shader :实现漫反射与高光反射