一、Job简介
- master在下发指令任务时,会附带上产生的jid。
- minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。
- 指令执行完毕将结果传送给master后,删除该临时文件。
二、Job cache
Job缓存默认保存24小时:
# vim /etc/salt/master
keep_jobs: 24
master端Job缓存目录:/var/cache/salt/master/jobs
三、把Job存储到数据库
1、安装数据库
yum install -y mariadb-server MySQL-python
systemctl start mariadb
注:salt-mysql官方文档:http://docs.saltstack.cn/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql
2、创建数据库
- 执行数据库初始化脚本:
mysql_secure_installation
- 导入数据模板:
vim add.sql
[root@server2 ~]# mysql < add.sql
新增了表salt
- 创建数据库授权:
3、方法一
将minions中的job存放到master一份,在存放到数据库一份:
- 在server2和server3上:
[root@server3 ~]# yum install -y MySQL-python.x86_64 # 安装mysql的接口
[root@server3 ~]# vim /etc/salt/minion
return: mysql
mysql.host: '172.25.254.51'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
- 测试:
salt server2 cmd.run hostname
运行结果被保存到数据库中:
对server3做相同操作:
server2和server3的数据都被写入数据库中:
4、方法二
minions的job存放在master一份,从master存放到数据库:
- 修改master端配置:
vim /etc/salt/master
##修改:
master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
- 重启salt-master服务:
systemctl restart salt-master
- 测试:
salt server2 cmd.run hostname
salt server3 cmd.run hostname
可以发现:server2和server3各写了两个数据进数据库,这是因为我们没有注释掉第一种方法,所以server2,server3会自己写入数据库一遍,再通过master写入数据库一遍。
- 注释掉方法一,再次测试:
server2,server3通过master,各往数据库中写入一个数据: