在 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 入口網站 來檢閱指定資源群組中產生的所有資源。 選取名稱中有 sqlSrvDB 伺服器 VM,以檢視其詳細數據。

    部署至 Azure 的資源群組。

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

    SQL DNS 部署至 Azure。

建立和設定部署群組

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

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

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

  2. 從 [管線] 下方,流覽至 [部署群組]。

    瀏覽至 [管線] 底下的 [部署群組]

  3. 選取 [新增部署群組]。

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

  5. 從 [管線] 底下,流覽至 [發行]。 選取名為 [部署群組 ] 的發行管線,然後選取 [ 編輯]。

  6. 選取 [工作] 索引標籤,以檢視管線中的部署工作。 這些工作會組織為三個階段,稱為 代理程序階段部署群組階段IIS 部署階段

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

    設定代理程序階段

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

    建立 Azure 服務連線

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

    瀏覽至個人存取令牌

  10. 在新的索引標籤中,選取 [ 新增令牌]。

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

    Creating a personal access token (建立個人存取權杖)

  12. 在 [Azure Pipelines 服務連線] 底下,選取 [新增]。

    新增 Azure Pipelines 服務連線

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

    建立 Azure Pipelines 服務連線

    注意

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

  14. 選取目前的 Team專案 和稍早建立的 部署群組

    設定 Azure Pipelines 部署群組

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

    設定部署群組階段

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

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

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

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

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

  21. 選取 [ 變數] 索引標籤,然後輸入變數值,如下所示。

    變數名稱 變數值
    DatabaseName PartsUnlimited-Dev
    DBPassword P2ssw0rd@123
    DBUserName sqladmin
    Default 連線 ionString 數據源=[YOUR_DNS_NAME];初始目錄=PartsUnlimited-Dev;用戶標識碼=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;連線 ion Timeout=30;
    ServerName localhost

    重要

    請務必在 Default 連線 ionString 變數中取代 SQL Server DNS 名稱(您先前從 Azure 入口網站 記下的名稱)。

    取代 SQL DNS 之後,您的 Default 連線 ionString 應該類似此字串:

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

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

    設定管線變數

    注意

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

佇列發行並檢閱部署

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

  2. 選取 [ 建立發行 並確認]。 遵循發行到完成。 然後,部署即可進行檢閱。

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

    尋找 Web VM

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

    尋找 Web 應用程式網域

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

    檢閱應用程式

摘要

在本教學課程中,您已使用 Azure Pipelines 和部署群組,將 Web 應用程式部署至一組 Azure VM。 雖然此案例涵蓋少數機器,但您可以使用幾乎任何設定,輕鬆地相應增加程式以支援數百部甚至數千部機器。

清除資源

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

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

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

下一步