共用方式為


使用 Azure Pipelines 中的部署群組部署至 Azure VM

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

在舊版的 Azure Pipelines 中,需要部署到多部伺服器的應用程式需要大量的規劃和維護。 必須手動啟用 Windows PowerShell 遠端功能、開啟所需的埠,並在每部伺服器上安裝部署代理程式。 如果需要推出部署,則必須手動管理管線。

上述所有挑戰在引進 部署群組後都順利地得到了解決。

部署群組會在設定群組中的每個目標伺服器上安裝部署代理程式,並指示發行管線逐步將應用程式部署至這些伺服器。 您可以針對推出部署建立多個管線,以便以階段方式將最新版本的應用程式傳遞給多個使用者群組,以驗證新引進的功能。

備註

部署群組是傳統管線中使用的概念。 如果您使用 YAML 管線,請參閱 環境

在本教學課程中,您將了解:

  • 使用範本將 VM 基礎結構布建至 Azure
  • 建立 Azure Pipelines 部署群組
  • 建立並執行 CI/CD 流程,以使用部署群組部署解決方案

先決條件

  • Microsoft Azure 帳戶。
  • Azure DevOps 組織。

使用 Azure DevOps 示範產生器,在 Azure DevOps 組織中布建教學課程專案。

設定 Azure 部署環境

