エージェント プールの作成と管理
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
エージェント プールは、エージェントのコレクションです。 各エージェントを個別に管理するのではなく、エージェントをエージェント プールにまとめます。 エージェントを構成するときに、エージェントは 1 つのプールに登録されます。パイプラインを作成するときには、パイプラインを実行するプールを指定します。 パイプラインを実行するときに、パイプラインは、パイプラインの要求を満たす、そのプールのエージェントで実行されます。
Azure Pipelines では、プールの対象範囲は組織全体になるため、プロジェクト間でエージェント マシンを共有することができます。
Azure DevOps Server では、エージェント プールは対象範囲がサーバー全体に設定されるため、プロジェクトおよびコレクション間でエージェント マシンを共有できます。
注意
エージェント プール ジョブは、1 つのエージェントでジョブを実行します。 クラシック リリース パイプラインのデプロイ グループなど、すべてのエージェントでジョブを実行する必要がある場合は、「配置グループをプロビジョニングする」を参照してください。
組織の管理者である場合は、管理者設定の [エージェント プール] タブからエージェント プールを作成し管理します。
組織にサインインします (
https://dev.azure.com/{yourorganization}
)。[Azure DevOps]、[組織の設定] の順に選びます。
[エージェント プール] を選択します。
プロジェクト コレクション (
http://your-server/DefaultCollection
) にサインインします。[Azure DevOps]、 [コレクションの設定]の順に選択します。
[エージェント プール] を選択します。
[Azure DevOps]、 [コレクションの設定]の順に選択します。
[エージェント プール] を選択します。
プロジェクト チームのメンバーの場合は、プロジェクト設定のエージェント プール タブからエージェント プールを作成および管理できます。
プロジェクトに移動し、[プロジェクト設定]、[エージェント プール] の順に選びます。
プロジェクトに移動し、[プロジェクト設定]、[エージェント プール] の順に選びます。
プロジェクトに移動し、[プロジェクト設定]、[エージェント プール] の順に選びます。
既定のエージェント プール
次のエージェント プールが既定で提供されます。
- 既定のプール: 設定したセルフホステッド エージェントを登録するために使用します。
さまざまな Windows、Linux、macOS のイメージを含む Azure Pipelines でホストされるプール。 使用可能なイメージとそのインストール済みソフトウェアの完全な一覧については、「Microsoft ホステッド エージェント」を参照してください。
注意
Azure Pipelines でホストされるプールにより、対応するイメージにマップされた名前を持つ以前のホストされたプールが置き換えられます。 以前のホストされたプールに保有していたジョブはすべて、新しい Azure Pipelines でホストされるプール内の正しいイメージに自動的にリダイレクトされます。 状況によっては、古いプール名が引き続き表示されることがありますが、バックグラウンドでは、ホストされるジョブは Azure Pipelines プールを使って実行されます。 詳しくは、2019 年 7 月 1 日 Sprint 154 リリース ノートの単一のホストされるプールに関するリリース ノートをご覧ください。
既定では、プロジェクト内のすべての共同作成者が、ホステッド プール上のユーザー ロールのメンバーです。 これにより、プロジェクト内のすべての共同作成者が、Microsoft ホステッド エージェントを使ってパイプラインを作成および実行できます。
パイプライン内のプールを指定する
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
プールとキューを管理する
組織の管理者である場合は、管理者設定の [エージェント プール] タブからエージェント プールを作成し管理します。
組織にサインインします (
https://dev.azure.com/{yourorganization}
)。[Azure DevOps]、[組織の設定] の順に選びます。
[エージェント プール] を選択します。
プロジェクト コレクション (
http://your-server/DefaultCollection
) にサインインします。[Azure DevOps]、 [コレクションの設定]の順に選択します。
[エージェント プール] を選択します。
[Azure DevOps]、 [コレクションの設定]の順に選択します。
[エージェント プール] を選択します。
プロジェクト チームのメンバーの場合は、プロジェクト設定のエージェント プール タブからエージェント プールを作成および管理できます。
プロジェクトに移動し、[プロジェクト設定]、[エージェント プール] の順に選びます。
プロジェクトに移動し、[プロジェクト設定]、[エージェント プール] の順に選びます。
プロジェクトに移動し、[プロジェクト設定]、[エージェント プール] の順に選びます。
プールを削除するには、エージェント プール 一覧に移動し、[その他のオプション]、[削除] の順に選択します。
プールはジョブの実行に使用されます。 ジョブのプールを指定する方法について説明します。
さまざまなチームまたは目的を想定している多くのセルフホステッド エージェントを、エージェントを取得している場合は、後で説明するように、追加プールを作成することもできます。
エージェント プールを作成する
セルフホステッド エージェント プールを作成する必要があると考えられる一般的な状況を次に示します。
プロジェクトのメンバーであり、チームが所有する一連のマシンを使って、ビルド ジョブとデプロイ ジョブを実行したいと考えている。 [プロジェクトの設定] のエージェント プール ページの [セキュリティ] を選択して、プロジェクトにプールを作成するアクセス許可があることを確認します。 新しいプールを作成するには、管理者の役割が必要です。 次に、[プールの追加] を選択して、新しいプールを作成するオプションを選択します。 最後に、そのエージェント プールの一部となるようにエージェントをインストールして構成します。
あなたはインフラストラクチャ チームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 [組織の設定] のエージェント プール ページの [セキュリティ] を選択して、プロジェクトにプールを作成するアクセス許可があることを確認します。 次に、新しいエージェント プールを作成し、プールの作成中に [すべてのプロジェクトでこのエージェント プールを自動プロビジョニングする] オプションを選択します。 この設定により、すべてのプロジェクトで、このエージェント プールにアクセスできるようになります。 最後に、そのエージェント プールの一部となるようにエージェントをインストールして構成します。
あなたは一連のエージェント マシンを複数のプロジェクト (すべてというわけではなく) と共有したいと考えています。 まず、いずれかのプロジェクトの設定に移動し、エージェント プールを追加し、組織レベルで新しいプールを作成するオプションを選びます。 次に、他の各プロジェクトにアクセスします。そして組織から既存のエージェント プールを使用するオプションを選びながら、それぞれのプロジェクトにプールを作成します。 最後に、共有エージェント プールの一部となるようにエージェントをインストールして構成します。
プロジェクトのメンバーであり、チームが所有する一連のマシンを使って、ビルド ジョブとデプロイ ジョブを実行したいと考えている。 [プロジェクトの設定] のエージェント プール ページの [セキュリティ] を選択して、プロジェクトにプールを作成するアクセス許可があることを確認します。 新しいプールを作成するには、管理者の役割が必要です。 次に、[プールの追加] を選択して、新しいプールを作成するオプションを選択します。 最後に、そのエージェント プールの一部となるようにエージェントをインストールして構成します。
あなたはインフラストラクチャ チームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 [プロジェクト コレクションの設定] のエージェント プール ページの [セキュリティ] を選択して、プロジェクトにプールを作成するアクセス許可があることを確認します。 次に、新しいエージェント プールを作成し、プールの作成中に [すべてのプロジェクトでこのエージェント プールを自動プロビジョニングする] オプションを選択します。 この設定により、すべてのプロジェクトで、このエージェント プールにアクセスできるようになります。 最後に、そのエージェント プールの一部となるようにエージェントをインストールして構成します。
あなたは一連のエージェント マシンを複数のプロジェクト (すべてというわけではなく) と共有したいと考えています。 まず、いずれかのプロジェクトの設定に移動し、エージェント プールを追加し、組織レベルで新しいプールを作成するオプションを選びます。 次に、他の各プロジェクトにアクセスします。そして組織から既存のエージェント プールを使用するオプションを選びながら、それぞれのプロジェクトにプールを作成します。 最後に、共有エージェント プールの一部となるようにエージェントをインストールして構成します。
プロジェクトのメンバーであり、チームが所有する一連のマシンを使って、ビルド ジョブとデプロイ ジョブを実行したいと考えている。 まず、自分が、すべてのプールで管理者の役割を持つグループのメンバーであることを確認します。 次に、自分のプロジェクト設定で新しいプロジェクト エージェント プールを作成します。さらに新しい組織エージェント プールを作成するオプションを選びます。 その結果、組織とプロジェクト レベルの両方のためのエージェント プールが作成されます。 最後に、そのエージェント プールの一部となるようにエージェントをインストールして構成します。
あなたはインフラストラクチャ チームのメンバーであり、すべてのプロジェクトで使用するエージェントのプールを設定することを希望しています。 まず、自分が、すべてのプールで管理者の役割を持つグループのメンバーであることを確認します。 次に、管理者の設定で新しい組織エージェント プールを作成し、プールの作成中に [すべてのプロジェクトでの対応するプロジェクト エージェント プールの自動プロビジョニング] を行うオプションを選びます。 この設定により、すべてのプロジェクトに、組織のエージェント プールを指すプールが確実に割り当てられます。 システムによって、既存のプロジェクト用のプールが作成され、その後は、新しいプロジェクトが作成されるたびに、そのようなことが行われます。 最後に、そのエージェント プールの一部となるようにエージェントをインストールして構成します。
あなたは一連のエージェント マシンを複数のプロジェクト (すべてというわけではなく) と共有したいと考えています。 まず、プロジェクトの 1 つにプロジェクト エージェント プールを作成し、そのプールの作成時に新しい組織エージェント プールを作成するオプションを選びます。 次に、他の各プロジェクトにアクセスします。そして既存の組織エージェント プールを使用するオプションを選びながら、それぞれのプロジェクトにプールを作成します。 最後に、共有エージェント プールの一部となるようにエージェントをインストールして構成します。
エージェント プールのセキュリティ
エージェント プールに対するセキュリティのしくみを理解することは、エージェントの共有と使用を制御するのに役立ちます。
ロールは各エージェント プールで定義され、これらのロールのメンバーシップにより、エージェント プールで実行できる操作が決まります。
組織レベルのセキュリティ設定
組織の設定におけるエージェント プールに対するロール | 目的 |
---|---|
Reader | このロールのメンバーは、エージェント プールとエージェントを表示できます。 通常、これを使用して、エージェントとその正常性の監視を担当するオペレーターを追加します。 |
サービス アカウント | このロールのメンバーは、組織エージェント プールを使用して、プロジェクトのプロジェクト エージェント プールを作成できます。 上記のガイドラインに従って新しいプロジェクトエージェントプールを作成する場合、通常はここにメンバーを追加する必要はありません。 |
管理者 | 上記のすべてのアクセス許可に加えて、このロールのメンバーは、組織エージェントプールからエージェントを登録または登録解除できます。 彼らは、プロジェクトのプロジェクト エージェント プールを作成する際に、組織エージェント プールを参照することもできます。 最終的に、組織エージェント プールのすべてのロールのメンバーシップを管理することもできます。 組織エージェント プールを作成したユーザーは、そのプールの管理者の役割に自動的に追加されます。 |
すべての組織エージェント プールのセキュリティは、[エージェント プール] タブの [すべてのエージェント プール] ノードを使って制御します。 個々の組織エージェント プールのロール メンバーシップは、[すべてのエージェント プール] ノードのものから自動的に継承されます。 既定では、TFS 管理者と Azure DevOps Server 管理者は、TFS または Azure DevOps Server を使用する場合は、[すべてのエージェント プール] ノードの管理者でもあります。
プロジェクト レベルのセキュリティ設定
ロールは各プロジェクト エージェント プールでも定義され、これらのロールのメンバーシップによって、プロジェクト レベルでエージェント プールに対して実行できる操作が決まります。
プロジェクト設定でのエージェント プールに対するロール | 目的 |
---|---|
Reader | このロールのメンバーは、プロジェクト エージェント プールを表示できます。 これは通常、そのプロジェクト エージェント プールにおけるビルドおよびデプロイ ジョブの監視を担当するオペレーターを追加するために使用します。 |
User | このロールのメンバーは、パイプラインを作成する際に、プロジェクト エージェント プールを使用できます。 |
管理者 | 上記のすべての操作以外にも、このロールのメンバーは、プロジェクト エージェント プールのすべてのロールのメンバーシップを管理できます。 プールを作成したユーザーは、そのプールの管理者ロールに自動的に追加されます。 |
パイプラインのアクセス許可
パイプラインのアクセス許可では、エージェント プールを使用する権限を持つ YAML パイプラインを制御します。 パイプラインのアクセス許可では、クラシック パイプラインからのアクセスは制限されません。
次のオプションから選択できます。
エージェント プールの [セキュリティ] タブにある [パイプラインのアクセス許可] セクションの右上隅にあるその他のオプションから、すべてのパイプラインに対してエージェント プールを使用するためのアクセスを開きます。
エージェント プールをロック ダウンし、選択した YAML パイプラインでのみそれを使用できるようにします。 他の YAML パイプラインがエージェント プールを参照している場合は、承認要求が発生します。これは、エージェント プール管理者によって承認される必要があります。 これにより、クラシック パイプラインからのアクセスは制限されません。
Azure Pipelines エージェント プールのパイプライン アクセス許可は構成できません。既定ではすべてのパイプラインからプールにアクセスできるためです。
[エージェント プール] タブの [すべてのエージェント プール] ノードは、プロジェクトのすべてのプロジェクト エージェント プールのセキュリティを制御するために使用されます。 個々のプロジェクト エージェント プールのロール メンバーシップは、[すべてのエージェント プール] ノードのものから自動的に継承されます。 既定では、次のグループが [すべてのエージェント プール] の管理者ロールに追加されます: ビルド管理者、リリース管理者、プロジェクト管理者。
[エージェント プール] タブの [セキュリティ] アクションは、プロジェクト内のすべてのプロジェクト エージェント プールのセキュリティを制御するために使用されます。 個々のプロジェクト エージェント プールのロール メンバーシップは、ここで定義した内容から自動的に継承されます。 既定では、次のグループが [すべてのエージェント プール] の管理者ロールに追加されます: ビルド管理者、リリース管理者、プロジェクト管理者。
よく寄せられる質問
メンテナンス期間をスケジュールしない場合、エージェントではいつメンテナンスを実行しますか?
期間がスケジュールされていない場合、そのプール内のエージェントはメンテナンス ジョブを実行しません。
メンテナンス ジョブとは何ですか?
古くなった作業ディレクトリやリポジトリを定期的にクリーンするようにエージェント プールを構成できます。 これにより、エージェントがディスク領域不足になる可能性が減ります。 メンテナンス ジョブは、エージェント プール設定の組織レベルで構成されます。
メンテナンス ジョブの設定を構成するには、次のようにします。
組織にサインインします (
https://dev.azure.com/{yourorganization}
)。[Azure DevOps]、[組織の設定] の順に選びます。
[エージェント プール] を選択します。
プロジェクト コレクション (
http://your-server/DefaultCollection
) にサインインします。[Azure DevOps]、 [コレクションの設定]の順に選択します。
[エージェント プール] を選択します。
[Azure DevOps]、 [コレクションの設定]の順に選択します。
[エージェント プール] を選択します。
目的のプールを選び、[設定] を選んでそのエージェント プールのメンテナンス ジョブ設定を構成します。
重要
メンテナンス ジョブ設定を構成するには、ビルド キューの管理アクセス許可が必要です。 [設定] タブまたは [メンテナンス履歴] タブが表示されない場合は、そのアクセス許可がありません。このアクセス許可は既定で管理者の役割に付与されます。 詳しくは、「エージェント プールのセキュリティ」をご覧ください。
目的の設定を構成し、[保存] を選択します。
[メンテナンス履歴] を選んで、現在のエージェント プールのメンテナンス ジョブ履歴を表示します。 ログをダウンロードして確認し、クリーニング手順と実行されたアクションを確認できます。
このメンテナンスはマシン単位ではなくエージェント プール単位で行われます。そのため、1 台のマシンに複数のエージェント プールがある場合、ディスク領域問題に遭遇する可能性があります。
自己ホスト エージェント プールのメンテナンス ジョブが停止したまま動かなくなったようです。 なぜでしょうか。
メンテナンス ジョブは一般的に、エージェント プールから削除されたエージェントでの実行を待機しているとき "停止したまま動かない" 状態になります。 これはたとえば、エージェントが意図的にオフラインにされたり、エージェントとの通信に問題があるときに発生します。
実行待ちの行列に入っているメンテナンス ジョブは実行まで 7 日間待機します。 その期間を経過しても実行されなかった場合、失敗状態に自動的に設定されます。 この時間制限は変更できません。
この 7 日間の制限はメンテナンス ジョブ タイムアウト設定とは異なります。 後者は、エージェントでメンテナンスに使用できる最大時間 (分) を制御するものです。 エージェントでジョブが待ち行列に入ったときではなく、ジョブの開始時にこのタイマーは開始されます。
既存の組織エージェント プールを使用するプロジェクト エージェント プールを作成しようとしていますが、コントロールは淡色表示されます。なぜでしょうか?
[プロジェクトのエージェント プールの作成] ダイアログ ボックスでは、既存の組織エージェント プールが別のプロジェクト エージェント プールによって既に参照されている場合は、このエージェント プールを使用できません。 各組織エージェント プールは、特定のプロジェクト コレクション内の 1 つのプロジェクト エージェント プールでのみ参照できます。
Microsoft ホステッド プールが選択できず、ビルドをキューに入れることができません。 これをどのように修正すればよいですか?
ご自分の Azure DevOps 組織の所有者に、プールを使用するためのアクセス許可を付与してくれるように依頼してください。 「エージェント プールのセキュリティ」を参照してください。
より多くのホステッド ビルド リソースが必要です。 どうすればよいですか?
A: Azure Pipelines プールは、すべての Azure DevOps 組織に、クラウドホステッド ビルド エージェントと毎月の無料ビルド時間 (分) を提供します。 Microsoft ホステッド ビルド リソースがさらに必要な場合、またはより多くのジョブを並列で実行する必要がある場合は、次のいずれかを実行できます。