エージェント プールの作成と管理

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018

注意

Microsoft Team Foundation Server (TFS) 2018 以前のバージョンでは、ビルドとリリースの "パイプライン" は "定義"、"実行" は "ビルド"、"サービス接続" は "サービス エンドポイント"、"ステージ" は "環境"、"ジョブ" は "フェーズ" と呼ばれます。

エージェント プールは、エージェントのコレクションです。 各 エージェント を個別に管理する代わりに、エージェントを エージェント プールに整理します。 TFS では、プールはサーバー全体にスコープされます。を使用して、プロジェクト コレクションとプロジェクト間でエージェント プールを共有できます。

エージェント キューは、プロジェクト内のエージェント プールへのアクセスを提供します。 ビルドまたはリリース パイプラインを作成するときに、使用するキューを指定します。 キューのスコープは TFS 2017 以降のプロジェクトであるため、プロジェクト内のビルド パイプラインとリリース パイプライン間でのみ使用できます。

エージェント プールを複数のプロジェクトと共有するには、これらの各プロジェクトで、同じエージェント プールを指すエージェント キューを作成します。 プロジェクト間で複数のキューで同じエージェント プールを使用できますが、プロジェクト内の複数のキューで同じエージェント プールを使用することはできません。 また、各エージェント キューで使用できるエージェント プールは 1 つだけです。

TFS 2017 および TFS 2018 ビルド システム アーキテクチャ

エージェント プールは、エージェントのコレクションです。 各 エージェント を個別に管理する代わりに、エージェントをエージェント プールに整理します。 エージェントを構成すると、エージェントは 1 つのプールに登録され、パイプラインを作成するときに、パイプラインを実行するプールを指定します。 パイプラインを実行すると、パイプラインの 要求 を満たすそのプールのエージェントで実行されます。

Azure Pipelines では、プールは組織全体にスコープされます。を使用して、プロジェクト間でエージェント マシンを共有できます。

Azure DevOps Serverでは、エージェント プールはサーバー全体を対象とするため、プロジェクトやコレクション間でエージェント マシンを共有できます。

注意

エージェント プール ジョブは、1 つのエージェントでジョブを実行します。 クラシック リリース パイプラインのデプロイ グループなど、すべてのエージェントでジョブを実行する必要がある場合は、「 デプロイ グループのプロビジョニング」を参照してください。

管理設定の [エージェント プール] タブからエージェント プールを作成および管理します。

組織の管理者の場合は、管理者設定の [エージェント プール] タブからエージェント プールを作成および管理します。

  1. Azure DevOps組織の設定を選択します。

    [組織の設定] を選択します。

  2. [エージェント プール] を選択します

    [エージェント プール] タブを選択します。

  1. Azure DevOpsコレクションの設定を選択します。

    [コレクションの設定] を選択します。

  2. [エージェント プール] を選択します

    [エージェント プール] を選択します。

  1. Azure DevOpsコレクションの設定を選択します。

    コレクション設定、2019 年。

  2. [エージェント プール] を選択します

    [エージェント プール] (2019 年) を選択します。

  1. プロジェクトに移動し、[ 設定] (歯車アイコン) >エージェント キューを選択します

    [設定]、[エージェント キュー]、2018 を選択します。

  2. [ プールの管理] を選択します。

    [プールの管理] (2018 年) を選択します。

エージェント キューは、プロジェクト設定の [エージェント キュー] タブから作成および管理します。

プロジェクト チーム メンバーの場合は、プロジェクト設定の [エージェント プール] タブからエージェント キューを作成および管理します。

プロジェクトに移動し、 プロジェクト設定エージェント プールを選択します。

プロジェクトに移動し、プロジェクト設定、エージェント プールを選択します。

プロジェクトに移動し、 プロジェクト設定エージェント プールを選択します。

プロジェクトに移動し、プロジェクト設定、エージェント プール (2020) を選択します。

