Dev Talks

如何運用 Ansible 助客戶建置 On-Premise 產品,解決成本和維運困難

5xRuby Developer Apa
Apa Yu, 工程師 Mar 12, 2021

在雲端時代,啟動一個伺服器只需幾秒。不像早期管理硬體設備需要昂貴成本,在這個年代,重要的是企業如何用程式碼定義計算資源和網路基礎設施,也就是「基礎架構即程式碼」(Infrastructure as Code)。

而軟體應用服務的持續整合(Continuous Integration)、持續交付(Continuous Delivery),在雲端時代也成為重要課題。

這些功能在公有雲上皆有良好的基礎建設跟配套措施,但在私有雲內卻需要企業自行搭建。搭建這些服務需要技術門檻,企業必須額外投入 IT 人才培訓,對於習慣使用套裝產品的企業而言並不容易。

尤其是環境部署設定,有管理過 server 的人都知道,為了要管理多台 server,常需要持續重複相同安裝動作,不僅耗費寶貴人力,尤其如果不小心輸入錯誤指令,更可能會毀掉企業資產(例如誤刪正式站資料庫或其他重要檔案)。

5倍紅寶石近幾年累積了豐富的部署經驗,不管是用 Chef 幫助客戶管理雲端機器服務,還是用  Ansible 來幫助企業管理內部伺服器,均能協助節省大量人力,讓客戶專注在產品服務上。

以下將會介紹幾個實戰案例,帶各位一觀我們如何善用 Ansible ,來幫助客戶達到輕鬆部署、節省成本的目標。

什麼是 ANSIBLE?

如果曾經逛過 Ikea,一定會對 Ikea 用自家傢俱所配置出來的空間感到驚艷。Ansible 做的事情就像是如此,你不用自己打造傢俱,只要選擇想要的空間設計配置(腳本),且它提供的是大部分人都能通用的設計配置,顧客只要自行抽換其中幾套不滿意的傢俱,就能打造出理想的生活環境(server 環境)。

Ansible 就是一套自動化組態設定工具,非常容易閱讀與維護,完全使用 SSH 與遠端 Server 溝通,不需要另外架設伺服器。它可以輕鬆管理伺服器上重複且耗時的工作,例如管理套件 (packages)、服務依賴 (dependency)以及組態 (configuration) 配置。

因此企業如何導入自動化解決方案,將每一次部署安裝的步驟,寫成自動化標準作業程序,將是企業數位轉型的重要課題。

不可不知的自動化機器管理

在為伺服器重新安裝軟體或升級的過程中,時常需要花費大量時間。有些軟體還可能因為企業各自的需求進行微調,這樣繁瑣的步驟同樣也會發生在軟體部署的伺服器上。

如果企業內部不只一台機器,這些微調所耗費的時間成本長期累積下來,對於企業也是龐大耗損。有些企業會利用到類似像 Proxmox VE、VMware ESXi 之類的虛擬化平台來管理虛擬機器,但不論是上述哪一種類型的基礎設施,都可以透過 Ansible 來做到模組化及可測試性,透過與 CI 整合測試,也可以確保高品質腳本,協助企業做到良好的機器管理。繼續用傢俱的例子來看,因為傢俱規格已經被標準化,組裝或修改時能更快驗證零件規格是否合格,只要傢俱卡榫大小相同,就能將這個傢俱加入空間組合內。

Ansible for Application Deployment

Photo from https://www.ansible.com/use-cases/application-deployment

實戰案例1 - 輕鬆對應百款客製化需求

客戶 A 是一間販賣套裝軟體服務的公司。

A的客戶來自於台灣各級學校,常需要到校安裝各式軟體。但各級學校不論硬體或是系統皆不相同,A 需要克服因為環境不同而需要客製化的調整設定,每間學校又須因應需要服務的不同(例如某服務是否需要開啟 E-mail 驗證),需花費人力不停重複設定。

5xRuby 的解決方案

了解客戶 A 的需求與困難點後,我們將系統以容器為單位封裝為 Docker Image,並且根據客戶的需求撰寫 Ansible 腳本,讓客戶能依照不同的需求調整部署組態,因應環境快速部署。

何謂 Docker Image?如果我們將伺服器看成倉庫,Docker Image便是倉庫裡的貨櫃,貨櫃裡面裝的則是傢俱。如上述舉例,當客戶針對不同學校需求而要抽換傢俱時,只要把該傢俱存放的貨櫃抽出,打開貨櫃,再把想要置換的傢俱更換掉即可。

善用 Ansible搭配 Docker Image,就可以將繁複作業系統化、腳本化,在機器數量極多的情況下輕鬆做到良好管理。

實戰案例2 - 迎擊來自私有雲的管理與成本挑戰

客戶 B 根據內部規定,無法直接使用公有雲上的服務,所有服務都需建立在私有雲內部。在環境受限的情況下,5xRuby 如何幫客戶建立所需應用服務,並且減少日後管理成本費用?

5xRuby 的 解決方案

客戶無法隨意使用外網,意味著所有第三方服務都無法使用。自行搭建服務對客戶來說成本過高,後續管理維護也需要龐大經驗加持。我們利用 Ansible 能透過 SSH 連接到伺服器,不需另外架設伺服器,就能達到在內網架設軟體服務的需求。接著透過我們所撰寫的腳本,來降低客戶學習部署的學習曲線。

如同前面所提到的,使用 Ikea 預先設計好的傢俱配置幫助客戶快速建立環境,後續管理也因為改寫容易,能夠輕易更換腳本(傢俱),來達到降低維運成本的效果。依照客戶現有的人力配置,至少能省下10% - 20% 的人力成本。

一般人能要學習在伺服器上部署 Ruby On Rails的專案,往往需要花上1~2個月。然而運用我們提供的解決方式,只需要短短2、3天。對客戶的資訊人員來說,用最低限度的學習,便能打造最高效率的部署方式。能省去高達95%的繁複作業,適合各種企業。

你在系統部署上也有遇到如我們的客戶一般、如此煩雜的作業流程嗎?歡迎聯繫我們,成為下一個得益於快速部署的客戶。


分享