在server1(master)端向minion端推送之后,minion端会保存推送信息24小时,可是为了日后便于查看推送的信息,我们应该将这些信息长期存储起来,而存放在数据库中是个不错的选择,现在我们用两种方法来存放,后者较为常用:
server1为master
server2,3,4为minion
方法一:
1.在server1(master)上安装数据库
yum install -y mysql-server
2.登陆数据库并对salt用户授权
grant all on salt.* to salt@'172.25.1.%' identified by 'jay';
3.在要备份的minion端(sevrer2)安装MySQL-python
yum install MySQL-python -y
4.配置server2的minion文件
810 #return:
811 # - mysql
812 # - hipchat
813 # - slack
814 mysql.host: '172.25.1.1' # mysql数据库所在主机(master)
815 mysql.user: 'salt' # 登陆数据库的用户
816 mysql.pass: 'jay' # salt用户密码
817 mysql.db: 'salt' # 存放推送信息的数据库
818 mysql.port: 3306
重新打开minion:/etc/init.d/salt-minion restart
5.在server1端的mysql数据库中导入数据:
mysql < test.sql
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;
6.在sever1端向server2推送,在数据库的salt数据库salt_returns表中查看
salt 'server2' test.ping --return mysql # 推送ping的命令并将结果返回mysql数据库
方法二:
所有的操作均在server1(master)中操作,mysql-python也安装在server1上
1.在server1端安装MySQL-python
yum install MySQL-python
2.在数据库中对本地localhost用户授权(数据库mysql饥饿python模块均在server1端,所以只用对localhost用户授权就行)
grant all on salt.* to salt@'localhost' identified by 'jay';
3.编辑server1端的master文件
#return: mysql
master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'jay'
mysql.db: 'salt'
mysql.port: 3306
4.在server1上向server2或3或4上推送salt server3 cmd.run ‘df -h’
5.在数据库中查看