共用方式為


管理環境中的 VM 資源

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020

本文說明如何在環境中使用虛擬機 (VM) 資源來管理跨多部機器的 Azure Pipelines 部署。 您也可以在自己的伺服器上安裝代理程式,以進行輪流部署。

VM 資源可以存在於 開發、測試或生產環境等環境中。 定義環境之後,您可以使用部署將 VM 新增至目標。 環境的部署歷程記錄提供每個 VM 到管線的可追蹤性。

必要條件

注意

若要設定部署群組代理程式,或在註冊 VM 環境資源時看到錯誤,請確定您已將個人存取令牌 (PAT) 範圍設定為 [所有可存取的組織]。

建立環境

使用下列程式將 VM 資源新增至環境。 您可以使用相同的程式來設定實體機器。

新增 VM 資源

  1. 在您的 Azure DevOps 專案中,移至 [管線>環境],然後選取 [建立環境] 或 [新增環境]。

  2. 在第一個 [新增環境] 畫面上,新增 [ 名稱 ] 和選擇性 [描述]。

  3. 在 [資源] 下,選取 [虛擬機],然後選取 [下一步]。

    顯示新增環境的螢幕快照。

複製註冊腳本

VM 資源的代理程式腳本就像自我裝載代理程式的腳本,並使用相同的命令。 這些腳本包含登入使用者的 Azure DevOps 個人存取令牌(PAT),在產生腳本三小時後到期。

  1. 在下一個 [新增環境] 畫面上,選擇 [操作系統] 下的 [Linux]。

  2. 複製 Linux 註冊腳本。

    顯示新增虛擬機的螢幕快照。

針對新增至環境的所有 Linux VM,腳本都相同。 如需安裝代理程式腳本的詳細資訊,請參閱 自我裝載 Linux 代理程式

執行複製的腳本

  1. 選取 [ 關閉],並記下新環境已建立。 若要再次複製腳本,例如,如果您的 PAT 到期,請選取 [ 新增資源]。

    新環境已建立訊息的螢幕快照。

  2. 在您想要向環境註冊的每個目標 VM 上執行複製的腳本。

    注意

    如果 VM 上已經有另一個代理程式正在執行,請為代理程式提供唯一的名稱,以向環境註冊。

註冊 VM 之後,它就會顯示為環境 [資源] 索引標籤下的資源。

[資源] 索引標籤的螢幕快照。

在管線中使用 VM

在 YAML 管線中,您可以藉由參考 VM 環境來鎖定 VM。 根據預設,作業會以該環境 resourceName註冊的所有 VM 為目標。

注意

當您重試階段時,部署會在所有 VM 上重新執行,而不只是失敗的目標。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
   name: VMenv
   resourceName: VMenv
   resourceType: virtualMachine
  strategy:
     runOnce:
        deploy:   
          steps:
            - script: echo "Hello world"

注意

resourceType之類的virtualMachine值會區分大小寫。 不正確的大小寫會導致找不到相符的資源。

您可以在 中 resourceName指定它們,以部署至環境中的特定 VM。 下列範例只會部署到環境中名為 RESOURCE-PCVMenv VM 資源。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    resourceName: RESOURCE-PC # only deploy to the VM resource named RESOURCE-PC
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

如需 YAML 管線部署作業的詳細資訊,請參閱 YAML 管線架構

新增和管理標籤

標籤是一種在環境中以特定 VM 作為部署目標的方法。 標籤各限制為 256 個字元。 您可以使用的標籤數目沒有限制。

您可以在互動式註冊腳本或透過UI中新增標籤或移除 VM 的標籤,方法是選取 VM 資源的 [更多動作]。

顯示設定 VM 標籤的螢幕快照。

如果您指定多個標記,管線只會使用包含所有標記的 VM。 下列範例只會以同時具有 windowsprod 標籤的 VM 為目標。 只有一個或沒有標記的 VM 不會設為目標。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    tags: windows,prod # only deploy to VMs with both windows and prod tags
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

套用部署策略

您可以套用部署 strategy 來定義如何推出應用程式。 VM 同時 runOnce 支援 和 rolling 策略。 如需部署策略和生命週期攔截的詳細資訊,請參閱 部署策略

檢視部署歷程記錄

選取 [ 部署] 索引 標籤,以完整追蹤認可和工作專案,以及每個環境和資源的跨管線部署歷程記錄。

顯示 VM 部署檢視的螢幕快照。

從環境移除 VM

若要從 Linux 環境移除 VM,請在每部電腦上執行下列命令。

./config.sh remove