Configureer schaalinstellingen om de prestaties en kosten van uw beheerde DevOps-pool te beheren. Zie Kosten en prestaties beheren voor meer informatie over prijzen en prestaties.
Agentstatus
Beheerde DevOps-pools kunnen worden geconfigureerd als stateless of stateful.
De standaardinstelling voor een beheerde DevOps-pool is staatloos (elke keer nieuwe agent), maar in sommige gevallen willen teams mogelijk agents opnieuw gebruiken om de pakketten of bestanden die zijn gemaakt tijdens de vorige pijplijnuitvoering opnieuw te gebruiken. Buildworkload is een veelvoorkomend scenario waarin teams de status willen behouden en agents opnieuw willen gebruiken. U kunt stateful pools bereiken via beheerde DevOps-pools terwijl u deze balanceert met aanbevolen beveiligingsprocedures. Standaard kan een agent maximaal 7 dagen opnieuw worden gebruikt, maar u kunt deze zo configureren dat deze eerder wordt gerecycled.
Notitie
Stateless pools of het gebruik van de agentstatusinstelling Fresh agent elke keer worden aanbevolen door beveiligingsexperts als verdediging tegen supply chain-aanvallen.
Staatloze pools
Wanneer een staatloze agent is geconfigureerd, wordt voor elke taak een nieuwe agent aangeschaft en wordt deze verwijderd nadat de taak is voltooid.
Zie de volgende levenscyclus van agents en mogelijke vertragingen in de toewijzingssectie voor de levenscyclus van stateless agents en een uitleg over hoe ze worden gebruikt in Azure DevOps-pijplijnen (inclusief mogelijke vertragingen in toewijzing).
Agents worden geconfigureerd met behulp van de agentProfile
eigenschap in de resource Beheerde DevOps-pools. In het volgende voorbeeld wordt een stateless agent opgegeven.
{
"$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"
}
}
}
]
}
Agents worden geconfigureerd met behulp van de parameter bij het agent-profile
maken of bijwerken van een pool.
In het volgende voorbeeld wordt een stateless agent opgegeven zonder stand-byagents.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
In het volgende voorbeeld ziet u de inhoud van het bestand agent-profile.json .
{
"Stateless": {}
}
Wanneer de status van de agent elke keer op Fresh-agent is ingesteld, wordt voor elke taak een nieuwe agent aangeschaft en wordt deze verwijderd nadat de taak is voltooid.
Pools met toestandbeheer
{
"$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"
}
}
}
]
}
Agents worden geconfigureerd met behulp van de parameter bij het agent-profile
maken of bijwerken van een pool.
In het volgende voorbeeld wordt een Stateful-agent opgegeven met een maximale levensduur van zeven dagen en een respijtperiode van dertig minuten.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
In het volgende voorbeeld ziet u de inhoud van het bestand agent-profile.json .
{
"Stateful":
{
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00"
}
}
Wanneer dezelfde agent kan worden gebruikt door meerdere builds ("kind": "stateful"
in resourcesjablonen of { "stateful": {...} }
in Azure CLI), worden agents in de pool beschouwd als stateful. Stateful pools worden geconfigureerd met behulp van de volgende instellingen.
De maximale time-to-live voor stand-byagents (maxAgentLifetime
) configureert de maximale duur die een agent in een stateful pool kan uitvoeren voordat deze wordt afgesloten en verwijderd. De notatie voor maximale time to live voor stand-byagents is dd.hh:mm:ss
. De standaardwaarde van Maximale time to live voor stand-byagents is ingesteld op de maximaal toegestane duur van zeven dagen (7.00:00:00
).
Respijtperiode (gracePeriodTimeSpan
) configureert de hoeveelheid tijd die een agent in een stateful pool wacht op nieuwe taken voordat ze worden afgesloten nadat alle huidige en in de wachtrij geplaatste taken zijn voltooid. De notatie voor respijtperiode is dd.hh:mm:ss
en de standaardwaarde is geen respijtperiode.
Terwijl agents in staatloze pools na elke taak worden afgesloten en verwijderd, blijven agents in stateful pools actief als aan een van de volgende voorwaarden wordt voldaan.
- Als er een andere taak in de wachtrij staat wanneer de eerste taak is voltooid, stuurt Beheerde DevOps-pools die taak naar de agent die de eerste taak heeft uitgevoerd in plaats van deze af te sluiten.
- Als er een respijtperiode is geconfigureerd voor de pool, wachten agents op nieuwe taken voor de duur die is opgegeven door de respijtperiode voordat ze worden afgesloten.
- Als stand-byagents zijn ingeschakeld en de agentinstallatiekopieën voldoen aan de criteria van de actieve inrichtingsperiode, blijft de agent actief en wordt gewacht op taken.
Actieve agents in stateful pools worden afgesloten en verwijderd als ze continu worden uitgevoerd voor de duur die is opgegeven door Max time to live voor stand-byagenten, zelfs als aan de vorige voorwaarden wordt voldaan. Als de maximale duur voor live voor stand-byagenten bijvoorbeeld drie dagen is geconfigureerd en de stand-byagentmodus is ingesteld op Handmatig, De hele weekschema (machines beschikbaar 24/7), worden de agents opnieuw opgestart na drie doorlopende dagen van uptime.
Belangrijk
Agents in stateful pools kunnen nog steeds worden afgesloten en verwijderd nadat een taak is voltooid als er geen respijtperiode is, geen actieve inrichtingsperiode voor stand-byagents en geen taken in de wachtrij die overeenkomen met de agent. Zodra een agent is verwijderd, gaat elke status verloren.
Respijtperiode maakt het de meest rendabele manier om stateful pools uit te voeren voor pijplijnen met consistente belasting en vereist geen gebruik van de stand-byagentmodus om agents online te houden en klaar te zijn voor het accepteren van taken.
Stand-byagentmodus
Wanneer u een pool maakt, is de stand-byagentmodus standaard uitgeschakeld en er zijn geen stand-byagents die onmiddellijk aan uw pijplijnen moeten worden toegewezen. Dit kan enkele ogenblikken, tot 15 minuten, duren voordat een agent op aanvraag wordt ingericht. Voor betere prestaties schakelt u de stand-byagentmodus in en configureert u een stand-byagentschema dat capaciteit biedt voor uw workload.
Wanneer een stand-byagentschema is geconfigureerd, vergelijkt Managed DevOps Pools periodiek het aantal ingerichte agenten met het aantal stand-byagenten dat is gespecificeerd volgens het huidige inrichtingsschema, en worden er nieuwe agenten gestart indien nodig om het aantal stand-byagenten te behouden. U kunt de huidige status en het aantal agents in uw pool bekijken met behulp van het deelvenster Agents.
Belangrijk
Het aantal inrichtingen in een schema kan niet groter zijn dan de maximumagenten die zijn geconfigureerd in groepsinstellingen.
De stand-byagentmodus wordt geconfigureerd met behulp van de volgende instellingen:
-
Uit : de stand-byagentmodus is uitgeschakeld en agents worden op aanvraag ingericht wanneer taken in de wachtrij worden geplaatst.
-
Handmatig : een handmatig stand-byschema configureren.
-
Automatisch : gebruik een automatisch stand-byschema op basis van de gebruiksgeschiedenis van de agent en configureerbaar voor kosten en prestaties.
Stand-byagents worden geconfigureerd met behulp van de resourcePredictionsProfile
sectie van de agentProfile
eigenschap. Stel "kind": "Manual"
in dat u een geheel nieuwe start, een weekdagschema of een hele weekschema wilt configureren en de details van het schema in de resourcePredictions
sectie wilt opgeven. Ingesteld "kind": "Automatic"
om automatische stand-byagents te configureren. Laat de ResourcePredictionsProfile
sectie weg om stand-byagenten uit te schakelen. Zie de volgende secties voor meer informatie over het configureren van elk schaaltype.
{
"$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": {...}
}
}
}
]
}
Agents worden geconfigureerd met behulp van de parameter bij het agent-profile
maken of bijwerken van een pool.
Stand-byagents worden geconfigureerd met behulp van de resourcePredictionsProfile
sectie van de agent-profile
parameter. Stel "Manual": {}
in dat u een geheel nieuwe start, een weekdagschema of een hele weekschema wilt configureren en de details van het schema in de resourcePredictions
sectie wilt opgeven. Ingesteld "Automatic": {}
om automatische stand-byagents te configureren. Zie de volgende secties voor meer informatie over het configureren van elk schaaltype.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
In het volgende voorbeeld ziet u de inhoud van het bestand agent-profile.json .
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
Handmatig
Handmatige modus is het meest geschikt voor teams die kennis hebben van hun ci/CD-pijplijnengebruikspatronen. Als u de handmatige optie selecteert, moet u uw pre-inrichtingsschema definiëren op basis van uw inzicht in wanneer agents in de pool waarschijnlijk worden gebruikt en hoeveel agents waarschijnlijk worden gebruikt, en een inrichtingsaantal agents opgeven dat voldoet aan de verwachte vraag.
U kunt uw eigen inrichtingsschema maken of kiezen uit een van de vooraf gedefinieerde planningen en u kunt de tijdzone configureren die moet worden gebruikt voor het opgeven van de planningen. De standaardwaarde voor Pre-provisioning TimeZone is (UTC) Coordinated Universal Time.
Handmatige stand-byagentconfiguratie kan op een van de volgende drie manieren worden geconfigureerd.
Elk van de quickstarts voor vooraf inrichten bevat de volgende algemene instellingen naast de specifieke instellingen voor die quickstart.
-
Met de tijdzone vooraf inrichten kunt u de tijdzone configureren voor de tijden in uw pre-inrichtingsschema. De standaardwaarde voor Pre-provisioning TimeZone is (UTC) Coordinated Universal Time.
-
Het percentage stand-byagent configureert het gewenste percentage stand-byagents voor elke installatiekopieën. U kunt invoeren
*
om ervoor te zorgen dat alle installatiekopieën gelijk worden ingericht of u kunt een geheel getal opgeven van 0 tot 100 om een percentage weer te geven. Als u een percentage opgeeft, moet het totaal voor alle afbeeldingen gelijk zijn aan 100. Als u één afbeelding hebt, geeft *
u of 100 op.
Het percentage stand-byagent wordt geconfigureerd in de images
sectie wanneer u ARM-sjablonen gebruikt. Zie Installatiekopieën configureren voor meer informatie.
Handmatige stand-by-agentinrichting wordt opgegeven in de resourcePredictionsProfile
sectie van agentProfile
, en de details worden geconfigureerd in de resourcePredictions
sectie.
{
"$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
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
Geef de gewenste tijdzone voor uw schema op met behulp van de timeZone
eigenschap. De standaardwaarde is UTC
. Zie de methode TimeZoneInfo.GetSystemTimeZones om een lijst met tijdzonenamen voor deze eigenschap op te halen.
Het schema voor de stand-byagenten wordt gedefinieerd door de daysData
lijst. De daysData
lijst kan één item of zeven items bevatten.
Een daysData
lijst met zeven items wordt toegewezen aan de dagen van de week, beginnend met zondag. Elk van deze zeven items kan nul of meer "time": count
items hebben, waarbij een tijd wordt opgegeven in de notatie van 24 uur en het aantal stand-byagents. Het opgegeven aantal stand-byagents wordt gehandhaafd tot de volgende "time": count
vermelding, die zich op dezelfde dag of op een volgende dag kan bevinden.
Een daysData
lijst met één item definieert een all week-schema, waarbij de enkele "time": count
vermelding overeenkomt met het aantal stand-byagenten voor de hele week.
Het volgende voorbeeld is een handmatig stand-byagentschema, waarbij Eastern Standard Time
één agent maandag tot en met vrijdag is ingericht, van 9:00 uur (aantal stand-byagenten 1
) tot 17:00 uur (aantal stand-byagenten 0
).
{
"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"
}
}
Eén daysData
item bevat een woordenlijst met tijden en het aantal stand-byagenten. Elke "time" : count
vermelding geeft het aantal stand-byagents op dat moet worden gepland vanaf de opgegeven tijd, in de notatie van 24 uur. Opeenvolgende "time" : count
vermeldingen geven een reeks geplande agentaantallen voor die dag op.
"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
]
Het aantal stand-byagenten wordt niet automatisch teruggezet naar nul aan het einde van een dag of aan het einde van de week en het opgeven van een leeg daysData
item schakelt de stand-byagenten voor die dag niet uit. Een leeg daysData
item betekent dat er geen wijzigingen zijn in het schema voor het tellen van de stand-byagent voor die dag. Als u de stand-byagent wilt instellen op nul vanaf een bepaalde periode, moet u expliciet een "time" : count
vermelding met een count
van 0
opgeven.
Voorbeelden
Als u het aantal stand-byagenten dat is opgegeven aan het einde van de vorige dag (of week als u de eerste periode van de week configureert), niet wilt aanpassen, geeft u een daysData
item met nul vermeldingen op.
{
}
Als u wilt plannen dat één stand-byagent begint bij 09:00:00
en stopt 17:00:00
(met behulp van de tijdzone die is opgegeven door de resourcePredictions
eigenschap), geeft u de volgende configuratie op.
{
"09:00:00": 1,
"17:00:00": 0
}
Als u één stand-byagent wilt plannen vanaf middernacht, 09:00:00
gevolgd door 10 stand-byagents tot 17:00:00
en met 10, geeft u de volgende configuratie op.
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Als u wilt plannen dat een stand-byagent beschikbaar is vanaf 09:00:00
de opgegeven dag en op 17:00:00
de volgende dag stopt, gebruikt u twee opeenvolgende daysData
items.
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
Agents worden geconfigureerd met behulp van de parameter bij het agent-profile
maken of bijwerken van een pool.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
In het volgende voorbeeld ziet u de inhoud van het bestand agent-profile.json .
Handmatige stand-by-agentinrichting wordt opgegeven in de resourcePredictionsProfile
sectie van de agent-profile
parameter en de details worden geconfigureerd in de resourcePredictions
sectie.
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
Geef de gewenste tijdzone voor uw schema op met behulp van de timeZone
eigenschap. De standaardwaarde is UTC
. Zie de methode TimeZoneInfo.GetSystemTimeZones om een lijst met tijdzonenamen voor deze eigenschap op te halen.
Het schema voor de stand-byagenten wordt gedefinieerd door de daysData
lijst. De daysData
lijst kan één item of zeven items bevatten.
Een daysData
lijst met zeven items wordt toegewezen aan de dagen van de week, beginnend met zondag. Elk van deze zeven items kan nul of meer "time": count
items hebben, waarbij een tijd wordt opgegeven in de notatie van 24 uur en het aantal stand-byagents. Het opgegeven aantal stand-byagents wordt gehandhaafd tot de volgende "time": count
vermelding, die zich op dezelfde dag of op een volgende dag kan bevinden.
Een daysData
lijst met één item definieert een all week-schema, waarbij de enkele "time": count
vermelding overeenkomt met het aantal stand-byagenten voor de hele week.
Het volgende voorbeeld is een handmatig stand-byagentschema, waarbij Eastern Standard Time
één agent maandag tot en met vrijdag is ingericht, van 9:00 uur (aantal stand-byagenten 1
) tot 17:00 uur (aantal stand-byagenten 0
).
{
"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
},
{}
]
}
}
Eén daysData
item bevat een woordenlijst met tijden en het aantal stand-byagenten. Elke "time" : count
vermelding geeft het aantal stand-byagents op dat moet worden gepland vanaf de opgegeven tijd, in de notatie van 24 uur. Opeenvolgende "time" : count
vermeldingen geven een reeks geplande agentaantallen voor die dag op.
"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
]
Het aantal stand-byagenten wordt niet automatisch teruggezet naar nul aan het einde van een dag of aan het einde van de week en het opgeven van een leeg daysData
item schakelt de stand-byagenten voor die dag niet uit. Een leeg daysData
item betekent dat er geen wijzigingen zijn in het schema voor het tellen van de stand-byagent voor die dag. Als u de stand-byagent wilt instellen op nul vanaf een bepaalde periode, moet u expliciet een "time" : count
vermelding met een count
van 0
opgeven.
Voorbeelden
Als u het aantal stand-byagenten dat is opgegeven aan het einde van de vorige dag (of week als u de eerste periode van de week configureert), niet wilt aanpassen, geeft u een daysData
item met nul vermeldingen op.
{
}
Als u wilt plannen dat één stand-byagent begint bij 09:00:00
en stopt 17:00:00
(met behulp van de tijdzone die is opgegeven door de resourcePredictions
eigenschap), geeft u de volgende configuratie op.
{
"09:00:00": 1,
"17:00:00": 0
}
Als u één stand-byagent wilt plannen vanaf middernacht, 09:00:00
gevolgd door 10 stand-byagents tot 17:00:00
en met 10, geeft u de volgende configuratie op.
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Als u wilt plannen dat een stand-byagent beschikbaar is vanaf 09:00:00
de opgegeven dag en op 17:00:00
de volgende dag stopt, gebruikt u twee opeenvolgende daysData
items.
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
Begin helemaal opnieuw
Als u ervoor kiest om helemaal opnieuw te beginnen, kunt u een lijst met inrichtingsperioden toevoegen om te fungeren als uw inrichtingsschema. Elke inrichtingsperiode bestaat uit een begindag, einddag, tijdzone, begintijd, eindtijd en een telling. Inrichtingsperioden kunnen elkaar niet overlappen.
Eigenschappen |
Beschrijving |
Meerdere dagen |
Wanneer dit is ingeschakeld, kunt u zowel een begindag als een einddatum configureren voor uw inrichtingsschema. |
Tot volgende periode |
Wanneer dit is ingeschakeld, wordt de inrichtingsperiode uitgevoerd vanaf de begintijd tot het begin van de volgende inrichtingsperiode. |
Begindag |
De dag waarop de inrichtingsperiode begint. |
Einddag |
De dag waarop de inrichtingsperiode afloopt. Vereist als meerdere dagen is ingeschakeld. |
Begintijd |
De tijd waarop de inrichtingsperiode begint. |
Eindtijd |
De tijd waarop de inrichtingsperiode afloopt. Vereist tenzij de volgende periode is ingeschakeld. |
Tellen |
Het aantal stand-byagents dat moet worden ingericht. Dit getal moet groter zijn dan nul en mag niet groter zijn dan de waarde maximumagenten die zijn geconfigureerd in de poolinstellingen. |
Nadat u een inrichtingsperiode hebt gemaakt, kunt u de periode verwijderen of bewerken uit de lijst met schema's vóór inrichting .
In het volgende voorbeeld wordt een handmatig schema geconfigureerd met 1 agent ingericht op maandagochtend van 12:00 tot 05:00 uur EST.
{
"$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
},
{},
{},
{},
{},
{}
]
}
}
Weekdagschema
Als u het weekdagschema kiest, kunt u een begin- en eindtijd opgeven waarin het opgegeven aantal stand-byagents elke weekdag stand-by is.
Eigenschappen |
Beschrijving |
Begintijd |
De tijd waarop de inrichtingsperiode begint. |
Eindtijd |
De tijd waarop de inrichtingsperiode afloopt. |
Aantal inrichtingen |
Het aantal stand-byagents dat moet worden ingericht. Dit getal moet groter zijn dan nul en mag niet groter zijn dan de waarde maximumagenten die zijn geconfigureerd in de poolinstellingen. |
In het volgende voorbeeld worden vier agents geconfigureerd die moeten worden gebruikt tijdens werkuren met 0 agents tijdens niet-werkuren en weekenden, met behulp van Eastern Standard Time.
{
"$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
},
{}
]
}
}
Schema alle weken
Als u het schema van de hele week kiest, kunt u een aantal agents opgeven dat u 24/7 wilt gebruiken.
{
"$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
}
]
}
}
Automatisch
Als u uw gebruikspatronen niet kent en wilt vertrouwen op automatische prognose op basis van eerdere gegevens, kiest u Automatisch. U kunt met behulp van een schuifregelaar een balans maken tussen kosten en agentprestaties met de volgende vijf opties. Beheerde DevOps-pools voeren een query uit in de afgelopen drie weken historische gegevens (indien beschikbaar), het organiseren van sessies in de wachtrij van de pool in perioden van vijf minuten en wijst het opgegeven percentiel (om pieken te voorkomen) toe aan elk uur.
-
Meest rendabel (
MostCostEffective
) - 10e percentiel
-
Rendabeler (
MoreCostEffective
) - 25e percentiel
-
Evenwichtig (standaard) (
Balanced
) - 50e percentiel
-
Meer prestaties (
MorePerformance
) - 75e percentiel
-
Beste prestaties (
BestPerformance
) - 90e percentiel
{
"$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"
}
}
}
Levenscyclus van agents en mogelijke vertragingen in de toewijzing
Voor standby-agents die gebruikmaken van een staatloos schema, moet de Azure Pipelines-agent worden geïnstalleerd en geconfigureerd voordat de status verandert van Gereed naar Toegewezen en een pijplijn wordt uitgevoerd. Bij het inrichten van nieuwe agents probeert Managed DevOps Pools de nieuwste Azure Pipelines-agent te downloaden, zodat deze al is gedownload op stand-byagents voordat ze naar de status Gereed overschakelen. Het opstarten, verbinden en beginnen van de taak kan 10 seconden tot een minuut duren, afhankelijk van de SKU-snelheid, de gebruikte installatie-image en de netwerkbelasting van de pool. Daarnaast kunnen bepaalde instellingen in een pijplijntaak leiden tot het opnieuw downloaden en uitvoeren van een andere agent, en regressies en terugdraaiacties van de agent kunnen ook leiden tot een nieuwe download van de agent.
Voorbereide agents hebben altijd een mogelijke vertraging, omdat beheerde DevOps-pools deze agent op een 'tijdelijke' manier gebruiken, wat betekent dat we de taakagent één keer per taak starten en uitvoeren.
Als u vertragingen merkt bij het oppakken van taken door geschikte agents vanuit Azure DevOps, is het belangrijk om rekening te houden met het volgende:
- Heb je beschikbare agenten? - Het meest voorkomende probleem is een misverstand van wanneer agents vooraf moeten worden voorbereid. Wanneer het aantal taken in de wachtrij groter is dan het aantal stand-byagenten in een pool, of wanneer taken buiten het planningsschema voor pre-provisioning worden geplaatst en het aantal stand-byagenten op nul is ingesteld, moeten machines vanaf nul worden gestart.
- Configureert u stand-byagents correct met meerdere afbeeldingen? - Als u niet opgeeft welke afbeelding in uw pijplijn moet worden gebruikt met behulp van de ImageOverride-vraag, worden de taken gericht op de eerste afbeelding. Dit betekent dat, afhankelijk van uw schaalinstellingen, u mogelijk niet zoveel agenten beschikbaar heeft als u zou verwachten, omdat sommige zijn toegewezen aan andere images.
- Gebruikt u ImageVersionOverride in uw pijplijnen? - Wanneer u
ImageVersionOverride
een andere versie van de installatiekopieën opgeeft dan wat is geconfigureerd in de groepsinstellingen, wordt elke agent op aanvraag gestart met behulp van de opgegeven versie van de installatiekopieën. Stand-byagents worden ingericht met behulp van de imageversies die zijn opgegeven in de configuratie van uw pool, dus als u ImageVersionOverride
gebruikt, zullen eventuele stand-byagents niet overeenkomen met die versie en wordt er een nieuwe agent gestart.
- Worden uw proxy-/VNet-/firewallinstellingen de oorzaak van vertragingen in uw pool? - Potentiële traagheid van een netwerkinstelling leidt ertoe dat agents langer duren om de agent te starten en deze te verbinden met Azure DevOps.
- Voert u de overschrijving van de agentversie uit? - Beheerde DevOps-pools worden standaard uitgevoerd op de meest recente versie van de Azure DevOps-taakagent. Instellingen in de pijplijn-yaml (zoals de eis Agent.Version) en Azure DevOps-organisatie-instellingen kunnen afdwingen dat pijplijnen oudere versies van de taakagent gebruiken, waardoor opnieuw moet worden gedownload zodra een machine is toegewezen.
Zie ook