目錄
一、salt-job管理
何爲job?
master在下發指令消息時,會附帶上產生的jid(即job的id格式爲%Y%m%d%H%M%S%f),minion在接收到指令開始執行時,會在本地的cachedir(默認是/var/cache/salt/minion)下的proc目錄產生以該jid命名的文件,用於在執行過程中master查看當前任務的執行情況,指令執行完畢將結果傳送給master後,刪除該臨時文件。master將minion的執行結果存放本地/var/cache/salt/master/jobs目錄,默認緩存24小時(可通過修改master配置文件keepjobs選項調整)
#也就是說,job存放固定時間內的任務執行結果,而salt的returns模塊負責將這些結果返回至某個接收點,默認minion會直接返回至設置的接收點不經過master,按照通常情況,我們本次實現將minion所有任務執行結果返回至mysql數據庫中存儲,然後再由master調用。
# job存放數據目錄
[root@linux-node1 jobs]# cd /var/cache/salt/master/jobs/
[root@linux-node1 jobs]# ls
00 08 10 16 1f 25 2e 34 3c 45 4f 56 5d 65 6c 78 83 8a 90 98 9e a6 ad b4
[root@linux-node1 be494bbf286bc0cab5ad0fb7d516e9]# pwd
/var/cache/salt/master/jobs/a1/be494bbf286bc0cab5ad0fb7d516e9
[root@linux-node1 be494bbf286bc0cab5ad0fb7d516e9]# ls
jid linux-node1.example.com linux-node2.example.com
# 緩存時間設置
[root@linux-node1 jobs]# grep "#keep_jobs: 24" /etc/salt/master
#keep_jobs: 24
默認的緩存是24小時,可以進行修改。管理job是模塊進行管理,由執行模塊進行管理:SALT.MODULES.SALTUTIL
# Others
salt '*' saltutil.clear_cache 清除緩存
salt '*' saltutil.find_job <job id> 查找當前在運行的job,並返回它的id
salt '*' saltutil.is_running 查看當前在運行的job
salt '*' saltutil.kill_job <job id> 殺死job
二、returns模塊配置job數據入庫
#returns模塊官方文檔
https://www.unixhot.com/docs/saltstack/ref/returners/all/salt.returners.mysql.html
#配置returns返回值信息
[root@linux-node1 ~]# yum install -y MySQL-python
[root@linux-node1 ~]# vi /etc/salt/master
master_job_cache: mysql
mysql.host: '192.168.56.11'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
#mysql安全設置
[root@linux-node1 ~]# mysql_secure_installation
#創建模塊相關表和用戶授權
MariaDB [salt]>
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
USE `salt`;
--
-- Table structure for table `jids`
--
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar(255) NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX jid ON jids(jid) USING BTREE;
--
-- Table structure for table `salt_returns`
--
DROP TABLE IF EXISTS `salt_returns`;
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;
--
-- Table structure for table `salt_events`
--
DROP TABLE IF EXISTS `salt_events`;
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]> show tables;
+----------------+
| Tables_in_salt |
+----------------+
| jids |
| salt_events |
| salt_returns |
+----------------+
3 rows in set (0.00 sec)
#此時returns表爲空
MariaDB [salt]> select * from salt_returns;
Empty set (0.00 sec)
#grant 權限 on 數據庫對象 to 用戶 identified by 用戶密碼 (如果用戶不存在,創建並授權)
MariaDB [salt]> grant all on salt.* to [email protected] identified by 'salt';
Query OK, 0 rows affected (0.00 sec)
#測試數據是否正常入庫
[root@linux-node1 ~]# systemctl restart salt-master
[root@linux-node1 ~]# salt '*' test.ping
[root@linux-node1 files]# mysql -h 192.168.56.11 -u salt -psalt
MariaDB [(none)]> use salt;
# 出現job數據,說明節點任務執行結果正常入庫
MariaDB [salt]> select * from salt_returns;
三、minion-id修改方法
#模塊接口說明
https://docs.saltstack.com/en/2016.11/ref/states/all/index.html
1、停止服務
[root@linux-node2 ~]# systemctl stop salt-minion
2、刪除minion
[root@linux-node1 ~]# salt-key -d minionid
[root@linux-node2 ~]# rm -rf /etc/salt/minion_id
3、修改配置文件
[root@linux-node2 ~]# vi /etc/salt/minion
#id:
4、啓動minion
[root@linux-node2 ~]# systemctl start salt-minion