Azure DevOps in Action - 使用Deployment Group進行地端大量部署

enter image description here
使用Azure DevOps Services,部署到雲端相對容易,部署到地端環境,得考慮的事情就多了。主要的原因是,Azure DevOps Services在雲端,無法(也不應該)直接跳過防火牆存取地端環境上的伺服器。

另外,如果不管是雲端或地端伺服器,若是HA(高可用性)架構,做了負載平衡(Load Balance)或是Failover,部署站台時,需要把同樣的artfact一次部署到多台伺服器,在pipeline的設計上也有一定的難度。

上面提到的這些事情,解決方案就是『Deployment Group』。

功能說明

Deployment Group可以讓你把特定artifact一次部署到多台伺服器,同時,也可以突破防火牆的限制,從雲端部署到地端。其中的關鍵就在於,你必須在伺服器端安裝一個代理程式。

我們來看一下底下這個準備好的情境,我們準備了兩台Windows Server 2019 VM,名稱分別是testdpvm1與testdpvm2。並且,在這兩台伺服器上開啟了IIS,也運行了基本的網頁如下:
enter image description here
同時,我們也建立了一個Azure DevOps Team Project,其中的repo很簡單,只有一個html檔案:
enter image description here
並且,我們為這個repo的部署建立了一個CI Pipeline:
enter image description here
這個CI Pipeline的功能也超單純,只是打包這個 .html頁面成為 .zip檔案,然後放入(publish)到drop資料夾,準備給CD Pipeline使用。

建立Deployment Group

接著重點來了,我們待會要將drop資料夾中的artifact透過CD Pipeline如同『穿越防火牆』一般地『同時』發佈到那兩台剛才建好的VM上,為此,我們來建立Deployment Group。請在Pipeline功能中,找到Deployment Group,並且建立新的Deployment Group:
enter image description here
接著,為Deployment Group命名,一般採用的是你的環境名稱,例如Dev、QA、Production…等。

然後,請複製出現的PowerShell Script (別忘了要勾選Use a personal access token in the script for authentication):
enter image description here

運行代理程式

接著,請到剛才那兩台VM上,以PowerShell的admin模式,執行複製的PowerShell Script:
enter image description here
其中的問答都以enter跳過即可。

完成後,你回到Azure DevOps的Deployment Group畫面檢視,會看到兩個agent已經出現:
enter image description here

透過deployment group進行部署

接著,我們來設計CD Pipeline,你可以透過『IIS WebSite』這個關鍵字過濾,找到『IIS WebSite Deployment』這個範本:
enter image description here
這個範本預設採用Deployment Group Job:
enter image description here
你只需要透過設定畫面選擇剛才建立好的Deployment Group名稱,你會發現,上圖右下角畫面會出現該Group預計部署的機器數量。

接著,在job中只需要保留IIS Web App Deploy這顆task即可:
enter image description here
設定完成之後,我們可以試著運行CI Pipeline產生artifact。接著,觸發CD Pipeline進行部署:
enter image description here
如果部署成功,將會出現底下畫面:
enter image description here
這表示兩個環境都成功了,我們來看運行的結果:
enter image description here
果然,兩個站台上的網站都變成我們CI Pipeline所建置出的artifact了。透過Deployment Group,我們可以不僅可以進行目標站台的大量部署,同時,由於目標環境上安裝友agent,我們也可以突破防火牆的限制,部署到地端或是較封閉的環境,Deployment Group的使用是一個非常重要的技巧。


更多資訊:
Azure DevOps 顧問實戰
https://www.tenlong.com.tw/products/9786263241251?list_name=b-r7-zh_tw

電子書:
https://www.pubu.com.tw/ebook/288713

教育訓練:
https://www.studyhost.tw/NewCourses/ALM

留言

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用 Airtable 在小型需求上取代傳統資料庫

專業的價值...

使用Qdrant向量資料庫實作語意相似度比對

精彩(且驚人)的Semantic Kernel入門範例