次の方法で共有


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

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

Azure Pipelines 環境 は、パイプラインからのデプロイでターゲットにできる リソース のグループです。 一般的な環境には、開発、テスト、運用などがあります。

物理マシンまたは仮想マシン (VM) リソースを環境に追加するには、マシンにエージェントをインストールします。 その後、環境のデプロイ履歴によって、各マシンからの追跡可能性が提供されます。 この記事では、環境を定義して使用して、VM またはサーバー リソース間のデプロイを管理する方法について説明します。

Note

Azure DevOps 環境は、YAML パイプラインでのみ使用できます。 クラシック パイプラインの場合、 デプロイ グループ も同様の機能を提供します。

前提条件

この記事の手順を実行するには、次の前提条件が必要です。

環境を作成して VM を追加する

VM または物理マシンを環境に追加するには、次の手順に従います。

VM リソースを使用して環境を作成する

  1. Azure DevOps プロジェクトで、[パイプライン]>[環境] の順に選択し、[環境を作成] または [新規環境] の順に選択します。

  2. [ 新しい環境 ] 画面で、 名前 とオプションの説明を入力 します

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

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

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

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

Note

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

  1. [ 仮想マシン リソース ] 画面で、[ オペレーティング システム] で [Linux] を選択します。

  2. アイコンを選択して Linux 登録スクリプトをコピーします。

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

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

VM でコピーした登録スクリプトを実行する

  1. を選択してを閉じます。 新しい環境が作成されます。 PAT の有効期限が切れた場合など、スクリプトをもう一度コピーするには、環境のページで [ リソースの追加] をもう一度選択します。

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

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

    Note

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

  3. VM が登録されたら、Azure Pipelines 環境ページの [ リソース ] タブに VM が表示されることを確認します。

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

YAML パイプラインで環境を使用する

YAML デプロイ ジョブ内の VM リソースをターゲットにするには、その環境を参照します。 YAML デプロイ ジョブの詳細については、YAML パイプライン スキーマ リファレンス「デプロイ ジョブjobs.deployment 定義」を参照してください。

次のパイプライン デプロイ ジョブは、 VMEnv 環境の VM でのみ実行されます。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VMenv
  environment: VMenv
  strategy:
     runOnce:
        deploy:   
          steps:
            - script: echo "Hello world"

VM リソース名を環境名に追加することで、環境内の特定の VM をターゲットにすることができます。 次の例では、RESOURCE-PC環境の VMenv という名前の VM リソースにのみデプロイします。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

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

jobs-deployment-environment キーワードの完全な構文を使用し、resourceNameに一覧表示して特定の環境 VM にデプロイすることもできます。

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to RESOURCE-PC in VMenv with full syntax
  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"

Note

  • resourceTypeなどのvirtualMachine値では、大文字と小文字が区別されます。 大文字と小文字が正しくないと、一致するリソースが見つかりません。
  • ステージを再試行すると、失敗したターゲットだけでなく、指定されたすべての VM でデプロイが再実行されます。

デプロイ戦略

デプロイ ジョブでは、デプロイ strategy を適用して、アプリケーションをロールアウトする方法を定義します。 VM では、 runOncerolling の両方の戦略がサポートされています。 デプロイ戦略とライフサイクル フックの詳細については、「 デプロイ戦略を参照してください。

Permissions

環境を使用するパイプラインを初めて実行するときは、エージェント プールと環境にアクセスするためのパイプラインのすべての実行に対するアクセス許可を付与する必要があります。 パイプライン実行の概要画面でジョブの横にある待機中シンボルを選択し、[許可] を選択して必要なアクセス許可を付与します。

タグを追加および管理する

タグは、デプロイのために特定の環境 VM のセットをターゲットにする方法です。 tags キーワードでenvironmentを指定すると、パイプラインはタグが適用されている環境 VM にのみデプロイされます。

VM に適用できるタグの数に制限はありません。 タグ名はそれぞれ 256 文字に制限されています。

タグを適用または削除するには、環境の [リソース] タブの VM の横にある [その他のアクション] アイコンを選択します。

UI での VM タグの設定を示すスクリーンショット。

VM にエージェント スクリプトを登録するときに、タグを対話形式で適用することもできます。

対話型スクリプトでの VM タグの設定を示すスクリーンショット。

複数のタグを指定した場合、パイプラインはすべてのタグを含む VM にのみデプロイされます。 次の例では、 windows タグと prod タグの両方を持つ VM のみを対象としています。 パイプラインは、タグが 1 つだけまたはまったくない 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"

デプロイ履歴を表示する

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

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

環境から VM を削除する

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

./config.sh remove