プロジェクトに移動し、 プロジェクト設定エージェント プールを選択します。

プロジェクトに移動し、プロジェクト設定、エージェント プール (2019) を選択します。

プロジェクトに移動し、[ 設定] (歯車アイコン) >エージェント キューを選択します

設定、エージェント キュー、TFS 2018 を選択します。

既定のエージェント プール

既定では、次のエージェント プールが提供されます。

  • Azure Pipelines は、 さまざまな Windows、Linux、および macOS イメージを使用してプールをホストしました。 使用可能なイメージとそのインストール済みソフトウェアの完全な一覧については、 Microsoft がホストするエージェントを参照してください。

    注意

    Azure Pipelines でホストされるプールは、対応するイメージにマップされた名前を持つ以前のホストされたプールに置き換えられます。 以前のホストされたプールにジョブがあった場合、新しい Azure Pipelines ホストプール内の正しいイメージに自動的にリダイレクトされます。 状況によっては、古いプール名が引き続き表示されることがありますが、バックグラウンドでホストされるジョブは Azure Pipelines プールを使用して実行されます。 詳細については、2019 年 7 月 1 日 - スプリント 154 リリース ノート単一ホストプールリリース ノートを参照してください。

既定では、プロジェクト内のすべての共同作成者は、ホストされているプールの ユーザー ロールのメンバーです。 これにより、プロジェクト内のすべての共同作成者が、Microsoft ホスト型エージェントを使用してパイプラインを作成および実行できます。

パイプライン内のプールを指定する

YAML パイプラインは、Azure DevOps Server 2019 以降でサポートされています。

Azure DevOps Services YAML パイプラインの Azure Pipelines プールから Microsoft ホスト型エージェントを選択するには、このテーブルの YAML VM イメージ ラベルを使用して、イメージの名前を指定します。

pool:
  vmImage: ubuntu-latest # This is the default if you don't specify a pool or vmImage.

要求なしでプライベート プールを使用するには:

pool: MyPool

詳細については、プールYAML スキーマを参照してください。

プールとキューの管理

管理設定の [エージェント プール] タブからエージェント プールを作成および管理します。

組織の管理者の場合は、管理者設定の [エージェント プール] タブからエージェント プールを作成および管理します。

  1. Azure DevOps組織の設定を選択します。

    [組織の設定] を選択します。

  2. [エージェント プール] を選択します

    [エージェント プール] タブを選択します。

  1. Azure DevOpsコレクションの設定を選択します。

    [コレクションの設定] を選択します。

  2. [エージェント プール] を選択します

    [エージェント プール] を選択します。

  1. Azure DevOpsコレクションの設定を選択します。

    コレクション設定、2019 年。

  2. [エージェント プール] を選択します

    [エージェント プール] (2019 年) を選択します。

  1. プロジェクトに移動し、[ 設定] (歯車アイコン) >エージェント キューを選択します

    [設定]、[エージェント キュー]、2018 を選択します。

  2. [ プールの管理] を選択します。

    [プールの管理] (2018 年) を選択します。

エージェント キューは、プロジェクト設定の [エージェント キュー] タブから作成および管理します。

プロジェクト チーム メンバーの場合は、プロジェクト設定の [エージェント プール] タブからエージェント キューを作成および管理します。

プロジェクトに移動し、 プロジェクト設定エージェント プールを選択します。

プロジェクトに移動し、プロジェクト設定、エージェント プールを選択します。

プロジェクトに移動し、 プロジェクト設定エージェント プールを選択します。

プロジェクトに移動し、プロジェクト設定、エージェント プール (2020) を選択します。

プロジェクトに移動し、 プロジェクト設定エージェント プールを選択します。

プロジェクトに移動し、プロジェクト設定、エージェント プール (2019) を選択します。

プロジェクトに移動し、[ 設定] (歯車アイコン) >エージェント キューを選択します

