saltstack的每次推送信息都会在相应的minion中保存24小时,但是为了之后进行命令安全审计,我们需要将这些信息长期的保存起来,我么可以将信息保存到mysql中,这里会出现两个角色,mysql负责存储数据,mysql-python负责收集数据,我们在master中安装mysql与mysql-python,在所有的minion中安装mysql-python,这里介绍两种方法:
方法一
1、在master中安装数据库
yum install mysql-server -y
2、登陆数据库并对salt用户进行授权
grant all on salt. to salt@‘172.25.66.%’ identified by ‘Guodong+0306’*
3、在minion端(server2)安装MySQL-python
yum install MySQL-python -y
4、编辑minion的配置文件/etc/salt/minion
vim /etc/salt/minion
810 return:
811 - mysql
812 - hipchat
813 - slack
814 mysql.host: '172.25.66.1'
815 mysql.user: 'salt'
816 mysql.pass: 'Guodong+0306'
817 mysql.db: 'salt'
818 mysql.port: '3306'
819
重启minion
5、在master的数据库中创建数据库与数据表,我们可以参考官方文档,复制相关内容到文件中,然后导入数据库即可。
https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html
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;
执行:mysql -uroot -pwestos < test.sql
6、向minion中推送命令,并将信息返回到数据库
salt ‘server2’ cmd.run ‘df -h’ --return mysql
7、在数据库中salt库的salt_returns表中查看存储的信息
方法二
这种方法所有的操作都在master中进行,这种方法需要在master中同时安装mysql与MySQL-python
1、在master中安装MySQL-python
yum install MySQL-python -y
2、在数据库中对本地用户进行授权,因为所有操作均在master中,因此只需要对localhost进行授权即可
grant all on salt. to salt@localhost identified by ‘Guodong+0306’*
3、编辑master的配置文件
vim /etc/salt/master
1057 #return: mysql
1058 master_job_cache: mysql
1059 mysql.host: '172.25.66.1'
1060 mysql.user: 'salt'
1061 mysql.pass: 'Guodong+0306'
1062 mysql.db: 'salt'
1063 mysql.port: 3306
重启master
4、使用salt对任意一个minion推送命令
salt ‘server3’ cmd.run 'df -h’
5、在数据库中进行查看