環境での VM リソースの管理

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

この記事では、環境で仮想マシン (VM) リソースを使用して、複数のマシンにまたがる Azure Pipelines デプロイを管理する方法について説明します。 また、展開をローリングするために、独自のサーバーにエージェントをインストールすることもできます。

VM リソースは、開発、テスト、運用などの 環境に存在できます。 環境を定義したら、デプロイでターゲットに VM を追加できます。 環境のデプロイ履歴は、各 VM からパイプラインへの追跡可能性を提供します。

前提条件

Note

デプロイ グループ エージェントを構成する場合、または VM 環境リソースを登録するときにエラーが発生した場合は、個人用アクセス トークン (PAT) スコープを すべてのアクセス可能な組織に設定してください。

環境の作成

VM リソースを環境に追加するには、次の手順に従います。 同じプロセスを使用して、物理マシンを設定できます。

VM リソースを追加する

  1. Azure DevOps プロジェクトで、Pipelines>Environments に移動し[環境の作成または新しい環境を選択

  2. 最初の New 環境 画面で、 Name と省略可能な Description を追加します。

  3. Resourceで、仮想マシンを選択し、次へ選択

    環境の追加を示すスクリーンショット。

登録スクリプトをコピーする

VM リソースのエージェント スクリプトは、セルフホステッド エージェントのスクリプトに似ていますが、同じコマンドを使用します。 スクリプトには、サインインしているユーザーの Azure DevOps 個人用アクセス トークン (PAT) が含まれます。このトークンは、スクリプトが生成されてから 3 時間後に期限切れになります。

  1. 次の 新しい環境 画面で、[ システムの動作で Linux を選択します。

  2. Linux 登録スクリプトをコピーします。

    仮想マシンの追加を示すスクリーンショット。

このスクリプトは、環境に追加されたすべての Linux VM で同じです。 エージェント スクリプトのインストールの詳細については、「 セルフホステッド Linux エージェントを参照してください。

コピーしたスクリプトを実行する

  1. Close を選択し、新しい環境が作成されることに注意してください。 PAT の有効期限が切れた場合など、スクリプトをもう一度コピーするには、 リソースの追加を選択します。

    新しい環境で作成されたメッセージのスクリーンショット。

  2. 環境に登録する各ターゲット VM でコピーしたスクリプトを実行します。

    Note

    VM に既に別のエージェントが実行されている場合は、環境に登録する agent の一意の名前を指定します。

VM が登録されると、環境の Resources タブにリソースとして表示されます。

[リソース] タブのスクリーンショット。

パイプラインで VM を使用する

YAML パイプラインでは、その環境を参照して VM をターゲットにすることができます。 既定では、ジョブは、その環境の resourceNameに登録されているすべての VM を対象とします。

Note

ステージを再試行すると、失敗したターゲットだけでなく、すべての 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"

Note

virtualMachineなどのresourceType値では、大文字と小文字が区別されます。 大文字と小文字が正しくないと、一致するリソースが見つかりません。

resourceNameで指定することで、環境内の特定の VM にデプロイできます。 次の例では、VMenv環境の RESOURCE-PC という名前の 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 のみを使用します。 次の例では、 windows タグと prod タグの両方を持つ VM のみを対象としています。 タグが 1 つしかない 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 では、 runOncerolling の両方の戦略がサポートされています。 デプロイ戦略とライフサイクル フックの詳細については、「 デプロイ戦略を参照してください。

デプロイ履歴を表示する

[デプロイ] タブを選択して、コミットと作業項目の完全な追跡可能性と、環境およびリソースごとのクロスパイプライン デプロイ履歴を確認します。

VM のデプロイ ビューを示すスクリーンショット。

環境から VM を削除する

Linux 環境から VM を削除するには、それぞれのマシンで次のコマンドを実行します。

./config.sh remove