Returners:

默认是标准输出到屏幕


当然可以输出到其他目标,如:

mysql

redis


这里说一下将Returners写入到Mysql

方法一:

在每个minion端安装软件包MySQL-python ,让每个minion主机自己把其返回的信息写入数据库

在每个minion端的主机主配置文件中添加如下内容:

tail    /etc/salt/minion

mysql.host: '192.168.124.1'   # Myslq Server 的IP地址

mysql.user: 'salt'

mysql.pass: 'salt'

mysql.db: 'salt'

mysql.port: 3306

重启 salt-minion 服务


在mysql server中配置salt相关的数据库和表

MariaDB [(none)]>CREATE DATABASE  `salt`

  DEFAULT CHARACTER SET utf8

  DEFAULT COLLATE utf8_general_ci;

MariaDB [(none)]>use  salt;

MariaDB [salt]>CREATE TABLE `jids` (

  `jid` varchar(255) NOT NULL,

  `load` mediumtext NOT NULL,

  UNIQUE KEY `jid` (`jid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

MariaDB [salt]>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;

MariaDB [salt]>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;

MariaDB [salt]>grant all on salt.* to salt@'%' identified by 'salt';   # 授权 salt 用户

MariaDB [salt]>exit;


验证:

在master端执行:

salt '*' test.ping --return mysql


之后在 Mysql Server 上查看表 salt_reture

MariaDB [(none)]> select * from salt.salt_returns\G

正常情况下会显示有内容


方法二:

只在master端安装软件包:MySQL-phyon ;在master端的主配置文件配置如下内容:


tail    /etc/salt/master

mysql.host: '192.168.124.1'   # Myslq Server 的IP地址

mysql.user: 'salt'

mysql.pass: 'salt'

mysql.db: 'salt'

mysql.port: 3306

master_job_cache: mysql

# 以上是设置返回值有matser写入mysql数据库内,

重启 salt-master 服务

测试方法:

1. 先把原来的表内容清空

MariaDB [(none)]> truncate table salt.salt_returns;   # 清空表内容

MariaDB [(none)]> select * from salt.salt_returns\G   # 确认表内无内容


2. 在master端直接正常执行

[root@master stats]# salt '*' cmd.run 'df -h'


3. 再在 Mysql Server 中查看表内容

MariaDB [(none)]> select * from salt.salt_returns\G