【Linux & OSS Award 2017 回顧】最佳系統自動化管理方案 Red Hat Ansible Tower

市場需求

在 2000 年代,只要十數台小型伺服器、數台高階的儲存系統,就足以應付中等規模非 IT 企業在業務上的需要。然而隨著 x86 伺服器功能日益強大、虛擬化的普及、以及雲端時代的到來,加上很多應用程式都加入了分散式設計,企業需要管理的系統往往以幾何級數遞增。大型商業銀行數據中心中運行的系統數量,可能多達上萬台,傳統上以 SSH 等工具設定和管理系統的方式,已經再無法滿足企業的需要。由此應運而生的,便是系統自動化管理方案。根據市場研究機構 Markets and Markets 預測到了 2021 年,全球單是雲端自動化管理方案的市值,將會由 2016 年的 49 億美元,增長至 141 億美元,年複合增長率達 23.4%。

得獎方案

作為 Red Hat Ansible Tower 上游的 Ansible 專案,是 GitHub 上最受歡迎的開源 IT 自動化系統管理工具,它可以用來配置系統、部署軟體、協調處理眾多的複雜 IT 工作,例如持續部署和零停機時間的滾動更新。Ansible 的目標是簡化操作,可以管理小型的網路環境,也可以用於管理上千人甚至萬人的企業級網路環境。相對其他同類型產品,Ansible 的解決方案比較簡單,而且無需使用代理程式,也不需要特殊編碼技能,因此能消除 IT 自動化的重大障礙。Red Hat 於 2015 年收購 Ansible,並推出企業版本 Ansible Tower。Ansible Tower 強化了 Ansible 的權限機制和系統記錄功能,並為 Ansible 提供統一的管理界面,以及能讓其他應用程式與 Ansible 協作的 API。至於原來的Ansible,則依然會繼續以開源方式提供。

Ansible Tower 為 Ansible 提供統一的管理界面。
Ansible Tower 為 Ansible 提供統一的管理界面。

得獎原因

技術創新
1. 完全自動的系統管理
Ansible 一般會通過 SSH 等協議把命令推送到被管理端執行,但 Ansible 最強大的地方,卻是利用 Playbook 管理。在企業的 IT 環境中,很多任務都需要利用人手去完成,例如安裝伺服器、設定資料庫的複製環境等。這些工作可以通過命令行完成,但如果還要在其他伺服器上作多次同樣的部署,就得重複地輸入命令。例如要架設分散式的資料庫,就需要將大量相同配置的資料庫,部署到多台伺服器或虛擬伺服器上。人手部署不但花時間,而且有機會出現人為錯誤,Ansible 的 Playbook 便可解決這個問題。Playbook 顧名思義,就是將所有的操作按照約定好的規則,在設定檔中定義好做什麼,然後再按照劇本演出,因此 Playbook 非常適合重複地部署複雜的系統環境、應用程式和執行日常的系統管理任務。Playbook 使用 YAML 格式,語法和其他高階語言類似,可以簡單表達各種資料形態,特別適合用來表達或編輯資料結構及各種設定檔。在 Ansible Tower 中針對某群遠端主機的 Playbook 被稱為任務 (Jobs),在圖形界面下可看到任務列表。透過任務範本 (Job Templates) 管理人員可更輕鬆地設計出任務。

在圖形界面下可看到任務列表。
在圖形界面下可看到任務列表。
透過Job Templates可更輕鬆地設計出任務。
透過 Job Templates 可更輕鬆地設計出任務。

2. 跨平台、跨應用程式的管理
從前的企業 IT 環境以大型主機為主,但時至今日,大部分的企業 IT 環境下,都有不同的系統基建、作業系統、網路裝置和應用程式同時存在,如何對這些不同的系統和裝置作自動化的部署,是企業今後必須解決的問題。Ansible 可管理多種的系統基建、作業系統、網路裝置和應用程式,可操作包括 Amazon Web Services、DigitalOcean、Docker、Microsoft Azure、Red Hat OpenShift、Red Hat OpenStack、Red Hat Virtualization、VMware、XenServer 等 系統基建,AIX、FreeBSD、HP-UX、Linux、Mac OSX、Solaris 和 Windows 等作業系統,A10、f5、Cisco、Citrix、Dell、Juniper 等網路裝置,以及 Apache、MySQL、Nagios、PostgreSQL、Red Hat JBoss Middleware、SQL Server 和 Zabbix 等應用程式,是同類方案中最強大的一個。

