マネージド DevOps プールのパフォーマンスとコストを管理するようにスケーリング設定を構成します。 価格とパフォーマンスの詳細については、「 管理のコストとパフォーマンスを参照してください。
エージェントの状態
マネージド DevOps プールは、ステートレスまたはステートフルとして構成できます。
Managed DevOps プールの既定の設定はステートレス (毎回 Fresh エージェント) ですが、場合によっては、チームは前のパイプラインの実行中に作成されたパッケージまたはファイルを再利用するためにエージェントを再利用したい場合があります。 ビルド ワークロードは、チームが状態を保持してエージェントを再利用する一般的なシナリオです。 マネージド DevOps プールを使用してステートフル プールを実現しながら、セキュリティのベスト プラクティスとバランスを取ることができます。 既定では、エージェントは最大 7 日間再利用できますが、より早くリサイクルされるように構成できます。
注
ステートレス プールまたはエージェントの状態設定 毎回Fresh エージェントを使用する は、サプライ チェーン攻撃に対する防御としてセキュリティ専門家によって推奨されます。
ステートレス プール
ステートレス エージェントを構成すると、ジョブごとに新しいエージェントが調達され、ジョブの完了後に破棄されます。
ステートレス エージェントのライフサイクルと、Azure DevOps パイプラインでの使用方法 (割り当ての遅延の可能性を含む) については、次 のエージェントのライフサイクルと割り当ての潜在的な遅延 に関するセクションを参照してください。
エージェントは、Managed DevOps Pools リソースの agentProfile
プロパティを使用して構成されます。 次の例では、 Stateless エージェントが指定されています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless"
}
}
}
]
}
エージェントは、プールの作成またはagent-profile
をするときに、 パラメーターを使用して構成されます。
次の例では、スタンバイ エージェントなしで Stateless エージェントを指定しています。
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
次の例は、 agent-profile.json ファイルの内容を示しています。
{
"Stateless": {}
}
Agent 状態毎回 Fresh エージェントに設定するとジョブごとに新しいエージェントが調達され、ジョブの完了後に破棄されます。
ステートフル プール
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00",
"kind": "Stateful"
}
}
}
]
}
エージェントは、プールの作成またはagent-profile
をするときに、 パラメーターを使用して構成されます。
次の例では、 Stateful エージェントは、最大有効期間が 7 日で、猶予期間が 30 分で指定されています。
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
次の例は、 agent-profile.json ファイルの内容を示しています。
{
"Stateful":
{
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00"
}
}
Same エージェントを複数のビルドで使用できる場合 (リソース テンプレートの"kind": "stateful"
または Azure CLI の{ "stateful": {...} }
) が有効になっていると、プール内のエージェントはステートフルと見なされます。 ステートフル プールは、次の設定を使用して構成されます。
スタンバイ エージェントの最大有効期間 (maxAgentLifetime
) は、ステートフル プール内のエージェントがシャットダウンおよび破棄されるまでの最大実行時間を構成します。 スタンバイ エージェントの 最大有効期間 の形式は dd.hh:mm:ss
。 スタンバイ エージェントの最大有効期間 既定値は 7 日間 (7.00:00:00
) の最大許容期間に設定されます。
猶予期間 (gracePeriodTimeSpan
) は、ステートフル プール内のエージェントが新しいジョブを待機してから、現在のジョブとキューに登録されているすべてのジョブが完了した後にシャットダウンするまでの時間を構成します。
Grace Period の形式はdd.hh:mm:ss
であり、既定値は猶予期間がありません。
ステートレス プール内のエージェントはシャットダウンされ、すべてのジョブの後に破棄されますが、ステートフル プール内のエージェントは、次のいずれかの条件が満たされた場合でも実行を続行します。
- 最初のジョブが完了したときに別のジョブがキューに登録されている場合、Managed DevOps Pools はそのジョブをシャットダウンするのではなく、最初のジョブを実行したエージェントに送信します。
- プールに対して猶予期間が構成されている場合、エージェントは猶予期間で指定された期間、新しいジョブを待機してからシャットダウンします。
-
standby エージェントが有効になっていてエージェント イメージがアクティブなプロビジョニング期間の条件を満たしている場合、エージェントは引き続き実行され、ジョブを待機します。
ステートフル プール内の実行中のエージェントは、前の条件が満たされている場合でもMax のスタンバイ エージェントの有効期間中に継続的に実行される場合は、シャットダウンされ、破棄されます。 たとえば、スタンバイ エージェント 最大有効期間 が 3 日間構成され、 Standby エージェント モード が Manual、All Week Scheme (Machines available 24/7)に設定されている場合、エージェントは 3 日間の継続的なアップタイム後に再起動されます。
重要
猶予期間がなく、スタンバイ エージェントのアクティブなプロビジョニング期間がなく、エージェントと一致するキューに登録されたジョブがない場合、ジョブの完了後も、ステートフル プール内のエージェントをシャットダウンおよび破棄できます。 エージェントが破棄されると、すべての状態が失われます。
猶予期間により、一貫した負荷でパイプラインのステートフル プールを実行する最もコスト効率の高い方法が可能になり、エージェントをオンラインに保ち、ジョブを受け入れる準備をするためにスタンバイ エージェント モードを使用する必要はありません。
スタンバイ エージェント モード
プールを作成する場合、 スタンバイ エージェント モード は既定でオフになっています。また、パイプラインにすぐに割り当てるスタンバイ エージェントはありません。これは、エージェントをオンデマンドでプロビジョニングするために、しばらく (最大 15 分) 待機する必要がある場合があります。 パフォーマンスを向上させるには、 スタンバイ エージェント モードを有効にし ワークロードの容量を提供するスタンバイ エージェント スケジュールを構成します。
スタンバイ エージェント のスケジュールを構成すると、Managed DevOps プールは、プロビジョニングされたエージェントの数と現在のプロビジョニング スキームで指定されたスタンバイ エージェント数を定期的に比較し、スタンバイ エージェント数を維持するために必要に応じて新しいエージェントを開始します。
エージェント ペインを使用して、プール内のエージェントの現在の状態と数を表示できます。
スタンバイ エージェント モードは、次の設定を使用して構成されます。
-
オフ - スタンバイ エージェント モードがオフになり、ジョブがキューに登録されると、エージェントがオンデマンドでプロビジョニングされます。
-
手動 - 手動スタンバイ スケジュールを構成します。
-
自動 - エージェントの使用履歴に基づいて自動スタンバイ スケジュールを使用し、コストとパフォーマンスのために構成できます。
スタンバイ エージェントは、resourcePredictionsProfile
プロパティの agentProfile
セクションを使用して構成されます。
"kind": "Manual"
を設定して、最初から開始、平日のスキーム、またはすべての週のスキームを構成し、resourcePredictions
セクションでスキームの詳細を指定します。 自動スタンバイ エージェントを構成するには、 "kind": "Automatic"
を設定します。 スタンバイ エージェントを無効にするには、 ResourcePredictionsProfile
セクションを省略します。 各スケーリングの種類を構成する方法の詳細については、次のセクションを参照してください。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {...}
}
}
}
]
}
エージェントは、プールの作成またはagent-profile
をするときに、 パラメーターを使用して構成されます。
スタンバイ エージェントは、resourcePredictionsProfile
パラメーターの agent-profile
セクションを使用して構成されます。
"Manual": {}
を設定して、最初から開始、平日のスキーム、またはすべての週のスキームを構成し、resourcePredictions
セクションでスキームの詳細を指定します。 自動スタンバイ エージェントを構成するには、 "Automatic": {}
を設定します。 各スケーリングの種類を構成する方法の詳細については、次のセクションを参照してください。
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
次の例は、 agent-profile.json ファイルの内容を示しています。
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
手動
手動モードは、CI/CD パイプラインの使用パターンに関する知識を持つチームに最適です。 手動オプションを選択する場合は、プール内のエージェントが使用される可能性が最も高い時期と使用される可能性の高いエージェントの数を把握し、予測される需要を満たすエージェントのプロビジョニング数を指定して、事前プロビジョニングスキームを定義する必要があります。
独自のプロビジョニング スケジュールを作成することも、定義済みのスケジュールから選択することもできます。また、スケジュールの指定に使用するタイム ゾーンを構成することもできます。
Pre-provisioning TimeZone の既定値は (UTC) 協定世界時です。
手動スタンバイ エージェントの構成は、次の 3 つの方法のいずれかで構成できます。
各事前プロビジョニング クイック スタートには、そのクイック スタートの特定の設定に加えて、次の一般的な設定があります。
-
TimeZone を事前プロビジョニングすると、事前プロビジョニング スキームの時刻のタイム ゾーンを構成できます。
Pre-provisioning TimeZone の既定値は (UTC) 協定世界時です。
-
スタンバイ エージェントの割合 は、イメージごとに必要なスタンバイ エージェントの割合を構成します。 すべてのイメージが均等にプロビジョニングされるように
*
を入力するか、0 から 100 の整数を指定してパーセンテージを表すことができます。 パーセンテージを指定する場合、すべての画像の合計は 100 に等しい必要があります。 1 つのイメージがある場合は、 *
または 100 を指定します。
スタンバイ エージェントの割合 は、ARM テンプレートを使用する場合に images
セクションで構成されます。 詳細については、「イメージの構成」を参照してください。
手動スタンバイ エージェントのプロビジョニングは、resourcePredictionsProfile
の agentProfile
セクションで指定され、詳細は resourcePredictions
セクションで構成されます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
timeZone
プロパティを使用して、スキームに必要なタイム ゾーンを指定します。 既定値は、UTC
です。 このプロパティのタイム ゾーン名の一覧を取得するには、「 TimeZoneInfo.GetSystemTimeZones メソッドを参照してください。
スタンバイ・エージェントのスケジュールは、 daysData
・リストによって定義されます。
daysData
リストには、1 つの項目または 7 つの項目を含めることができます。
7 つの項目を含む daysData
リストは、日曜日から始まる曜日にマップされます。 これら 7 つの項目はそれぞれ、0 個以上の "time": count
エントリを持つ場合があり、24 時間形式で時刻を指定し、スタンバイ エージェントの数を指定できます。 スタンバイ エージェントの指定された数は、次の "time": count
エントリ (同じ日または翌日) まで保持されます。
1 つの項目を含む daysData
リストでは、 週構成が定義されます。このスキームでは、1 つの "time": count
エントリが 1 週間のスタンバイ エージェント数に対応します。
次の例は、 Eastern Standard Time
を使用した手動スタンバイ エージェント スキームで、月曜日から金曜日の午前 9 時 (スタンバイ エージェント数 1
) から 5:00 PM (スタンバイ エージェント数 0
) まで、1 つのエージェントがプロビジョニングされています。
{
"kind": "Stateless",
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
},
"resourcePredictionsProfile": {
"kind": "Manual"
}
}
1 つの daysData
項目には、時間とスタンバイ エージェントの数のディクショナリが含まれています。 各 "time" : count
エントリは、指定した時刻から開始するスケジュールを設定するスタンバイ エージェントの数を 24 時間形式で指定します。 連続 "time" : count
エントリは、その日のスケジュールされたエージェント数のシーケンスを指定します。
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
スタンバイ エージェントの数は、1 日の終わりまたは週末に自動的に 0 にリセットされることはありません。空の daysData
項目を指定しても、その日のスタンバイ エージェントは無効になりません。 空の daysData
項目は、その日のスタンバイ エージェント数スケジュールに変更がないことを意味します。 スタンバイ エージェントを特定の期間から 0 に設定するには、"time" : count
のcount
を含む0
エントリを明示的に指定する必要があります。
例
前日の終わりに指定したスタンバイ エージェント数 (週の最初の期間を構成する場合は週) に調整を行うには、エントリが 0 の daysData
項目を指定します。
{
}
1 つのスタンバイ エージェントを09:00:00
から開始し、(17:00:00
プロパティで指定されたタイム ゾーンを使用して) resourcePredictions
で停止するようにスケジュールするには、次の構成を指定します。
{
"09:00:00": 1,
"17:00:00": 0
}
午前 0 時から 09:00:00
までの 1 つのスタンバイ エージェントをスケジュールし、その後に 10 個のスタンバイ エージェントを 17:00:00
までスケジュールするには、次の構成を指定します。
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
指定した日に 09:00:00
からスタンバイ エージェントを使用できるようにスケジュールし、翌日 17:00:00
に停止するには、2 つの連続する daysData
項目を使用します。
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
エージェントは、プールの作成またはagent-profile
をするときに、 パラメーターを使用して構成されます。
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
次の例は、 agent-profile.json ファイルの内容を示しています。
手動スタンバイ エージェントのプロビジョニングは、resourcePredictionsProfile
パラメーターの agent-profile
セクションで指定され、詳細は resourcePredictions
セクションで構成されます。
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
timeZone
プロパティを使用して、スキームに必要なタイム ゾーンを指定します。 既定値は、UTC
です。 このプロパティのタイム ゾーン名の一覧を取得するには、「 TimeZoneInfo.GetSystemTimeZones メソッドを参照してください。
スタンバイ・エージェントのスケジュールは、 daysData
・リストによって定義されます。
daysData
リストには、1 つの項目または 7 つの項目を含めることができます。
7 つの項目を含む daysData
リストは、日曜日から始まる曜日にマップされます。 これら 7 つの項目はそれぞれ、0 個以上の "time": count
エントリを持つ場合があり、24 時間形式で時刻を指定し、スタンバイ エージェントの数を指定できます。 スタンバイ エージェントの指定された数は、次の "time": count
エントリ (同じ日または翌日) まで保持されます。
1 つの項目を含む daysData
リストでは、 週構成が定義されます。このスキームでは、1 つの "time": count
エントリが 1 週間のスタンバイ エージェント数に対応します。
次の例は、 Eastern Standard Time
を使用した手動スタンバイ エージェント スキームで、月曜日から金曜日の午前 9 時 (スタンバイ エージェント数 1
) から 5:00 PM (スタンバイ エージェント数 0
) まで、1 つのエージェントがプロビジョニングされています。
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
}
}
1 つの daysData
項目には、時間とスタンバイ エージェントの数のディクショナリが含まれています。 各 "time" : count
エントリは、指定した時刻から開始するスケジュールを設定するスタンバイ エージェントの数を 24 時間形式で指定します。 連続 "time" : count
エントリは、その日のスケジュールされたエージェント数のシーケンスを指定します。
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
スタンバイ エージェントの数は、1 日の終わりまたは週末に自動的に 0 にリセットされることはありません。空の daysData
項目を指定しても、その日のスタンバイ エージェントは無効になりません。 空の daysData
項目は、その日のスタンバイ エージェント数スケジュールに変更がないことを意味します。 スタンバイ エージェントを特定の期間から 0 に設定するには、"time" : count
のcount
を含む0
エントリを明示的に指定する必要があります。
例
前日の終わりに指定したスタンバイ エージェント数 (週の最初の期間を構成する場合は週) に調整を行うには、エントリが 0 の daysData
項目を指定します。
{
}
1 つのスタンバイ エージェントを09:00:00
から開始し、(17:00:00
プロパティで指定されたタイム ゾーンを使用して) resourcePredictions
で停止するようにスケジュールするには、次の構成を指定します。
{
"09:00:00": 1,
"17:00:00": 0
}
午前 0 時から 09:00:00
までの 1 つのスタンバイ エージェントをスケジュールし、その後に 10 個のスタンバイ エージェントを 17:00:00
までスケジュールするには、次の構成を指定します。
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
指定した日に 09:00:00
からスタンバイ エージェントを使用できるようにスケジュールし、翌日 17:00:00
に停止するには、2 つの連続する daysData
項目を使用します。
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
ゼロから始める
最初から開始する場合は、プロビジョニングスキームとして機能するプロビジョニング期間の一覧を追加できます。 各プロビジョニング期間は、開始日、終了日、タイム ゾーン、開始時刻、終了時刻、カウントで構成されます。 プロビジョニング期間は互いに重複することはできません。
プロパティ |
説明 |
複数の日 |
オンにすると、プロビジョニング スキームの開始日と終了日の両方を構成できます。 |
次の期間まで |
オンにすると、プロビジョニング期間は開始時刻から次のプロビジョニング期間の開始まで実行されます。 |
開始日 |
プロビジョニング期間が開始される日。 |
終了日 |
プロビジョニング期間が終了する日。 [複数日] がオンの場合は必須。 |
開始時刻 |
プロビジョニング期間が開始される時間。 |
終了時刻 |
プロビジョニング期間が終了する時刻。
次の期間までがオンでない限り必須です。 |
カウント |
プロビジョニングするスタンバイ エージェントの数。 この数値は 0 より大きく、プール設定で構成されている Maximum agents 値より大きくすることはできません。 |
プロビジョニング期間を作成した後、 Pre-provisioning scheme 一覧から期間を削除または編集できます。
次の例では、月曜日の午前 12:00 から午前 5:00 EST に 1 つのエージェントがプロビジョニングされた手動スキームを構成します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
平日のスキーム
曜日スキームを選択した場合は、開始時刻と終了時刻を指定できます。この開始時刻と終了時刻では、指定した数のスタンバイ エージェントが平日ごとにスタンバイ状態になります。
プロパティ |
説明 |
開始時刻 |
プロビジョニング期間が開始される時間。 |
終了時刻 |
プロビジョニング期間が終了する時刻。 |
プロビジョニング数 |
プロビジョニングするスタンバイ エージェントの数。 この数値は 0 より大きく、プール設定で構成されている Maximum agents 値より大きくすることはできません。 |
次の例では、東部標準時を使用して、非稼働時間と週末に 0 個のエージェントを使用して、勤務時間中に使用する 4 つのエージェントを構成します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
すべての週のスキーム
すべての週のスキームを選択した場合は、24 時間 365 日利用可能なエージェントの数を指定できます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{
"00:00:00": 1
}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{
"00:00:00": 1
}
]
}
}
自動
使用パターンがわからない場合に、過去のデータに基づく自動予測に依存する場合は、 自動を選択します。 スライダーと次の 5 つのオプションを使用して、コストとエージェントのパフォーマンスのバランスを取ることができます。 Managed DevOps Pools は、過去 3 週間の履歴データ (使用可能な場合) に対してクエリを実行し、プールのキューに登録されたセッションを 5 分の期間に整理し、指定されたパーセンタイル (スパイクを回避するために) を各時間に割り当てます。
-
最もコスト効率の高い (
MostCostEffective
) - 10 パーセンタイル
-
コスト効率 (
MoreCostEffective
) - 25 パーセンタイル
-
Balanced (既定値) (
Balanced
) - 50 パーセンタイル
-
パフォーマンスの向上 (
MorePerformance
) - 75 パーセンタイル
-
最適なパフォーマンス (
BestPerformance
) - 90 パーセンタイル
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"___location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"predictionPreference": "Balanced",
"kind": "Automatic"
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Automatic": {
"predictionPreference": "Balanced"
}
}
}
エージェントのライフサイクルと割り当ての潜在的な遅延
ステートレス スキームを使用するスタンバイ エージェントでは、準備完了状態から割り当て済み状態に移行してパイプラインを実行する前に、Azure Pipelines エージェントをインストールして構成する必要があります。 新しいエージェントをプロビジョニングする場合、Managed DevOps Pools は、準備完了状態に移行する前にスタンバイ エージェントに既にダウンロードできるように、最新の Azure Pipelines エージェントのダウンロードを試みます。 ジョブの起動、接続、開始には、プールの SKU 速度、使用されるイメージ、ネットワークの負荷に応じて、10 秒から 1 分かかります。 さらに、パイプライン ジョブ内の特定の設定によって、別のエージェントの再ダウンロードと実行が発生する可能性があります。また、エージェントの回帰とロールバックによって、エージェントの再ダウンロードが発生する可能性もあります。
準備済みのエージェントには常に遅延が生じる可能性があります。これは、マネージド DevOps プールがエージェントを「エフェメラルな」方法で使用するためです。つまり、ジョブごとにタスク エージェントを一度開始して実行します。
準備が整ったエージェントが Azure DevOps からジョブを取得する際に遅延が発生する場合は、次の点を考慮する必要があります。
- エージェントの準備は完了していますか? - 最も一般的な問題は、エージェントを事前にプロビジョニングする必要がある場合の誤解です。 キューに登録されたジョブの数がプールのスタンバイ エージェント数を超える場合、またはジョブが事前プロビジョニング スケジュールの外部でキューに登録されている場合、スタンバイ エージェントの数が空に設定されている場合は、マシンを最初からスピンアップする必要があります。
- 複数のイメージを使用してスタンバイ エージェントを正しく構成していますか? - ImageOverride 要求を使用してパイプラインで使用するイメージを指定しない場合、ジョブは最初のイメージを対象とします。 つまり、スケーリング設定によっては、他のイメージに割り当てられているエージェントの数が予想ほど多くない場合があります。
- パイプラインで ImageVersionOverride を使用していますか? -
ImageVersionOverride
を使用して プール設定で構成されているものとは異なるイメージ バージョンを指定すると、各エージェントは指定されたイメージ バージョンを使用してオンデマンドで開始されます。 スタンバイ エージェントは プールの構成で指定されたイメージ バージョンを使用してプロビジョニングされるため、 ImageVersionOverride
を使用する場合、スタンバイ エージェントはそのバージョンと一致せず、新しいエージェントが開始されます。
- プロキシ/VNet/ファイアウォールの設定によってプールの速度が低下していますか? - ネットワーク設定が遅くなる可能性があるため、エージェントの起動と Azure DevOps への接続に時間がかかります。
- エージェントのバージョンをオーバーライドしていますか? - 既定では、Managed DevOps プールは最新の Azure DevOps タスク エージェント バージョンで実行されます。 Pipeline yaml の設定 ( Agent.Version demand など) と Azure DevOps 組織の設定では、パイプラインで古いバージョンのタスク エージェントを使用するように強制できます。これにより、マシンが割り当てられた後に再ダウンロードが必要になります。
関連項目