SaltStack(www.saltstack.com/) 是一個伺服器基礎架構集中化管理平台,具備配置管理、遠端執行、監控等功能,一般可以了解為簡化版的puppet (puppetlabs.com/) 和加強版的func(fedorahosted.org/func/) Ansible。
SaltStack基于Python語言實作,結合輕量級消息隊列(ZeroMQ)與Python第三方子產品(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)建構。有如下特性:
部署簡單、友善;
支援大部分UNIX/Linux及Windows環境;
主從集中化管理;
配置簡單、功能強大、擴充性強;
主要端(master)和被控端(minion)基于證書認證,安全可靠;
支援API及自定義子產品,可通過Python輕松擴充。
通過部署SaltStack環境,我們可以在成千上萬台伺服器上做到批量執行指令,根據不同業務特性進行配置集中化管理、分發檔案、采集伺服器資料、作業系統基礎及軟體包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。目前Saltstack已經趨向成熟,使用者群及社群活躍度都不錯,同時官方也開放了不少子項目,具體可通路github.com/saltstack 獲得。
SaltStack支援多種作業系統,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(僅支援Minion)。
官方文檔:docs.saltstack.com 中國SaltStack使用者組:www.saltstack.cn
Saltstack的不同角色服務安裝非常簡單,建議采用yum源方式來實作部署,下面簡單介紹具體步驟。
通過部署一組業務功能伺服器來進行示範,作業系統版本為CentOS release 6.5,自Python 2.6.6,相關伺服器資訊如表。
角色
ID
IP
Groupsnmode
master
saltstack_master.test.com
192.168.1.182
minion
saltstack_web1group_1
192.168.1.183
web1group
saltstack_web1group_2
192.168.1.184
修改master服務端hosts檔案及master端/minion端主機名;
挂載CD光牒,安裝EPEL,由于目前RHEL官網yum源還沒有Saltstack的軟體包支援,是以先安裝EPEL作為部署Saltstack的預設yum源。
SaltStack master啟動後預設監聽 4505 和 4506 兩個端口。
4505:publish port 為 saltstack 的消息釋出系統;
4506:ret port 為 saltstack 被控制與服務端通信的端口;
如果使用 lsof 檢視4505端口,會發現所有的 minion 在4505端口持續保持在ESTABLISHED狀态。
在主要制端添加TCP 4505,TCP 4506的規則,而在被控端無須配置防火牆,原理是被控端直接與主要端的zeromq建立長連接配接,接受廣播到的任務資訊并執行,添加兩條iptables規則:
更新 SaltStack 配置及安裝校驗
Saltstack分兩種角色:一種為master(主要端),另一種為minion(被控端),安裝完畢後要對兩種角色的配置檔案進行修改。
認證流程(密鑰)
master/minion資料傳輸采用AES加密算法,salt支援自動認證
把公鑰發給master
校驗安裝結果
通過test子產品的ping方法,可以确認指定被控端裝置與主要端是否建立信任關系及連通性是否正常,探測所有被控端采用 ’*’ 來代替 ’saltstack_web1group_1’ 即可。
本文完。