環境 - 虛擬機資源

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

使用虛擬機 (VM) 資源來管理使用 YAML 管線跨多部機器的部署。 VM 資源可讓您在自己的伺服器上安裝代理程式,以進行輪流部署。

VM 資源會連線到 環境。 定義環境之後,您可以使用部署將 VM 新增至目標。 環境中的部署歷程記錄檢視提供從 VM 到管線的可追蹤性。

必要條件

您至少必須具備基本授權和下列區域的存取權:

  • 線上至管線的存放庫
  • 您想要連線到環境的 VM

如需 Azure Pipelines 安全性的詳細資訊,請參閱 管線安全性資源

若要將 VM 新增至環境,您必須具有對應部署集區的 管理員 istrator 角色。 部署集區是組織可用的一組目標伺服器。 深入瞭解 部署集區和環境許可權

注意

如果您要設定部署群組代理程式,或在註冊 VM 環境資源時看到錯誤,則必須將 PAT 範圍設定為 [所有可存取的組織]。

建立 VM 資源

注意

您可以使用這個相同的程式來設定具有註冊腳本的實體機器。

新增 VM 資源的第一個步驟是定義環境。

定義環境

  1. 視您的第一個環境而定,選取 [建立環境 ] 或 [新增環境]。
  2. 為環境和描述新增名稱(必要)。
  3. 儲存新的環境。

新增資源

  1. 選取您的環境,然後選擇 [ 新增資源]。

  2. 選取 [資源類型的虛擬機]。 然後選取下一步

    Add an environment.

  3. 針對 操作系統選擇 [Windows] 或 [Linux]。

  4. 複製註冊腳本。 如果您已選取 Windows,且已選取 Linux 腳本,您的腳本將會是 PowerShell 腳本

    Add a virtual machine.

  5. 在您想要向這個環境註冊的每個目標虛擬機上執行複製的腳本。

    • 如果您要在 Windows 上安裝,您必須以 PowerShell 系統管理員身分執行腳本。
    • 如果您要在 Linux 上安裝,您必須擁有下載和執行可執行腳本的許可權。

    注意

    • 登入用戶的個人存取令牌 (PAT) 會包含在腳本中。 PAT 會在您產生文本的當天到期。
    • 如果您的 VM 上已執行任何其他代理程式,請提供唯一的名稱給 代理程式 ,以向環境註冊。
    • 若要深入瞭解如何安裝代理程式腳本,請參閱自我裝載 Linux 代理程式和自我裝載的 Windows 代理程式。 VM 資源的代理程式腳本就像自我裝載代理程式的腳本,而且您可以使用相同的命令。
  6. 一旦您的 VM 註冊之後,它就會在環境的 [資源] 索引卷標下顯示為環境資源。

  7. 若要新增更多 VM,請再次複製腳本。 選取 [新增資源>虛擬機]。 針對新增至環境的所有 VM,Windows 和 Linux 腳本都相同。

  8. 成功安裝 VM 指令稿時,您的 VM 會出現在環境的資源清單中。

    View resources.

在管線中使用 VM

藉由參考環境,將管線中的 VM 設為目標。 根據預設,管線作業會針對針對具有 resourceName的環境定義的所有 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 值會區分大小寫。 指定不正確的大小寫會導致環境中找不到相符的資源。 如需詳細資訊, 請參閱 YAML 架構

您可以從環境中選取特定的虛擬機,以只透過其 resourceName指定來接收部署。 例如,若要將目標部署至環境中名為 USHAN-PCVMenv 虛擬機資源,請新增 resourceName 參數,並將 值 USHAN-PC提供給它。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

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

若要深入瞭解部署作業,請參閱 YAML 架構

新增和管理標籤

標籤可讓您在環境中以一組特定的 VM 為目標進行部署。 您可以將標籤新增至 VM 作為互動式註冊腳本的一部分,或透過 UI。 標籤各限制為 256 個字元。 您可以使用的標籤數目沒有限制。

從資源檢視中新增或移除UI中的標籤,方法是選取VM資源的[更多動作]。

Set VM tags.

當您選取多個標籤時,包含管線中使用的所有標籤的 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 virtual machines with both windows and prod tags
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

套用部署策略

套用部署策略來定義應用程式推出的方式。 runOnce 同時支援 VM 的策略和 rolling 策略。 如需部署策略和生命週期勾點的詳細資訊,請參閱 部署作業/部署策略

檢視部署歷程記錄

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

VMDeployments_view

從環境移除 VM

Windows 環境

若要從 Windows 環境移除 VM,請執行下列命令。 請確定您執行下列工作:

  • 從系統管理員 PowerShell 命令提示字元執行命令
  • 在每部電腦上執行 命令
  • 在與執行環境註冊命令相同的資料夾路徑中執行 命令
./config.cmd remove

Linux 環境

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

./config.sh remove

已知的限制

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