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的更多相关文章

  1. 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库

    需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...

  2. Redis整合MySQL和MyCAT分库组件(来源是我的新书)

    MyCAT是一个开源的分布式数据库组件,在项目里,一般用这个组件实现针对数据库的分库分表功能,从而提升对数据表,尤其是大数据库表的访问性能.而且在实际项目里,MyCAT分库分表组件一般会和MySQL以 ...

  3. MySQL时间差返回月个数

    select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m')) 1. MySQL 为日期增加一个时间间隔: ...

  4. [MySQL Reference Manual] 18 复制

    18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...

  5. 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)

    第十二章  mysql ORM介绍    2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...

  6. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  7. windows系统下安装MySQL

    可以运行在本地windows版本的MySQL数据库程 序自从3.21版以后已经可以从MySQL AB公司获得,而且 MYSQL每日的下载百分比非常大.这部分描述在windows上安装MySQL的过程. ...

  8. Mysql的存储过程(以Mysql为例进行讲解)

       我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...

  9. mysql 存储过程详解 存储过程

    mysql存储过程详解 1.      存储过程简介         我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...

随机推荐

  1. K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署

    摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy ...

  2. Oracle数据库——ROWNUM

    Oracle数据库--ROWNUM 前言   刚学到了ROWNUM的用法,网上一搜,结果发现了有很多帖子,写的都很全.本着好记性不如烂笔头的原则,我还是决定自己手打一遍,当然下面也附上了我参考的链接. ...

  3. (转)从0移植uboot (四) _点亮调试LED

    这一节主要讨论1个问题:点灯.点灯是实际开发中,特别是裸板开发中常见的调试手段,相当于主机开发中漫天飞舞的printf/printk.为了追踪程序的现场执行情况,很多时候我们都使用点一个灯的方法来进行 ...

  4. poj 3253 哈夫曼贪心

    http://poj.org/problem?id=3253 题意: FJ需要修补牧场的围栏,他需要 N 块长度为 Li 的木头(N planks of woods).开始时,FJ只有一块无限长的木板 ...

  5. (八)CXF之用spring添加拦截器

    一.案例 本章案例是基于CXF之自定义拦截器基础之上改造的,目的是在服务端中用spring添加拦截器 配置web.xml <?xml version="1.0" encodi ...

  6. 【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题

    原文:[Transact-SQL]SQL Server自动把left join自动转化为inner join.以及关联时的数据重复问题 1.SQL Server自动把left join自动转化为inn ...

  7. Visual Studio 开发大量 JavaScript 代码项目程序崩溃的解决方案

    最近公司做新项目,基于 Bootstrap.AngularJS 和 kendo 开发一套后台的管理系统,在项目中使用了大量的 JavaScript 文件,这两天 Visual Studio 2015 ...

  8. ubantu18.04 配置nginx与uwsgi(前后端分离)

    ubantu18.04 配置nginx与uwsgi   一.首先先安装nginx静态服务 先更新 sudo apt-get update 1.安装gcc g++的依赖库 sudo apt-get in ...

  9. 两个重叠的div做前后翻转

    当需要做一个翻转卡片式的div时候,需要两个div的大小等大例如: 画出两个等大的div后,将他们重叠 图中的两个div做了重叠,做重叠时候用的属性是 position: absolute; 并且需要 ...

  10. 简单注册表单--HTML练手项目3【Table】

    [本文为原创,转载请注明出处] 技术[HTML]   布局[Table] 步骤1  划分table布局 步骤2 填充内容 文本框+密码框+单选框+复选框+多行文本域+按钮 <input> ...