企業 Saltstack 裡的Job管理

2021-10-06 23:44:56 字數 4366 閱讀 7504

master在下發指令任務時,會附帶上產生的jid。

minion在接收到指令開始執行時,會在本地的/var/cache/salt/minion/proc目錄下產生該jid命名的檔案,用於在執行過程中master檢視當前任務的執**況。

指令執行完畢將結果傳送給master後,刪除該臨時檔案。

我們在推送後看的輸出結果就是,就是產生的job檔案

當處於圖形化管理的時候,推送的結果是看不到的,而這些存放結果的job檔案,就是檢視推送成功與否的重要指示

job快取預設儲存24小時:

# vim /etc/salt/master

keep_jobs: 24

master端job快取目錄:/var/cache/salt/master/jobs

為了可以長久性儲存job檔案並且可以隨時方便的檢視,就需要將job儲存在資料庫裡,方式就是當minion節點返回資料給master是,master在將資料傳送給資料庫進行儲存。

首先需要在master上安裝資料庫,啟動mariadb就可以直接使用了,預設是沒有密碼的

[root@server1 salt]

# yum install -y mariadb-server

[root@server1 salt]

# systemctl start mariadb.service

還需要安裝mysql-python外掛程式支援使用

[root@server1 salt]

# yum install -y mysql-python

更改配置,開啟return: mysql

[root@server1 salt]

# vim /etc/salt/master

return: mysql

master_job_cache: mysql

mysql.host: 'localhost'

mysql.user: 'salt'

mysql.pass: 'salt'

mysql.db: 'salt'

[root@server1 salt]

# systemctl restart salt-master.service #重啟服務生效配置

需要編寫salt.sql語句檔案,給資料庫匯入job的資料

[root@server1 ~]

# vim salt.sql

create database `salt`

default character set utf8

default collate utf8_general_ci;

use `salt`

;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;

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;

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;

匯入因為我們沒有設定資料庫密碼直接回車就可以

[root@server1 ~]

# mysql -p < salt.sql

enter password:

[root@server1 ~]

# mysql

mariadb [

(none)

]> show databases;

+--------------------+

| database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| salt |

|test

|+--------------------+

5 rows in

set(0.00 sec)

mariadb [

(none)

]> grant all on salt.* to salt@localhost identified by 'salt'

;query ok, 0 rows affected (0.00 sec)

#新增授權使用者

完成上述操作後,我們再去執行推送時,job資料就會自動儲存在資料庫裡的salt庫里的salt_returns表裡

[root@server1 ~]

# mysql

mariadb [

(none)

]> use salt;

mariadb [salt]

> show tables;

#匯入salt.sql會產生3張表

+----------------+

| tables_in_salt |

+----------------+

| jids |

#jid

| salt_events |

#事件表

| salt_returns |

#返回值的表

+----------------+

這樣就部署好了job的返回資料自動儲存在資料庫的操作

檢視所有minion當前正在執行的jobs(在所有minions上執行saltutil.running)

salt-run jobs.active

列出當前master jobs cache中所有job

salt-run jobs.list_jobs ,這個會展示你所有推送過的操作

從master jobs cache中查詢指定jid的執行結果

salt-run jobs.lookup_jid

[root@server1 ~]

# salt-run jobs.lookup_jid 20200609093635428312 #jid

server2: #操作執行的結果

server2

server3:

server3

join mysql 版本 MySql中的join

建立表 create table t2 id int 11 not null,a int 11 default null,b int 11 default null,primary key id key a a engine innodb drop procedure idata delimiter...

saltstack命令的使用

saltstack命令的使用 1 核心命令 salt usage salt options arguments target用於代表對哪些minion進行操作,可採用如下匹配方式 e 正規表示式 root slat master salt e node test.ping node2.linux.c...

saltstack的簡介架構

saltstack是乙個開源的 新的基礎平台管理工具,使用python語言開發,同時提供rest api方便二次開發以及和其他運維管理系統進行整合。相對於出道比較早的puppet,saltstack先天的優勢就是簡單 易用,可以非常快速的在團隊中推廣和使用,而且執行多平台。遠端執行 就是在管理節點上...