04_Returners组件:返回jobid的结果到mysql
1、前期调研
0、环境
salt 2019
python3.6 很重要
[root@IP ~]# salt-call --versions-report
Salt Version:
Salt: 2019.2.0 Dependency Versions:
cffi: Not Installed
cherrypy: 5.6.0
dateutil: Not Installed
docker-py: Not Installed
gitdb: Not Installed
gitpython: Not Installed
ioflo: Not Installed
Jinja2: 2.8.1
libgit2: Not Installed
libnacl: Not Installed
M2Crypto: Not Installed
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.5.6
mysql-python: 1.4.6
pycparser: Not Installed
pycrypto: 2.6.1
pycryptodome: Not Installed
pygit2: Not Installed
Python: 3.6.8 (default, Aug 7 2019, 17:28:10)
python-gnupg: Not Installed
PyYAML: 3.11
PyZMQ: 15.3.0
RAET: Not Installed
smmap: Not Installed
timelib: Not Installed
Tornado: 4.4.2
ZMQ: 4.1.4 System Versions:
dist: centos 7.3.1611 Core
locale: UTF-8
machine: x86_64
release: 3.10.0-514.el7.x86_64
system: Linux
version: CentOS Linux 7.3.1611 Core [root@IP ~]#
[root@IP ~]# find / -name salt
/run/salt
/etc/logrotate.d/salt
/etc/salt
/var/lib/mysql/salt
/var/log/salt
/var/cache/salt
/usr/bin/salt
/usr/lib/python3.6/site-packages/salt
/home/sre/soms/media/salt
/srv/salt
1、相关文档
官方文档 https://docs.saltstack.com/en/latest/ref/returners/index.html#full-list-of-returners
对应中文翻译
Salt Returners-作业结果数据返回器的使用与定制开发方法 https://blog.csdn.net/watermelonbig/article/details/90634759
【SaltStack官方版】—— returners——返回器 https://www.cnblogs.com/zuoyang/p/9220647.html
--return mysql的3种方法
https://www.cnblogs.com/nmap/p/6219816.html
https://blog.51cto.com/q2012/2062953
https://www.jianshu.com/p/a655447ad7c6
https://www.jianshu.com/p/2b013833ab39
https://blog.csdn.net/qq_42303254/article/details/88998744
某些error问题解决:
https://blog.51cto.com/molewan/1899474
升级版本解决此问题:http://www.dongcoder.com/detail-656041.html
2、jobid问题
1、异步执行,maseter返回jobid,前端何时,去查看该jobid的结果。此时如果有个回调函数就更好了。
2、研究salt发现 --return 模块,可以自动把异步执行的结果写入数据库,这样就不需要查询了,直接从数据库里面取值即可。
参考
https://www.cnblogs.com/evilliu/articles/6137336.html

1、centos7.3,salt2019,python3.6下的安装
1、安装MySQL
安装参考 https://www.cnblogs.com/venicid/p/11956731.html
成功

2、安装MySQLdb模块
安装参考 https://www.cnblogs.com/venicid/p/11950519.html
对于,该环境来说。此处必须指定位置安装,MySQLdb与salt包位置,一样,
详情请见 https://www.cnblogs.com/venicid/p/11958498.html
[root@IP salt]# pip3 install --target=/usr/lib/python3.6/site-packages/ mysql-client
成功

2、建立数据库表
官网:https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html
建立三个表
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci; USE `salt`; --
-- Table structure for table `jids`
-- 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;
CREATE INDEX jid ON jids(jid) USING BTREE; --
-- Table structure for table `salt_returns`
-- 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; --
-- Table structure for table `salt_events`
-- DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
授权
mysql> grant all on salt.* to salt@"%" identified by "XXXXX";
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.11 sec)
成功

3、master配置
[root@IP ~]# vim /etc/salt/master
mysql.host: '192.168.23.21'
mysql.user: 'salt'
mysql.pass: 'XXXXX'
mysql.db: 'salt'
mysql.port: 3306
return: mysql
master_job_cache: mysql
重启master
[root@IP ~]# systemctl restart salt-master
4、执行salt命令,查看
先查看下

