使用 Func 批量管理 Linux 伺服器

文/圖:曹江華

要管理大量伺服器,從來都不是件易事,幸好開源界一直有志願者開發出不少出色的批量管理 Linux 伺服器工具,Func 便是其中之一。

Func 是 Fedora Unified Network Controller 的簡稱,中文可翻譯為 Fedora 統一網路控制器。它是用 Python 編程語言開發的一個開源自動化工具,主要用在 Rad Hat 系列系統上,由一台伺服器管理其他任意伺服器的工具。Func 採用傳統的 Master/Slaves 主從 SSL 證書管控體系,可以將證書自動分發到所有受控服務。

Func 基本架構

Func 可以讓我們在主控機上一次管理任意多台的伺服器,或任意多個伺服器的群組,它基於 XMLRPC 和 SSL 標準協議。Func 架構中最主要的角色是 Func Master 和 Func Minion。顧名思義Master 是中心控制系統,而 Minion 是被管理的客戶端。在 Master 和 Minion 端都以守護進程的模式運行,Func 部署架構可以分成 2 種,第一種是 Master-Minion,這種架構中,Master 和所有 Minion 都直接連接,Minion 接收來自 Master 的命令,完成命令執行或設定管理(圖1)。第 2 種是無 Master 的 Minion,這種架構中 Minion 不受任何 Master 控制,通過本地運行即可完成相關功能。除了傳統的 C/S 架構外,其實還有 Masterless 架構,如果採用 Masterless 架構,我們就不需要單獨安裝一台 Master 機器,只需要在每台機器上安裝 Minion,然後採用本機只負責對本機的設定管理工作機制服務模式。

Func 架構。
Func 架構。

Func 的特點

Func 沒有數據庫關聯,不需要複雜的安裝設定,而且可以通過 Kickstart 自動安裝 Func 套件,然後註冊到主控伺服器。Func 開發者已經完成了大多數常用任務模組的開發,包括命令執行模組、檔案傳輸模組、IP Tables 模組、查看硬體訊息模組、掛載模組、進程模組、服務模組、重啟系統模組等。要實現其它功能,就需要自己編寫 Python API。任何 Func 命令行能完成的工作,都能通過 API 編程實現。用戶可以通過 Func 提供的 Python API 輕鬆編寫擴展模組,以實現具體功能擴展。

部署環境

Func 部署環境如下

角色 作業系統 主機名稱  IP 位址
 Master   CentOS 7  cjh1  192.168.12/24
 Minion  CentOS 7  bogon  192.168.1.13/24

表1:Func 部署環境。

為了方便測試,這裡筆者使用虛擬機器 Oracle VM VirtualBox 設定兩個節點,作業系統為 CentOS 7 的 64 位元版本。接下來設定在兩台主機都 hosts 檔案,使 Master 與 Minions 可以相互作名稱解析。在 /etc/hosts 中解析主機名稱為本地地址,內容如下。
192.168.1.12 cjh1
192.168.1.13 bogon

主控端伺服器安裝

我們將主控端伺服器安裝在 cjh1 設備上,EPEL (Extra Packages for Enterprise Linux) 來源,並使用 yum 命令在線安裝。
yum –enablerepo=epel -y install func    (ENTER)
然後修改設定檔案/etc/certmaster/minion.conf,內容如下。
[main]
# Certmaster’s hostname or IP address
certmaster = cjh1
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
然後設置防火牆開啟如下埠號和服務。
firewall-cmd –add-port=51235/tcp –permanent    (ENTER)
firewall-cmd –reload    (ENTER)
再啟動 certmaster 服務。
systemctl start certmaster    (ENTER)
systemctl enable certmaster    (ENTER)
我們查看服務埠號狀態,如果出現埠號 51235,便說明服務啟動成功。
netstart -tlnp | grep 5123    (ENTER)
到此為止主控端伺服器安裝完成。

被控端套件安裝

被控端套件安裝在 bogon 設備上,同樣使用 EPEL 來源,使用 yum 命令在線安裝。
yum –enablerepo=epel -y install func    (ENTER)
修改設定檔案/etc/certmaster/minion.conf,以便指向證書何服器發出簽名請求,建立信任關係。
[main]
# Certmaster’s hostname or IP address
certmaster = cjh1
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
設置防火牆開啟如下 Func 服務,和對應的埠號 51234。
firewall-cmd –add-port=51234/tcp –permanent    (ENTER)
firewall-cmd –reload    (ENTER)
最後啟動 Func 服務。
systemctl start func    (ENTER)
systemctl enable func    (ENTER)
到此為止被控端安裝完成。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *