二、Job管理
master下发指令任务后,会附带上产生的jid.
minion在接受到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于执行过程中master查看当前任务的执行情况。
指令执行完毕将结果传递给master后,删除该临时文件。
[root@server1 keepalived]# cd /var/cache/salt/master/jobs
job默认缓存时间:24小时
[root@server1 master]# vim /etc/salt/master
#keep_jobs: 24
master端job缓存目录:
/var/cache/salt/master/jobs
1、直接配置minion端,还可以将发送给minion端的数据发送到数据库
docs.saltstack.cn/topics/jobs/external_cache.html#external-master-cache
(1)配置数据库-和master端放在一起
[root@server1 jobs]# yum install -y mariadb-server
[root@server1 yum.repos.d]# systemctl start mariadb
[root@server1 ~]# vim add.sql #创建表
[root@server1 ~]# mysql < add.sql
[root@server1 ~]# mysql
MariaDB [(none)]> use salt
MariaDB [salt]> show tables;
+----------------+
| Tables_in_salt |
+----------------+
| jids |
| salt_events |
| salt_returns |
+----------------+
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt'; #授权
Query OK, 0 rows affected (0.02 sec)
MariaDB [salt]> grant all on salt.* to salt@'localhost' identified by 'salt';
Query OK, 0 rows affected (0.00 sec)
[root@server1 ~]# mysql -u salt -psalt salt #测试是否成功
(2)minion端:
[root@server2 salt]# yum install -y MySQL-python.x86_64 #安装解决依赖性
[root@server2 salt]# vim minion
return: mysql
#
#return: mysql,slack,redis
#
#return:
# - mysql
# - hipchat
# - slack
mysql.host: '172.25.1.1'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@server2 salt]# yum install -y mysql #安装验证
[root@server2 salt]# mysql -h 172.25.1.1 -u salt -psalt salt #验证成功
[root@server2 salt]# systemctl restart salt-minion
(3)master:会直接把指令存储在数据库中
[root@server1 ~]# salt server2 test.ping --return mysql
server2:
True
MariaDB [salt]> select * from salt_returns;
+-----------+----------------------+--------+---------+---------+-------------------------------------------------------------------------------------------------------------------------------------+---------------------+
| fun | jid | return | id | success | full_ret | alter_time |
+-----------+----------------------+--------+---------+---------+-------------------------------------------------------------------------------------------------------------------------------------+---------------------+
| test.ping | 20200530172923992654 | true | server2 | 1 | {"fun_args": [], "jid": "20200530172923992654", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "server2"} | 2020-05-31 01:29:24 |
| test.ping | 20200530172949771653 | true | server2 | 1 | {"fun_args": [], "jid": "20200530172949771653", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "server2"} | 2020-05-31 01:29:49 |
| test.ping | 20200530173028023319 | true | server2 | 1 | {"fun_args": [], "jid": "20200530173028023319", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "server2"} | 2020-05-31 01:30:28 |
+-----------+----------------------+--------+---------+---------+-------------------------------------------------------------------------------------------------------------------------------------+---------------------+
[root@server1 ~]# salt-run jobs.list_jobs #列出当前master jobs cache中所有的job
[root@server1 ~]# salt-run jobs.lookup_jid 20200530173028023319 #查询返回信息
server2:
True
2、minion-master-…数据发送到数据库
master:
[root@server1 ~]# yum install -y MySQL-python
[root@server1 ~]# vim /etc/salt/master
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
master_job_cache: mysql
[root@server1 ~]# systemctl restart salt-master
[root@server1 ~]# salt '*' cmd.run df #推送命令查看表格即可
MariaDB [salt]> select * from salt_returns;