聊聊returner(一)

最近在看returners,其实就是个返回模块。我们一般执行命令的时候,结果会打印在屏幕上,returner就是把结果重定向其他地方,比如文件、数据库、nosql等等。

saltstack有很多自带的returners模块,比如redis,mysql,sqlite3等等。我这里以mysql为例子。

需要MySQLdb python模块和mysql server。

首先需要配置数据库。saltstack源码里有写明怎么操作

CREATE DATABASE  `salt`

DEFAULT CHARACTER SET utf8

DEFAULT COLLATE utf8_general_ci;

USE `salt`;

DROP TABLE IF EXISTS `jids`;

CREATE TABLE `jids` (

`jid` varchar(255) NOT NULL,

`load` mediumtext NOT NULL,

UNIQUE KEY `jid` (`jid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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;

授予权限。

grant all privileges on salt.* to [email protected]‘192.168.110.%‘ identified by ‘salt‘;

配置minion

mysql.conf内容如下

mysql.host: ‘192.168.110.132‘

mysql.user: ‘salt‘

mysql.pass: ‘salt‘

mysql.db: ‘salt‘

mysql.port: 3306

salt-cp ‘*‘ mysql.conf /opt/app/salt/etc/minion.d/mysql.conf

salt ‘*‘ cmd.run ‘/opt/app/salt/admin/salt-minion restart‘

执行前

现在使用salt操作下

salt ‘*‘ test.ping --return mysql

有两条记录。

因为这里只有两台机器。如图

这样就可以方便以后统计数据,统计哪些没有成功,哪些成功。

但是呢,有个问题,就是使用系统自带的returner,需要修改配置文件,重启minion。如果你已经部署线上使用了,代价挺大的。

那么有什么方法可以不用修改配置,你要知道saltstack非常灵活,只有你想不到的,没有salt办不到的。前面event文章里提到过,event可以用来自定义returners。

关于结合event自定义returner可以参考下面的文章,这里不再叙述。

但是呢,又有个问题,以上的returners适合于master-minion的小架构。如果salt架构比较大,使用到了master-syndic-minion架构,master和minion是不能通信的,此时咋办。

这个时候还是要结合event来处理,在master-syndic之间写个c/s结构的程序。

这个下篇文章再聊,先写到这里。

参考文章:

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

http://www.saltstack.cn/projects/cssug-kb/wiki/Saltstack_master_retuner_over_event_system

聊聊returner(一),布布扣,bubuko.com

时间: 2024-10-13 15:08:34

聊聊returner(一)的相关文章

聊聊returner(二)

关于returner的基础使用请参考returner文章. 继续上面的话题,这里编写c/s端来采集数据. 继续下面话题之前,你需要了解event.returner.zmq协议框架. 步骤: 1.在syndic上运行客户端程序,用来收集数据,其实就是master-minion架构. 2.收集的数据首先写入本地log中,其次发送到顶级master端. 3.顶级master运行服务端程序,用来接收数据,并写入本地数据库. 4.确保数据不丢失,采用zmq协议框架,使用REQ/REP套接字. 先说说客户端

聊聊基于Lucene的搜索引擎核心技术实践

最近公司用到了ES搜索引擎,由于ES是基于Lucene的企业搜索引擎,无意间在"聊聊架构"微信公众号里发现了这篇文章,分享给大家. 请点击链接:聊聊基于Lucene的搜索引擎核心技术实践

聊聊分布式事务

聊聊分布式事务 2017-04-15 数据库开发 (点击上方公众号,可快速关注) 作者:员海滨 nickid.cn/2017/04/分布式事务/ 如有好文章投稿,请点击 → 这里了解详情 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性. 什么是事

从DT时代云栖大会聊聊恒生电子

从IT到DT,除了HOMS和配资,本文结合互联网金融的背景,帮助读者对恒生电子600570了解更多. 马云在2015杭州·云栖大会Computing Conference发表致辞时多次强调DT(Data Technology)时代.他说DT最了不起的是利他精神,数据将成为最核心的资源,凭借阿里云扶持大众创业,寄望创意的商业化热潮重新激发经济引擎的活力,从产业升级和改革的思想上都与国家领导层的想法高度契合,难怪这次大会有史以来规格最高,政府主管部门官员也深度参与其中. 结合本届云栖大会的主题:"互

聊聊程序员的软技能

聊聊程序员的软技能 最近读到一本有意思的书,叫<软技能-代码之外的生存指南>,这是一本相当跨界的书,内容除了介绍了技术人的职业发展之外,还涉及了自我的营销.学习方法.生产力.健身.甚至还包括理财.应该说,每一个章节都是非常有意思的,值得每一个程序员学习的内容. <软技能>一书的内容分为以上这些章节,我也按这些章节讲讲自己的感悟吧. 职业 职业一章介绍了程序员的面试,晋升,离职,远程办公,自由职业,以及创业.不管做什么事情,专业性总是第一要点.就像书中写的那样,我们应该成为「专业人士

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数] 较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSour

【转载】聊聊高并发系统之降级特技

原文:聊聊高并发系统之降级特技 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流.之前已经有一些文章介绍过缓存和限流了.本文将详细聊聊降级.当访问量剧增.服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务.系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级.本文将介绍一些笔者在实际工作中遇到的或见到过的一些降级方案供大家参考. 降级的最终目的是保证核心服务可用,即使是有损的.而且有些服务是无法降级的(如加入购

iOS: 聊聊 Designated Initializer(指定初始化函数)

iOS: 聊聊 Designated Initializer(指定初始化函数) 一.iOS的对象创建和初始化 iOS 中对象创建是分两步完成: 分配内存 初始化对象的成员变量 我们最熟悉的创建NSObject对象的过程: 苹果官方有一副图片更生动的描述了这个过程: 对象的初始化是一个很重要的过程,通常在初始化的时候我们会支持成员变量的初始状态,创建关联的对象等.例如对于如下对象: 1 @interface ViewController : UIViewController 2 3 @end 4

聊聊移动端跨平台开发的各种技术

介绍 最近出现的 React Native 再次让跨平台移动端开发这个话题火起来了,曾经大家以为在手机上可以像桌面那样通过 Web 技术来实现跨平台开发,却大多因为性能或功能问题而放弃,不得不针对不同平台开发多个版本. 但这并没有阻止人们对跨平台开发技术的探索,毕竟谁不想降低开发成本,一次编写就处处运行呢?除了 React Native,这几年还出现过许多其它解决方案,本文我将会对这些方案进行技术分析,供感兴趣的读者参考. 为了方便讨论,我将它们分为了以下 4 大流派: Web 流:也被称为 H