下列資源會使用 ARM 範本在 Azure 上布建:

  • 已設定 IIS 的六部虛擬機 (VM) 網頁伺服器
  • SQL Server VM (DB 伺服器)
  • Azure 網路負載平衡器
  1. 按兩下下方的 [部署至 Azure 連結以起始資源布建。 提供所有必要的資訊,然後選擇[購買]。 您可以使用任何允許的系統管理使用者名稱和密碼組合,因為本教學課程中不會再次使用它們。 Env 前置詞名稱 會附加在所有資源名稱之前,以確保這些資源以全球唯一名稱生成。 嘗試使用個人或隨機專案,但如果您在驗證或建立期間看到命名衝突錯誤,請嘗試變更此參數並再次執行。

    部署至 Azure

    顯示如何設定 Azure 部署環境的螢幕快照。

    備註

    完成部署大約需要 10-15 分鐘。 如果您收到任何命名衝突錯誤,請嘗試變更您為 Env 前置詞名稱提供的參數

  2. 部署完成後,您可以使用 Azure 入口網站來檢閱指定資源群組中產生的所有資源。 選取名稱中具有 sqlSrv 的 DB 伺服器 VM,以檢視其詳細數據。

    資源群組部署至 Azure。

  3. 記下 DNS 名稱。 在後續步驟中需要此值。 您可以使用 [複製] 按鈕將複製到剪貼簿。

    SQL DNS 部署至 Azure。

建立和設定部署群組

Azure Pipelines 可讓您更輕鬆地組織部署應用程式所需的伺服器。 部署群組是具有部署代理的機器集合。 每部機器都會與 Azure Pipelines 互動,以協調應用程式的部署。

由於建置管線不需要任何組態變更,因此在布建項目之後,會自動觸發組建。 當您稍後將版本排入佇列時,會使用此建置。

  1. 流覽至示範產生器所建立的 Azure DevOps 專案。

  2. Pipelines,導航到 部署群組

    在 [管線] 底覽至 [部署群組]

  3. 選取 新增部署群組

  4. 輸入 Release 部署組名,然後選取 [建立 ]。 會產生註冊腳本。 您可以使用提供的腳本來註冊目標伺服器,如果是自己工作的話。 不過,在本教學課程中,目標伺服器會自動註冊為發行管線的一部分。 發行定義會使用階段將應用程式部署至目標伺服器。 階段是工作的邏輯群組,可定義工作執行所在的運行時間目標。 每個部署群組階段都會在部署群組中定義的計算機上執行工作。

  5. Pipelines移至 Releases。 選擇名為 部署群組 的版本管線,然後選擇 編輯

  6. 選取 [工作] 索引標籤,以檢視管道中的部署工作。 這些工作分為三個階段,稱為「代理程式」階段部署群組階段,以及 IIS 部署階段

  7. 選取 代理程式階段。 在這個階段中,目標伺服器會使用 Azure 資源群組部署任務與部署群組相關聯。 若要執行,必須定義代理程式集區和規格。 選取 Azure Pipelines 集區,並 windows 最新版 規格。

    設定代理程序階段

  8. 選取 Azure 資源群組部署 工作。 設定 Azure 訂用帳戶的服務連線,此訂用帳戶先前用於創建基礎架構。 授權連線之後,請選取為本教學課程建立的資源群組。

    建立 Azure 服務連線

  9. 這項工作會在裝載於 Azure 的虛擬機上執行,而且必須能夠連線回此管線,才能完成部署群組需求。 若要保護連線,他們需要 個人存取權杖 (PAT)。 從 [用戶設定] 下拉式清單中,於新分頁 中開啟 [ 個人存取令牌]。大部分的瀏覽器都支援透過滑鼠右鍵選單開啟新分頁中的連結,或使用 Ctrl+Click

    導覽至個人存取權杖

  10. 在新標籤中,選取 新令牌

  11. 輸入名稱,然後選取 完整存取 範圍。 選取 ,然後選擇 來建立令牌。 建立之後,複製令牌並關閉瀏覽器索引標籤。您返回 Azure Pipeline 編輯器。

    建立個人存取令牌

  12. Azure Pipelines 服務連線下,選取 新增

    新增 Azure Pipelines 服務連線

  13. 輸入 連線 URL 到目前的 Azure DevOps 實例。 此網址類似 https://dev.azure.com/[Your account]。 貼上稍早建立的 個人存取令牌,然後指定 服務連線名稱。 選擇 驗證並儲存

    建立 Azure Pipelines 服務連線

    備註

    若要註冊代理程式,您必須是代理程式集區中系統管理員角色的成員。 代理程式集區管理員的身分識別只有在註冊時才需要。 系統管理員身分識別不會保存在代理程式上,而且不會用於代理程式與 Azure Pipelines 之間的後續通訊。 註冊代理之後,就不需要更新個人存取令牌,因為它僅在註冊時才需要。

  14. 選取目前 團隊專案,以及之前建立的 部署群組

    設定 Azure Pipelines 部署群組

  15. 選取 部署群組階段 階段。 此階段會在部署群組中定義的計算機上執行工作。 此階段會連結至 SQL-Svr-DB 標籤。 從下拉式清單中選擇 [部署群組]

    設定部署群組階段

  16. 選取 IIS 部署階段 階段。 這個階段會使用指定的工作,將應用程式部署至網頁伺服器。 此階段會連結至 WebSrv 標籤。 從下拉式清單中選擇 [部署群組]

  17. 選取 [中斷 Azure 網路負載平衡器] 的工作。 當目標機器連線到 NLB 時,此工作會在部署前中斷電腦與 NLB 的連線,並在部署後將其重新連線回 NLB。 設定工作以使用 Azure 連線、資源群組和負載平衡器(應該只有一個)。

  18. 選取 [IIS Web 應用程式管理] 項工作。 此工作會在為工作/階段設定的部署群組註冊的部署目標計算機上執行。 系統會在本機建立名為 PartsUnlimited 的 Web 應用程式和應用程式集區,並在埠 80 下執行。

  19. 選取 IIS Web 應用程式部署 項目。 此工作會在為工作/階段設定的部署群組註冊的部署目標計算機上執行。 它會使用 Web Deploy將應用程式部署至 IIS 伺服器。

  20. 選取 [連線 Azure 網路負載平衡器 工作。 設定工作以使用 Azure 連線、資源群組和負載平衡器(應該只有一個)。

  21. 選取 [變數] 索引卷標、建立變數,並提供各自的值,如下列範例所示:

    變數名稱 變數值
    資料庫名稱 PartsUnlimited-Dev
    DBPassword xxxxxxxx
    DBUserName xxxxxxxx
    DefaultConnectionString 數據源=[YOUR_DNS_NAME];初始目錄=PartsUnlimited-Dev;使用者 ID=xxxxxxxx;密碼=xxxxxxxx;MultipleActiveResultSets=False;連線逾時=30;
    伺服器名稱 localhost

    這很重要

    請務必將稍早從 Azure 入口網站記錄的 SQL Server DNS 名稱替換到 DefaultConnectionString 變數中。

    取代 SQL DNS 之後,您的 DefaultConnectionString 看起來應該如下所示:

    Data Source=cust1sqljo5zndv53idtw.westus2.cloudapp.azure.com;Initial Catalog=PartsUnlimited-Dev;User ID=xxxxxxxx;Password=xxxxxxxx;MultipleActiveResultSets=False;Connection Timeout=30;

    最終變數清單看起來應該像這樣:

    設定管線變數

    備註

    您可能會收到錯誤,指出 DefaultConnectionString 變數必須儲存為秘密。 如果發生這種情況,請選取變數,然後按兩下其值旁邊的掛鎖圖示來保護它。

排程發行並檢視部署

  1. 選取 [儲存] 並確認。

  2. 選取 [建立發行] 並確認。 监督发布过程直至完成。 然後,部署即可進行審查。

  3. 在 Azure 入口網站中,開啟資源群組中的其中一個 Web VM。 您可以選取名稱中有 websrv 的任何項目。

    尋找網路 VM

  4. 複製 VM 的 DNS Azure Load Balancer 會將連入流量分配給定義於負載平衡集中且狀況良好的伺服器實例。 因此,所有 Web 伺服器實例 DNS 都相同。

    尋找 Web 應用程式網域

  5. 開啟 VM DNS 的新瀏覽器索引標籤。 確認已部署的應用程式正在執行。

    檢閱應用程式

總結

在本教學課程中,您已使用 Azure Pipelines 和部署群組,將 Web 應用程式部署至一組 Azure VM。 雖然此情境涵蓋少數機器,但您可以輕鬆地擴大流程,以支援數百甚至數千部機器,並可採用幾乎任何配置。

清除資源

本教學課程已建立 Azure DevOps 專案和 Azure 中的一些資源。 如果您不打算繼續使用這些資源,請使用下列步驟來刪除資源:

  1. 刪除 Azure DevOps 示範產生器所建立的 Azure DevOps 專案。

  2. 本教學課程期間建立的所有 Azure 資源都會指派給建立期間指定的資源群組。 刪除該群組將會刪除其所包含的資源。 此刪除可以透過 CLI 或入口網站來完成。

後續步驟