在Ansible Tower下管理VMware下的虛擬機器。
在 Ansible Tower下管理VMware 下的虛擬機器。

3. 用戶權限及歷史管理
系統自動化管理工具用戶經常遇到的難題,往往來自與權限相關的設定。要令 Ansible 有能力管理多種的系統基建、作業系統、網路裝置和應用程式,就得對執行 Ansible 的用戶賦予絕對的權限。對中小企業而言,由一名系統管理員擁有絕對權限不足為奇,但只要企業擴充至一定的規模,擁有絕對權限的用戶,便可能會構成安全上的隱憂。藉 Ansible Tower 管理人員可以將權限分散,例如系統管理員只能以 Ansible 管理特定的虛擬機器、網路管理員只能以 Ansible 管理特定的數台網路設備、某 IT 經理只能執行特定的 Playbook 等等。Ansible Tower 比 Ansible 更能作出精細的權限設定,例如將用戶編為同一團隊下的成員,然後以團隊為單位設定可管理的主機群 (Inventory)、可使用的密碼 (Credentials),團隊專用的任務範本、以及可存取的專案 (Project),管理人員可將複數的 Playbook 編入特定的專案下,只有指定的團隊成員,才有權管理某專案下的 Playbook。

用戶權限相關的設定。
用戶權限相關的設定。

4. 提供與 Ansible 協作的 API
當企業擴充到一定規模,便開始需要檢討既有的應用程式界面 (API) 架構,以便企業自行開發的程式也能整合協作,Ansible 本身提供了一個可供 Python 直接使用的 API,方便了 Python 開發者進行二次開發和整合。Ansible Tower 則加入了一個 REST(Representational State Transfer) 的 API,REST 是一個設計架構,可讓客戶端以標準的 HTTP 方法如 GET、POST、PUT 和 DELETE 向伺服器發送請求,並支援大量客戶端。開發人員可在自製的腳本中、或透過外部的應用程式中使用 HTTP 來存取這個 API,這樣縱使使用的是一個不採用標準技術的網站管理界面,也能對 Ansible 環境進行控制。

商業效益
1. 提高任務執行效率
Ansible 是用 Python 開發的,可以部署到不同的系統環境中,具有良好的二次開發特性。在執行命令的時候,Ansible 支援 Adhoc 操作模式,也可以支持將命令寫入 YAML 格式檔案中再批量執行。在處理返回結果方面,Ansible 的返回結果都是 JSON 格式的,比較容易明白,也方便解析。一般系統自動化管理方案都需要同時在控制主機和遠端主機上啟動守護進程,才能從遠端主機定期取回狀態值,而且需要時常檢測守護進程的運行狀態,增加維護成本。Ansible 和遠端主機之間的通訊是通過標準 SSH 進行的,遠程主機上只需要運行 SSH 進程,就可以進行維護操作。SSH 是機房主機中一般都安裝和啟動的進程,所以在 Ansible 進行維護的時候,只要注意 Ansible 主機的運行狀態即可,對機房維護不會增加過多的維護成本。為方便管理,Ansible Tower 更引進了新概念工作流程 Workflow,讓管理人員更加了解任務之間的關係。

Workflow讓管理人員更加了解任務之間的關係。
Workflow 讓管理人員更加了解任務之間的關係。