設定、エージェント キュー、TFS 2018 を選択します。

プールはジョブの実行に使用されます。 ジョブのプールを指定する方法について説明します。

さまざまなチームまたは目的を対象とした多数のセルフホステッド エージェントがある場合は、次に説明するように追加のプールを作成することをお望みかもしれません。

エージェント プールを作成する

セルフホステッド エージェント プールを作成する場合の一般的な状況を次に示します。

  • プロジェクトのメンバーであり、チームが所有する一連のマシンを使用して、ビルド ジョブとデプロイ ジョブを実行する必要があります。 まず、プロジェクト設定の [エージェント プール] ページで [ セキュリティ ] を選択して、プロジェクトにプールを作成するアクセス許可があることを確認します。 新しいプールを作成できるようにするには、 管理者 ロールが必要です。 次に、[ プールの追加] を選択し、組織レベルで 新しい プールを作成するオプションを選択します。 最後に、エージェントを インストール し、そのエージェント プールの一部として構成します。

  • あなたはインフラストラクチャ チームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 まず、組織の設定で [ エージェント プール ] ページに移動して、 管理者 ロールを持つすべてのエージェント プールのグループのメンバーであることを確認します。 次に、 新しいエージェント プール を作成し、プールの作成時 にすべてのプロジェクトで対応するエージェント プールを自動プロビジョニング するオプションを選択します。 この設定により、すべてのプロジェクトがこのエージェント プールにアクセスできるようになります。 最後に、エージェントを インストール し、そのエージェント プールの一部として構成します。

  • あなたは一連のエージェント マシンを複数のプロジェクト (すべてというわけではなく) と共有したいと考えています。 まず、いずれかのプロジェクトの設定に移動し、エージェント プールを追加し、組織レベルで 新しい プールを作成するオプションを選択します。 次に、他の各プロジェクトに移動し、 組織の既存のエージェント プールを使用するオプションを選択しながら、それぞれのプロジェクトにプールを作成します。 最後に、エージェントを インストール し、共有エージェント プールの一部として構成します。

  • プロジェクトのメンバーであり、チームが所有する一連のマシンを使用して、ビルド ジョブとデプロイ ジョブを実行する必要があります。 まず、管理者ロールを持つすべてのプールのグループのメンバーであることを確認します。 次に、プロジェクト設定で 新しいプロジェクト エージェント プール を作成し、 新しい組織エージェント プールを作成するオプションを選択します。 その結果、組織とプロジェクト レベルの両方のためのエージェント プールが作成されます。 最後に、エージェントを インストール し、そのエージェント プールの一部として構成します。

  • あなたはインフラストラクチャ チームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 まず、管理者ロールを持つすべてのプールのグループのメンバーであることを確認します。 次に、管理者設定で 新しい組織エージェント プール を作成し、プールの作成時 にすべてのプロジェクトで対応するプロジェクト エージェント プールを自動プロビジョニング するオプションを選択します。 この設定により、すべてのプロジェクトに、組織のエージェント プールを指すプールが確実に割り当てられます。 システムは既存のプロジェクトのプールを作成し、今後は新しいプロジェクトが作成されるたびにプールを作成します。 最後に、エージェントを インストール し、そのエージェント プールの一部として構成します。

  • あなたは一連のエージェント マシンを複数のプロジェクト (すべてというわけではなく) と共有したいと考えています。 最初に、いずれかのプロジェクトでプロジェクト エージェント プールを作成し、そのプールの 作成時に新しい組織エージェント プールを作成 するオプションを選択します。 次に、他の各プロジェクトに移動し、 既存の組織エージェント プールを使用するオプションを選択しながら、それぞれにプールを作成します。 最後に、エージェントを インストール し、共有エージェント プールの一部として構成します。

エージェント プールのセキュリティ

エージェント プールに対するセキュリティのしくみを理解することは、エージェントの共有と使用を制御するのに役立ちます。