同步执行下
[root@IP ~]# salt "192.168.23.21" test.ping
192.168.23.21:
True

异步执行下,5个都存在
[root@IP ~]# salt --async \* cmd.run "hostname -I"
Executed command with job ID: 20191129210622671777

5、安装ERROR解决
https://www.cnblogs.com/venicid/p/11958498.html
https://www.cnblogs.com/venicid/p/11957562.html
04_Returners组件:返回jobid的结果到mysql的更多相关文章
- 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库
需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...
- Redis整合MySQL和MyCAT分库组件(来源是我的新书)
MyCAT是一个开源的分布式数据库组件,在项目里,一般用这个组件实现针对数据库的分库分表功能,从而提升对数据表,尤其是大数据库表的访问性能.而且在实际项目里,MyCAT分库分表组件一般会和MySQL以 ...
- MySQL时间差返回月个数
select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m')) 1. MySQL 为日期增加一个时间间隔: ...
- [MySQL Reference Manual] 18 复制
18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...
- 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)
第十二章 mysql ORM介绍 2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- windows系统下安装MySQL
可以运行在本地windows版本的MySQL数据库程 序自从3.21版以后已经可以从MySQL AB公司获得,而且 MYSQL每日的下载百分比非常大.这部分描述在windows上安装MySQL的过程. ...
- Mysql的存储过程(以Mysql为例进行讲解)
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...
- mysql 存储过程详解 存储过程
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...
随机推荐
- 多线程-Task、await/async
Task创建无返回值 Task是.netframwork4.0重新分装的多线程类.原因以前的多线程(thread threadpool)不好用.(.net framwork也是的发展的,现在的EF,刚 ...
- C#传递参数调用exe程序
今天公司让我把Winform程序里的一块单独成一个exe文件,从原程序中打开新的exe程序,这就涉及到参数的传递,故来记录下传递参数到exe程序的方式 第一种方式 首先在程序A中添加引用using S ...
- java输入输出 -- Java NIO之选择器
一.简介 前面的文章说了缓冲区,说了通道,本文就来说说 NIO 中另一个重要的实现,即选择器 Selector.在更早的文章中,我简述了几种 IO 模型.如果大家看过之前的文章,并动手写过代码的话.再 ...
- ajax与jsonp中的几个封装函数
首先是ajax里的get 在页面上添加几个标签用作测试 <body> <input type="text" id="user"> < ...
- golang中switch用法细节
1. switch穿透-fallthrough, 如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透,默认只穿透一层 2. Type Switch: s ...
- WUSTOJ 1275: 男神的逆袭(Java)
1275: 男神的逆袭 题目 计算两个日期相差的天数.更多内容点击标题. 分析 下面说一下我的思路(自己写的,无扩展性): 给定一个日期,首先计算这个日期是这一年的第多少天. 给定两个日期,直 ...
- 读取一整行,保留空白,直到遇到换行符:getline()
- Uwl.Admin开源框架(一)
1.前言 作为一个忠实的软粉,一直期待微软出跨平台,一直在等待.Net Core,因为刚毕业对于.Net的很多东西不是很熟知,就开始了.Net Core的摸索,一路上坎坎坷坷,对于新技术一直很期待,就 ...
- Asp.Net Core 存储Cookie 的问题
Asp.Net Core 2.1生成的项目模板默认实现了<欧洲常规数据保护法规 (GDPR)>支持.这就使得我们的程序要想成功的存储除了用户身份以外的cookie通常是需要用户同意的. 3 ...
- java封装数据类型——Integer 缓存策略验证
上一篇学习 Integer 类型源码,知道了它使用缓存策略,默认对 [-128, 127] 范围的对象进行类加载时自动创建缓存. Integer 源码学习:https://www.cnblogs.co ...