2. 提高系統安全性
任何系統自動化管理方案都需要和遠端主機進行連接,它們的最大的安全問題,就是中間人攻擊 (MITM),入侵者將自己偽裝成協助傳訊的網路元件,紀錄管理主機和遠程主機之間的通訊,再偽裝成管理主機來攻擊遠程主機。一般的系統自動化管理方案在數據傳輸時不一定會加密,縰使有使用 AES 加密傳輸,但守護進程在遠端主機上,往往暴露出被攻擊的弱點。Ansible 使用標準 SSH 連接傳輸數據,不需要在遠程主機上啟動守護進程,並且標準 SSH 數據傳輸本身就是加密傳輸,令遠程主機較不容易被攻擊。加上 Ansible 使用 paramiko 函式庫進行 SSH 連接,paramiko 是一個有良好往績的 Python 函式庫,Ansible 可以通過設定 StrictHostKeyChecking 參數和設定一個合適的 known_hosts 檔案,當遠程主機上的 Keys 和之前連接的不一樣的時候提醒用戶。

3. 實踐 DevOps 作業流程
手機程式的出現,令軟體產品的生命週期變短,而且難以預測。要保持競爭力,就必須持續性地領先他人一步。但傳統上資訊部門職掌開發 (Development) 與維護 (Operations),通常配置兩組不同團隊。開發團隊求方便,維護團隊求穩定,為減少雙方衝突及提高溝通效率,業界提倡 DevOps,即由開發 (Dev) 與維護 (Ops) 團隊協作,運用自動化工具輔助轉化軟體交付與架構變更流程,讓企業在快速變化的市場中贏得競爭力。Ansible 可為管理工作提供自動化功能,例如可透過虛擬主機的範本,快速地 Provision 應用程式與資料庫所需運行的環境,完成後即可透過 Ansible 的變數欄位設定,把資料庫系統的 IP 位址提供給應用程式。若此工作流程具備邏輯順序,更可被配置為自動化執行。Ansible 自動化組態除了可以減少服務中斷時間、測試基礎建設、降低意外風險,更可以讓開發、測試和正式環境無縫接軌。

IT管理者可方便地追蹤工作流程。
IT 管理者可方便地追蹤工作流程。

4. 系統資訊可視化
Ansible 的操作一般只透過命令行進行,但 Red Hat 提供的Ansible Tower 則具有圖形化界面設計,令 IT 管理者配置工作流程的追蹤機制、執行基於角色定義的存取控管,甚至指定帳號權限在特定主機上執行任務等工作,都可以透過圖形界面進行。從圖形界面也可看出全體命令、每項任務及其下每個步驟的執行結果。每當有任務被執行或 Playbook 內容被更新時,管理人員也可透過電子郵件、或者Slack、Twilio、PageDuty和HipChat等通訊工具收到通知,不會再有「不知從何時開始,有一台不知道由誰啟用,也不知道用來做什麼的虛擬機器正在運行」,或者「負責管理虛擬機器的用戶,不知道為何竟擁有控制公司內部所有網路裝置的權限」等混亂狀況發生。Ansible Tower 也可比較同一台主機中,在不同日子相同時段下執行的任務,以及將所曾經進行的操作記錄,並以時序先後列出,從而及早發現系統負荷的改變與安全性的問題。

系統資訊可視化方便管理人員了解整體狀況。
系統資訊可視化方便管理人員了解整體狀況。

客戶評價

Ansible 開源版本擁有高活躍度與參與度的社群,是 GitHub 上最受歡迎的開源項目之一,有將近 1,200 名貢獻者予以支援。Ansible 也獲得許多知名獎項的殊榮,包括 2015 年 InfoWorld Bossie 的最佳開源資料中心與雲端軟體大獎。至於企業版本的 Red Hat Ansible Tower 直到目前為止,在全球有超過 600 間跨國企業用家,包括蘋果公司、Google、Nike、英國國防部、英國廣播公司 BBC、美國太空總署 NASA、NEC、SONY、VMware、verzion 等知名企業和公營機構。

 

Red Hat Limited
網址 :https://www.ansible.com/tower
電話 :+852 23507668
Facebook: www.facebook.com/RedhatAPAC

發佈留言

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