ロール は各エージェント プールで定義され、これらのロールの メンバーシップ によって、エージェント プールに対して実行できる操作が制御されます。

組織の設定でのエージェント プールに対するロール 目的
Reader このロールのメンバーは、エージェント プールとエージェントを表示できます。 通常、これを使用して、エージェントとその正常性の監視を担当するオペレーターを追加します。
サービス アカウント このロールのメンバーは、組織エージェント プールを使用して、プロジェクトのプロジェクト エージェント プールを作成できます。 上記のガイドラインに従って新しいプロジェクトエージェントプールを作成する場合、通常はここにメンバーを追加する必要はありません。
管理者 上記のすべてのアクセス許可に加えて、このロールのメンバーは、組織エージェントプールからエージェントを登録または登録解除できます。 彼らは、プロジェクトのプロジェクト エージェント プールを作成する際に、組織エージェント プールを参照することもできます。 最終的に、組織エージェント プールのすべてのロールのメンバーシップを管理することもできます。 組織エージェント プールを作成したユーザーは、そのプールの管理者ロールに自動的に追加されます。

[エージェント プール] タブの [ すべてのエージェント プール ] ノードは、 すべての 組織のエージェント プールのセキュリティを制御するために使用されます。 個々の組織エージェント プールのロール メンバーシップは、"すべてのエージェント プール" ノードのロール メンバーシップから自動的に継承されます。 TFS またはAzure DevOps Serverを使用する場合、既定では、TFS とAzure DevOps Serverの管理者も "すべてのエージェント プール" ノードの管理者です。

ロールは各プロジェクト エージェント プールでも定義され、これらのロールのメンバーシップによって、プロジェクト レベルでエージェント プールに対して実行できる操作が制御されます。

プロジェクト設定でのエージェント プールに対するロール 目的
Reader このロールのメンバーは、プロジェクト エージェント プールを表示できます。 通常、これを使用して、そのプロジェクト エージェント プール内のビルド ジョブとデプロイ ジョブの監視を担当するオペレーターを追加します。
User このロールのメンバーは、パイプラインの作成時にプロジェクト エージェント プールを使用できます。
管理者 上記のすべての操作に加えて、このロールのメンバーは、プロジェクト エージェント プールのすべてのロールのメンバーシップを管理できます。 プールを作成したユーザーは、そのプールの管理者ロールに自動的に追加されます。

[エージェント プール] タブの [ すべてのエージェント プール ] ノードは、プロジェクト 内のすべての プロジェクト エージェント プールのセキュリティを制御するために使用されます。 個々のプロジェクト エージェント プールのロール メンバーシップは、"すべてのエージェント プール" ノードのロール メンバーシップから自動的に継承されます。 既定では、次のグループが [すべてのエージェント プール] の管理者ロールに追加されます: ビルド管理者、リリース管理者、プロジェクト管理者。

[エージェント プール] タブの [セキュリティ ] アクションは、プロジェクト 内のすべての プロジェクト エージェント プールのセキュリティを制御するために使用されます。 個々のプロジェクト エージェント プールのロール メンバーシップは、ここで定義した内容から自動的に継承されます。 既定では、次のグループが [すべてのエージェント プール] の管理者ロールに追加されます: ビルド管理者、リリース管理者、プロジェクト管理者。

よく寄せられる質問

メンテナンス期間をスケジュールしない場合、エージェントはいつメンテナンスを実行しますか?

スケジュールされた期間がない場合、そのプール内のエージェントはメンテナンス ジョブを実行しません。

メンテナンス ジョブとは

古い作業ディレクトリとリポジトリを定期的にクリーンアップするようにエージェント プールを構成できます。 これにより、エージェントのディスク領域が不足する可能性が減ります。 メンテナンス ジョブは、エージェント プール設定のプロジェクト コレクションまたは組織レベルで構成されます。

