最近在看returners,其實就是個返回模塊。咱們通常執行命令的時候,結果會打印在屏幕上,returner就是把結果重定向其餘地方,好比文件、數據庫、nosql等等。css
saltstack有不少自帶的returners模塊,好比redis,mysql,sqlite3等等。我這裏以mysql爲例子。html
須要MySQLdb python模塊和mysql server。
python
首先須要配置數據庫。saltstack源碼裏有寫明怎麼操做mysql
CREATE DATABASE `salt`redis
DEFAULT CHARACTER SET utf8sql
DEFAULT COLLATE utf8_general_ci;數據庫
USE `salt`;架構
DROP TABLE IF EXISTS `jids`;
app
CREATE TABLE `jids` (nosql
`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;
授予權限。
grant all privileges on salt.* to salt@'192.168.110.%' identified by 'salt';
配置minion
mysql.conf內容以下
mysql.host: '192.168.110.132'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
salt-cp '*' mysql.conf /opt/app/salt/etc/minion.d/mysql.conf
salt '*' cmd.run '/opt/app/salt/admin/salt-minion restart'
執行前
如今使用salt操做下
salt '*' test.ping --return mysql
有兩條記錄。
由於這裏只有兩臺機器。如圖
這樣就能夠方便之後統計數據,統計哪些沒有成功,哪些成功。
可是呢,有個問題,就是使用系統自帶的returner,須要修改配置文件,重啓minion。若是你已經部署線上使用了,代價挺大的。
那麼有什麼方法能夠不用修改配置,你要知道saltstack很是靈活,只有你想不到的,沒有salt辦不到的。前面event文章裏提到過,event能夠用來自定義returners。
關於結合event自定義returner能夠參考下面的文章,這裏再也不敘述。
可是呢,又有個問題,以上的returners適合於master-minion的小架構。若是salt架構比較大,使用到了master-syndic-minion架構,master和minion是不能通訊的,此時咋辦。
這個時候仍是要結合event來處理,在master-syndic之間寫個c/s結構的程序。
這個下篇文章再聊,先寫到這裏。
參考文章:
http://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html
http://www.saltstack.cn/projects/cssug-kb/wiki/Saltstack_master_retuner_over_event_system