Configuration Management IaC Ansible Playbook

操作程序撰寫成可執行文件 易於上手獲跨領域業界認同

善用組態管理自動化機制 輔助IT維持正常維運

2020-04-06
面對百年一遇的武漢肺炎(COVID-19,2019新型冠狀病毒肺炎)全球延燒,企業紛紛提升防疫等級,開始實施持續營運計畫,例如在家工作、異地辦公、分時段與動線進出公司等因應措施。對於至今仍沿用傳統人力方式執行日常任務的IT部門來說,必須在人力最精簡的狀況下,還是可以保持日常IT維運,可評估採用現代自動化工具來協助。

 

Red Hat解決方案架構師黃秉鈞觀察,多數IT人員每天都會接收來自各部門的需求單,並且逐一回應,實際上,工作內容重複性相當高,只有少數是發生需要工程師深入查看的問題。若接收的需求單屬於啟用主機、設定VLAN等項目,卻只有一個IT人員懂得操作程序,恐會遭遇工作無法如期完成的問題。

「在全球疫情的衝擊下,凸顯出營運持續管理的重要性,員工的職能與經驗可轉換成自動化執行,以降低因防疫措施帶來的影響。」黃秉鈞說。

無代理程式贏得IT人員青睞

對於系統工程師而言,以往接收到新系統上線需求時,通常會藉由網頁操作介面點選配置,或是手動輸入指令來執行。隨著企業IT環境的轉變,實體設備功能性愈來愈多且複雜,若非深諳技術的工程師恐無力設定與維運。IT人員過去排除問題後經常運用部落格或Wiki記錄操作程序,藉此建立知識庫,以便未來再遇到類似狀況可參考。

近年來則轉換改採開源工具,記錄方式更逐漸演進到撰寫程式碼或腳本,以基礎架構即程式碼(IaC)的工作模式讓標準操作程序可被自動執行,從而降低功能性調整導致的人為錯誤。就如同軟體開發團隊的版本控管,讓運算、儲存、網路的操作行為改用程式碼方式執行,亦可確保每次的執行都符合預期效果。

黃秉鈞指出,尤其是已開始採用公有雲部署應用服務的企業,基礎架構即程式碼可實踐快速地組建(Build)基礎架構,讓每位開發人員的環境皆一致,並且在撤銷時執行刪除。然而多數IT維運團隊不熟悉程式碼撰寫邏輯,因此,採用組態管理(Configuration Management)系統,讓設定方法可以被具體地管理,接受度反而更高,這也是開源陣營中Ansible、Puppet、SaltStack、Chef開始受到關注的主因,各有不同擁護者。其中尤以Ansible不用安裝代理程式的特性較受歡迎,畢竟多數IT人員不想在作業系統環境中安裝更多的軟體。

Playbook描述標準操作程序

IT人員傾向採用Ansible實作自動化,黃秉鈞認為有三大主要原因,首先是直覺易懂的描述語言,畢竟IT基礎架構的維運人員多數不擅長程式開發,故可藉由Playbook來協助。其次是已取得眾多不同領域的IT廠商支援,提供Ansible可呼叫的API介接運用。第三點即為無代理程式。

Ansible可執行的文件稱為Playbook,採用的是特定領域語言(Domain-specific Language,DSL)描述,有別於開發人員慣用的Java、C++等原生程式語言,DSL運用其他撰寫方法表述,相當直覺易於理解,「以我的經驗,從未接觸過組態管理工具的IT人員只要30分鐘就可以自定義Playbook。」黃秉鈞說。

Playbook把所有操作的標準作業程序,撰寫成為YAML格式的劇本,讓各個Managed Node進行指定的動作(Play)與工作項目(Task)。其中的成分包含角色(Role)、工作項目、模組(Module),之所以稱為劇本,黃秉鈞以連續劇舉例,被控管的機器稱為角色、模組屬於道具、工作項目則是劇情,且通常是由多個劇本組成,就如同連續劇。在不同IT環境中執行時,只要替換掉角色,就可以確保演出一樣的劇情。

至於不同領域的IT大廠會提出支援Ansible模組,主要看重的是Ansible無代理程式的特性。其次是Ansible本身學習成本較低,IT部門中不同職務的工程師接手即可執行Playbook,只要把角色的設定換成自家IT環境,同樣可順利被執行。更容易上手,自然得到IT業界的認同。

自動執行提升效率、減少出錯

Ansible實作方式,在Linux核心系統是透過SSH協議傳輸,以Python、Shell Script執行;Windows是透過遠端管理服務與PowerShell,皆為作業系統既有的機制。較特別的是網路層,透過實體設備廠商提供SDK提供呼叫Ansible運行。

在開源陣營中相當活耀的黃秉鈞,從Red Hat尚未併購Ansible之前就已經接觸。他觀察Ansible社群近年來的發展,不僅加入開發的IT廠商數量逐年增多,翻閱近期GitHub發布開源軟體前十名的統計報告,亦可發現Ansible如同微軟的Visual Studio Code般,從2016年開始迄今皆名列在前十名。能夠在開源陣營的眾多工具鏈中脫穎而出,勢必有其獨到之處。

Red Hat解決方案架構師黃秉鈞指出,在全球疫情的衝擊下,凸顯出營運持續管理的重要性,員工的職能與經驗可轉換成自動化執行,以降低防疫措施帶來的影響。

黃秉鈞回憶,當初會接觸Ansible主要是為了提升工作效率。曾經為了Build一套大系統花費超過四小時,當時還得跟專案團隊合作,協助Build一樣的系統,除了指導操作流程,還得說明輸入的參數值定義,過程中還經常出錯,此後開始利用Ansible撰寫Playbook,才親身體驗到後續效益,同時也讓其他團隊藉此提高效率。

實際接觸客戶端IT部門後發現,若本身具有基本程式開發能力,學習Ansible速度比較快。至於專屬維運基礎架構的IT人員,大多習慣撰寫Shell Script輔助執行日常工作,普遍遭遇到的困境是,一旦Shell Script超過百行,就會變得難以維護,畢竟Shell Script本身不適合用於處理複雜的邏輯判斷,以及處理基礎架構組成元件彼此介接。

轉向採用組態管理工具,對IT人員來說,學習曲線並不高,又得以藉此降低日常繁雜的工作負擔。

如今全球疫情蔓延現象尚未能有效控制,每個人都有被迫不得進入公司的可能性,IT人員恐因此無法沿用手動輸入指令或網頁介面點選操作,若能把日常工作與問題排除程序藉由可執行的文件自動處理,不僅減少IT人員日常無效率的工作型態,也可降低一旦居家檢疫或隔離時帶來的維運衝擊。

 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!