使用saltstack中将结果存到mysql中的两种方式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44889616/article/details/99620946

一.存储执行结果

master推送信息给minion端,minion会保存24小时,有时为了查看数据我们可以将这些数据保存到mysql中。

  • saltstack把执行的结果保存到mysql中,以便进行命令安全审计
  • mysql负责存储数据,mysql-python负责收集数据
  • master需要安装mysql和MySQL-python,minion端安装MySQL-python

原理图:
在这里插入图片描述

minion与master通信时将数据返回给master的同时,然后通过MySQL-python将数据返回给相应的数据存储系统。

实验环境:

server1:172.25.31.1 master,mysql,MySQL-python(master_job_cache用到)
server2:171.25.31.2 minion ,MySQL-python
server3:172.25.31.3 minion ,MySQL-python

1.server1安装数据库,并进行授权登陆

[root@server1 ~]# yum install MySQL-python.x86_64 -y
[root@server1 ~]# yum install -y mariadb
[root@server1 ~]# yum install -y mariadb-server
[root@server1 ~]# systemctl start mariadb
[root@server1 ~]# mysql

在这里插入图片描述

2.server2上安装MYSQL-python 并修改salt的配置文件

[root@server2 ~]# yum install -y MySQL-python.x86_64
[root@server2 ~]# vim /etc/salt/minion
[root@server2 ~]# systemctl restart salt-minion

在这里插入图片描述
3.server1上导入数据库salt

[root@server1 ~]# vim test.sql 
文件内容:
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;

[root@server1 ~]# mysql < test.sql

3.测试server2的mysql返回是否正常
在这里插入图片描述4.测试:

[root@server1 ~]# salt server2 cmd.run 'df -h'

在这里插入图片描述
进入数据库查看
在这里插入图片描述
在这里插入图片描述

二.master_job_cache

由master将数据传给mysql,增加了master的负载
在这里插入图片描述
1.编辑server1的master配置文件,并重启服务

[root@server1 ~]# vim /etc/salt/master
[root@server1 ~]# systemctl restart salt-master

在这里插入图片描述
2.登陆数据库,为本地用户授权
在这里插入图片描述
在这里插入图片描述

3.执行命令,查看数据库

[root@server1 ~]# salt '*' cmd.run 'hostname'
[root@server1 ~]# mysql

在这里插入图片描述
在这里插入图片描述

在master端安装MYSQL-python并开启master_job_cacha模块配置,就可以同步所有minion的数据

猜你喜欢

转载自blog.csdn.net/weixin_44889616/article/details/99620946