Saltstack中将执行结果存储到mysql数据库的两种方式

前言

在master端向minion端推送之后,minion端会保存推送信息24小时,可是为了日后便于查看推送的信息,我们应该将这些信息长期存储起来,而存放在数据库中是个不错的选择。

  • saltstack把执行的结果保存到mysql中,以便进行命令安全审计。
  • mysql负责存储数据,mysql-python负责收集数据
  • master需要安装mysql和MySQL-python,minion端安装MySQL-python。

实验环境

主机名(IP)服务
server1(172.25.254.1)master,mysql,MySQL-python(master_job_cache用到)
server2(172.25.254.2)minion ,MySQL-python
server3(172.25.254.3)minion,MySQL-python

把执行结果存储到mysql服务器

第一种配置方法
  • 当配置外部作业缓存时,数据像往常一样返回salt master上的缺省作业缓存,然后使用在salt minion上运行的 Salt returne模块将结果发送到外部作业缓存。

  • minion与master通信时将数据返回给master的同时,然后通过MySQL-python将数据返回给相应的数据存储系统。
    在这里插入图片描述

  • server1安装mariadb-server

[root@server1 pillar]# yum install mariadb-server -y
[root@server1 pillar]# yum install mariadb -y
[root@server1 pillar]# systemctl start mariadb
[root@server1 pillar]# systemctl enable mariadb
[root@server1 pillar]# mysql_secure_installation   #进行安全初始化
  • 注释掉文件的17行,否则后面会有保存,将文件导入数据库中。
[root@server1 ~]# mysql -p < test.sql    #下载test.sql文件,注释17行。导入
  • 登陆数据库,创建用户并授权。
MariaDB [(none)]> grant all on salt.* to salt@'%' identified by 'salt';    #授权
  • 修改server2端minion配置文件
修改server2的配置文件:
896 mysql.host: '172.25.11.1'    #取消注释并填入mysql数据库的信息
897 mysql.user: 'salt'
898 mysql.pass: 'salt'
899 mysql.db: 'salt'
900 mysql.port: 3306

[root@server2 mnt]# systemctl restart salt-minion   #修改完后重启minion。
  • 在server1测试:
[root@server1 ~]# salt server2 test.ping
MariaDB [salt]> select * from salt_returns;   #登陆数据库查看,发现数据已经记录在数据库中。
  • 查看缓存数据在系统中的位置。
[root@server1 master]# cd jobs/
[root@server1 jobs]# ls
1e  28  2a  35  4c  68  8e  92  9c  b9  cf  e2  ea
25  29  2e  4a  4d  7d  91  97  a5  be  dc  e4  ee
[root@server1 jobs]# pwd
/var/cache/salt/master/jobs
第二种配置方法

master_job_cache
实现master直连数据库,由master将数据同步给mysql
原理图如下:

在这里插入图片描述

优点:外部缓存系统只需要维护单个连接。这对数据库和类似系统是首选。
缺点:在Salt Master上增加了额外的负载。

这种方式只用在master端进行操作,需要在master端同时安装mysql与mysql-python。

  • 修改master端的配置文件,修改为本机的信息。
[root@server1 salt]# vim /etc/salt/master
1288 master_job_cache: mysql
1289 mysql.host: 'localhost'
1290 mysql.user: 'salt'
1291 mysql.pass: 'salt'
1292 mysql.db: 'salt'
1293 mysql.port: 3306
  • 登陆数据库给本地用户授权:
MariaDB [(none)]> grant all on salt.* to salt@'localhost' identified by 'salt';
[root@server1 ~]# mysql -usalt -psalt salt     #登陆测试
  • 重启服务,测试,此时有报错,查看日志,报错的原因是因为没有安装mysql-python。
[root@server1 ~]# systemctl restart salt-master
[root@server1 ~]# salt-key -L
[root@server1 ~]# salt server3 test.ping
[root@server1 ~]# cat /var/log/salt/master     #查看日至 报错的原因是因为没有安装mysql-python
  • 安装mysql-python,重启服务,再次查看日志。
[root@server1 ~]# yum search mysql
[root@server1 ~]# yum install MySQL-python.x86_64 -y
[root@server1 ~]# systemctl restart salt-master
[root@server1 ~]# cat /var/log/salt/master 
  • 执行测试命令,并登陆数据库中查看。
[root@server1 ~]# salt server3 test.ping
[root@server1 ~]# lsof -i :4505
[root@server1 ~]# salt server3 cmd.run hostname
[root@server1 ~]# salt server3 cmd.run df

MariaDB [(none)]> use salt;
MariaDB [salt]> select * from salt_returns;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值