一.存储执行结果
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的数据