環境 - 仮想マシン リソース

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

仮想マシン (VM) リソースを使用して、YAML パイプラインで複数のマシンにわたるデプロイを管理します。 VM リソースを使用すると、ローリング デプロイのためのエージェントを独自のサーバーにインストールできます。

VM リソースは環境に接続します。 環境を定義したら、デプロイでターゲットに VM を追加できます。 環境内のデプロイ履歴ビューでは、VM からパイプラインへの追跡可能性が提供されます。

前提条件

少なくとも Basic ライセンスと、次の領域へのアクセス権を持っている必要があります。

  • パイプラインに接続されているリポジトリ
  • 環境に接続する VM

Azure Pipelines のセキュリティの詳細については、「パイプライン リソース」を参照してください。

VM を環境に追加するには、対応する配置プールの管理者ロールが必要です。 配置プールは組織が使用できる一連のターゲット サーバーです。 配置プールと環境のアクセス許可の詳細を確認してください。

注意

配置グループ エージェントを構成している場合、または VM 環境リソースの登録時にエラーが発生した場合は、PAT スコープを [すべてのアクセス可能な組織] に設定する必要があります。

VM リソースを作成する

注意

この同じプロセスを使用して、登録スクリプトで物理マシンを設定できます。

VM リソースを追加する最初のステップは、環境を定義することです。

環境を定義する

  1. 最初の環境に応じて、[環境の作成] または [新しい環境] を選択します。
  2. 環境の [名前] (必須) と [説明] を追加します。
  3. 新しい環境を保存します。

リソースの追加

  1. 環境を選択して、[リソースの追加] を選択します。

  2. [リソース] の種類に [仮想マシン] を選択します。 [次へ] を選択します。

    Add an environment.

  3. [オペレーティング システム] で Windows または Linux を選択します。

  4. 登録スクリプトをコピーします。 スクリプトは、Windows を選択した場合は PowerShell スクリプトに、Linux を選択した場合は Linux スクリプトになります。

    Add a virtual machine.

  5. この環境に登録する必要があるターゲット仮想マシンごとに、コピーしたスクリプトを実行します。

    • Windows にインストールする場合は、PowerShell 管理者がスクリプトを実行する必要があります。
    • Linux にインストールする場合は、実行可能スクリプトをダウンロードして実行する権限が必要です。

    注意

    • サインインしたユーザーの個人用アクセス トークン (PAT) がスクリプトに含まれます。 PAT はスクリプトを生成した日に有効期限が切れます。
    • VM で既に他のエージェントが実行されている場合は、エージェントに一意の名前を指定して環境に登録します。
    • エージェント スクリプトのインストールの詳細については、「セルフホステッド Linux エージェント」と「セルフホステッド Windows エージェント」を参照してください。 VM リソースのエージェントスクリプトは、セルフホステッド エージェントのスクリプトと似ています。また、同じコマンドを使用できます。
  6. VM が登録されると、環境の [リソース] タブの下に環境リソースとして表示されます。

  7. VM をさらに追加するには、もう一度スクリプトをコピーします。 [リソースの追加] > [仮想マシン] の順に選択します。 Windows と Linux のスクリプトは、環境に追加されるすべての VM で同じです。

  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 で指定することで、デプロイのみを受け取ることができます。 たとえば、VMenv 環境の USHAN-PC という名前の仮想マシン リソースのみをデプロイのターゲットにするには、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 のセットをデプロイのターゲットにできます。 タグは、対話型登録スクリプトの一部として、または UI を使用して VM に追加できます。 タグはそれぞれ 256 文字以内に制限されています。 使用できるタグの数に制限はありません。

VM リソースの [その他の操作] を選択して、リソース ビューから UI のタグを追加または削除します。

Set VM tags.

複数のタグを選択すると、すべてのタグを含む 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 virtual machines with both windows and prod tags
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

デプロイ戦略を適用する

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

デプロイ履歴を表示する

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

VMDeployments_view

環境から VM を削除する

Windows 環境

Windows 環境から VM を削除するには、次のコマンドを実行します。 次のタスクを実行していることを確認します。

  • 管理者の PowerShell コマンド プロンプトからコマンドを実行する
  • それぞれのマシンでコマンドを実行する
  • 環境登録コマンドが実行されたフォルダー パスと同じフォルダー パスでコマンドを実行する
./config.cmd remove

Linux 環境

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

./config.sh remove

既知の制限事項

ステージを再試行すると、失敗したターゲットだけでなく、すべての VM でデプロイが再実行されます。