SaltStck構築Webクラスタ-Job管理


SaltStackのデフォルトの動作モードでは、minion側はmysqlデータベースにデータを直接返します.このプロセスにはmasterが参加する必要はありません.より柔軟な管理を提供するため、minion側の実行結果(job cache)をmaster側に保存することもできます.master側のデフォルトの保存アドレスは、/var/cache/salt/master/jobsです.
job cacheはmaster側のプロファイルに対応する構成パラメータがあります.
#cachedir:/var/cache/salt/masterが保存したパス
#keep_jobs:24保存時間24時間
Job cacheのデータベースへの直接書き込みの構成
構成をオーバーライドすることで、master側のcacheを直接データベースに書き込むことができます.
job cacheのデフォルトのテーブル構造はsaltデータベースのテーブル構造と同じですが、データベースとのインタラクションを行うにはmaster側にMySQL-pythonをインストールする必要があります.
yum install MySQL-python -y

マスターのプロファイルを変更し、最後にmysqlの構成を直接追加します.
# vim /etc/salt/master
master_job_cache: mysql
mysql.host: '172.16.10.60'
mysql.user: 'salt'
mysql.pass: 'saltpw'
mysql.db: 'salt'
mysql.port: 3306

データテーブルの作成:https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html 
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;

データベースに認証ユーザーを作成するには、次の手順に従います.
grant all on salt.*  to [email protected] identified by 'saltpw';

salt-masterを再起動するには:
# systemctl  restart salt-master

マスター側で実行:
# salt '*' test.ping

エラーがない場合は、実行に成功したことを示します.mysqlでデータが書き込まれているかどうかを確認できます.
MariaDB [salt]> use salt;select * from salt_returns\G

1回実行するごとに、2つのレコード(2つのminion)が生成する.
これにより、実行されるjob cacheのたびにデータベースに戻ります.
saltでよく使用される管理コマンド:
# salt-run  jobs.list_jobsは、データベースではなくディレクトリからクエリーする履歴実行salt job-cacheタスクを表示します.
# salt-run jobs.lookup_jid 2016124144637116519タスクの実行結果を表示
現在のminionのステータスを表示するには、次の手順に従います.
# salt-run manage.status  
down状態のminionを表示するには、次の手順に従います.
# salt-run manage-down
up状態のminionを表示するには:
# salt-run manage-up
バージョン情報の表示:
# salt-run manage.versions
実行時にJIDを返し、-vパラメータを追加します.
# salt '*' test.run -v