除了默认作业缓存之外,Salt还提供了两种额外的机制来将作业结果发送到其他系统(数据库,本地系统日志和其他系统):
- External Job Cache
- Master Job Cache
这两种机制之间的主要区别在于返回结果是来自Salt Master还是Salt Minion。
一.External Job Cache
External Job Cache原理:
配置外部作业缓存后,数据会像往常一样返回Salt Master上的默认作业缓存,然后使用Salt Minion上运行的Salt返回器模块将结果发送到外部作业缓存。
- 优点:存储数据时不会在Salt Master上增加额外负载。
- 缺点:每个Salt Minion都连接到外部作业缓存,这可能会导致大量连接。 还需要额外的配置才能在所有Salt Minions上获得返回者模块设置。
1.在server2上安装MYSQL-python
[root@server2 ~]# yum install -y MySQL-python.x86_64
2.在server1上安装mariadb-server
[root@server1 ~]# yum install -y mariadb-server
3.开启mariadb服务
[root@server1 ~]# systemctl start mariadb.service
4.进入数据库,授权:grant all on salt.* to salt@'%' identified by 'westos';
5.在server2上编辑/etc/salt/minion文件
[root@server2 ~]# vim /etc/salt/minion
mysql.host: '172.25.13.1'
mysql.user: 'salt'
mysql.pass: 'westos'
mysql.db: 'salt'
mysql.port: 3306
6.修改文件后重启minion
[root@server2 ~]# systemctl restart salt-minion
7.在server1上编辑add.sql文件(直接从官网上复制,将第17行删除)
8.导入数据库:
[root@server1 ~]# mysql < add.sql
9… 在server1上测试:
[root@server1 ~]# salt '*' test.ping --return mysql
10.查看是否存入数据库
- 查看所有的数据库:show databases;
- 进入到salt数据库:use salt;
- 查看salt_returns表:select * from salt_returns;
二.Master Job Cache
原理:
您可以配置主作业缓存以从Salt Master发送作业结果,而不是在每个Salt Minion上配置外部作业缓存。 在此配置中,Salt Minions像往常一样将数据发送到默认作业缓存,然后Salt Master使用在Salt Master上运行的Salt返回器模块将数据发送到外部系统。
- 优点:外部系统需要单个连接。 这对于数据库和类似系统来说是首选。
- 缺点:在Salt Master上增加额外负载。
1.在server1上编辑配置文件:
[root@server1 ~]# vim /etc/salt/master
master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'westos'
mysql.db: 'salt'
mysql.port: 3306
2.进入数据库: mysql
授权:grant all on salt.* to salt@'localhost' identified by 'westos';
3.直接登陆salt数据库: mysql -u salt -p salt查看是否成功;
4. 安装MySQL-python
[root@server1 ~]# yum install -y MySQL-python
5.重新开启服务
[root@server1 ~]# systemctl restart salt-master
6.测试
[root@server1 ~]# salt '*' test.ping
7.数据库查看