メンテナンス ジョブの設定を構成するには、次の手順を実行します。

  1. Azure DevOps組織の設定を選択します。

    [組織の設定] を選択します。

  2. [エージェント プール] を選択します

    [エージェント プール] タブを選択します。

  1. Azure DevOpsコレクションの設定を選択します。

    [コレクションの設定] を選択します。

  2. [エージェント プール] を選択します

    [エージェント プール] を選択します。

  1. Azure DevOpsコレクションの設定を選択します。

    コレクション設定、2019。

  2. [エージェント プール] を選択します

    [エージェント プール] (2019) を選択します。

  1. プロジェクトに移動し、[ 設定] (歯車アイコン) >[エージェント キュー] を選択します。

    [設定]、[エージェント キュー]、2018 を選択します。

  2. [ プールの管理] を選択します。

    [プールの管理] (2018) を選択します。

目的のプールを選択し、[ 設定] を選択して、そのエージェント プールのメンテナンス ジョブ設定を構成します。

重要

メンテナンス ジョブの設定を構成するには、 ビルド キューの管理 アクセス許可が必要です。 [設定] タブまたは [メンテナンス履歴] タブが表示されない場合、そのアクセス許可は管理者ロールに既定で付与されません。 詳細については、「 エージェント プールのセキュリティ」を参照してください。

メンテナンス ジョブの設定

TFS のメンテナンス ジョブの設定

目的の設定を構成し、[ 保存] を選択します。

[メンテナンス履歴] を選択して、現在のエージェント プールのメンテナンス ジョブ履歴を表示します。 ログをダウンロードして確認し、クリーニング手順と実行されたアクションを確認できます。

メンテナンス ジョブの履歴

メンテナンスは、マシンごとではなく、エージェント プールごとに行われます。そのため、1 台のマシンに複数のエージェント プールがある場合でも、ディスク領域の問題が発生する可能性があります。

セルフホステッド エージェント プールのメンテナンス ジョブが停止しているように見えます。 なぜですか?

通常、メンテナンス ジョブは、エージェント プール内になくなったエージェントでの実行を待機しているときに "スタック" します。 これは、たとえば、エージェントが意図的にオフラインになった場合や、エージェントとの通信に問題がある場合に発生します。

実行するキューに入れられていたメンテナンス ジョブは、実行まで 7 日間待機します。 その後、実行されていない場合、失敗した状態に自動的に設定されます。 この時間制限は変更できません。

7 日間の制限は、 メンテナンス ジョブのタイムアウト 設定とは異なります。 後者は、エージェントがメンテナンスを実行するために費やすことができる最大時間 (分) を制御します。 タイマーは、ジョブがエージェントでキューに登録されている場合ではなく、ジョブの開始時に開始されます。

既存の組織エージェント プールを使用するプロジェクト エージェント プールを作成しようとしていますが、コントロールは淡色表示されます。なぜでしょうか。

[プロジェクト エージェント プールの作成] ダイアログ ボックスで、既存の組織エージェント プールが別のプロジェクト エージェント プールによって既に参照されている場合は使用できません。 各組織エージェント プールは、特定のプロジェクト コレクション内の 1 つのプロジェクト エージェント プールでのみ参照できます。

Microsoft でホストされているプールを選択できないので、ビルドをキューに入れることはできません。 これをどのように修正すればよいですか?

Azure DevOps 組織の所有者に、プールを使用するアクセス許可を付与するように依頼します。 エージェント プールのセキュリティを参照してください。

より多くのホストされたビルド リソースが必要です。 どうすればよいですか?

A: Azure Pipelines プールは、クラウドでホストされるビルド エージェントと毎月無料のビルド分をすべての Azure DevOps 組織に提供します。 より多くの Microsoft ホスト型ビルド リソースが必要な場合、またはより多くのジョブを並列で実行する必要がある場合は、次のいずれかを実行できます。