作為平台管理者,每一次想到代理程式就會想到兩件事情就會嘆氣,即是 微軟託管代理程式使用多少時間 與 一堆自行託管代理程式伺服器 。或許你的企業或組織可以提供足夠的資源讓 IT 使用,但不免也會扯到維護、資源使用率與資安問題。就個人實作與企業顧問多年經驗,個人是比較偏好微軟託管代理程式,主要原因在於它提供一個乾淨 (每次即預設安裝相關軟體狀態,沒有任何殘留套件),若並非資安需求或需要進行地端整合測試,自行託管代理程式在個人思維中,其維護成本相當高,也相當浪費 (只有在工作時間有高使用率,離峰時間皆閒置)。但一些微軟託管代理程式缺點如:在代理程式若要更多硬體資源(CPU、記憶體與儲存體)、過多步驟安裝自訂軟體、執行超過微軟託管代理程式逾時設定 與 需要等待…等,讓微軟託管代理程式並不是十全十美。
但 Azure Pipeline 其中一種代理程式類型相當強大,可以解決上述問題,並優化資源使用率的問題,它就是 Azure 虛擬機器擴展集代理程式 。虛擬機器擴展集合 (Azure Virtual Machine Scale Sets) 可以讓使用者建立和管理一組負載平衡的 VM。 VM 執行個體的數目可以自動增加或減少,以因應需求或已定義的排程。 理所當然,你能將虛擬機器擴展集合作為代理程式提供 Azure DevOps 使用。
注意:不是使用 VMSS 代理程式擴展集合即有無限代理程式,組織仍需要購買平行作業 (Parallel jobs) 數量
開啟 Azure Portal,搜尋服務輸入 VMSS,選擇虛擬機器擴展集
第一頁設定內容較多,除了協調流程需要選擇統一與縮放模式選擇手動更新容量,其餘部分可以依據實境需求設定。
Azure Pipelines 不支援擴展集自動調整。 請確定您的擴展集已停用這兩項功能。
可以依據實境需求設定
Spot 部分,若您選擇的虛擬機器規格較大且符合規定,可以設定 Azure Spot 執行。因為我們是範例,選擇較小的規格並不設定 spot。
依據需求設定硬碟,因為是範例,我們設定 HDD 硬碟
網路部分我們使用預設設定
管理部分很重要:升級原則需要選擇手動,超額佈建不要選擇任何內容
健康狀態使用預設設定
進階使用預設設定
標籤設定
最後檢視設定內容是否無誤,確認後按下建立
虛擬機器擴展集建立完成後,我們回到 Azure DevOps Portal > 組織設定 > Agent pools > 點選 Add pool 按鈕
Pool type 選擇 Azure virtual machine scale set 依序選擇連線的專案、Azure 訂閱、VMSS、輸入名稱,最大虛擬機器數量與待命時虛擬機器數量等設定
建立完成後,即可看到 擴展集代理程式集區,其標誌為 Azure 圖形
可以回到 Azure Portal > 虛擬機器擴展集 > 執行個體,確定有建立虛擬機器
第一次設定約等10-15分鐘,即可看見新的代理程式長出來了。到目前為止,我們完成擴展集代理程式集區設定。