Náhled a schválení nasazení
Seznámili jste se s fázemi kanálu a s tím, jak můžete přidat fázi kanálu pro ověření kódu Bicep. Dalším krokem při budování spolehlivosti nasazení je přidání další fáze, která přesně zkontroluje, co se nasazení změní.
V této lekci se dozvíte o použití příkazu what-if v kanálu. Dozvíte se také o přidávání schválení, abyste měli možnost ručně ověřit výstup příkazu před spuštěním nasazení.
Operace citlivostní operace
Soubor Bicep popisuje stav, ve který má být vaše prostředí Azure na konci nasazení. Když odešlete nasazení, Azure Resource Manager změní vaše prostředí Azure tak, aby odpovídal stavu popsanému v souboru Bicep.
Nasazení může mít za následek nasazení nových prostředků do vašeho prostředí nebo aktualizaci existujících prostředků. Když spustíte nasazení v úplném režimu, může dokonce vést k odstranění existujících prostředků.
Když se prostředky vytvářejí, aktualizují nebo odstraní, hrozí riziko, že se věci můžou změnit způsobem, který jste nečekali. Doporučujeme přidat další krok, který ověří, které prostředky se vytvoří, aktualizují a odstraní. Toto ověření zvyšuje hodnotu procesu automatizace. Při nasazování do produkčního prostředí je důležité potvrdit všechny změny, které se ve vašem prostředí projeví.
Resource Manager poskytuje operaci citlivostní analýza, kterou můžete spustit v souboru Bicep ve fázi kanálu:
Pomocí příkazu Azure CLI v definici kanálu můžete az deployment group what-if
spustit krok citlivostní analýza:
stages:
- stage: Preview
jobs:
- job: Preview
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group what-if \
--resource-group $(ResourceGroupName) \
--template-file deploy/main.bicep
Tip
V tomto modulu použijeme Azure CLI ke spuštění operace citlivostní operace. Pokud vytváříte vlastní kanál založený na PowerShellu, můžete tuto rutinu New-AzResourceGroupDeployment
-Whatif
použít s přepínačem nebo můžete tuto rutinu Get-AzResourceGroupDeploymentWhatIfResult
použít.
Operace citlivostní operace neprovádí žádné změny vašeho prostředí. Místo toho popisuje prostředky, které budou vytvořeny nebo odstraněny, vlastnosti prostředku, které budou aktualizovány, a prostředky, které budou odstraněny.
Co když někdy ukazuje, že se prostředek změní, když se skutečně žádná změna nestane. Tato zpětná vazba se nazývá šum. Pracujeme na tom, abychom tyto problémy omezili, ale potřebujeme vaši pomoc při hlášení těchto problémů.
Jakmile se zobrazí výstup operace citlivostní operace, můžete určit, jestli se má pokračovat v nasazení. Tento krok obvykle zahrnuje lidskou kontrolu výstupu příkazu what-if a následné rozhodnutí o tom, jestli jsou zjištěné změny přiměřené. Pokud se člověk rozhodne, že změny jsou přiměřené, může spuštění kanálu schválit ručně.
Další informace o příkazu what-if najdete v modulu Microsoft Learn ve verzi Preview změn nasazení Azure pomocí citlivostní citlivosti.
Prostředí
V Azure Pipelines představuje prostředí místo, do kterého je vaše řešení nasazené. Prostředí poskytují funkce, které vám pomůžou při práci se složitými nasazeními. V budoucím modulu se dozvíte více o prostředích a jejich funkcích. Prozatím se zaměříme na jejich schopnost přidávat do kanálu ruční schválení.
Jak už víte, pomocí úloh definujete posloupnost kroků v rámci fáze kanálu. Pokud do kanálu zahrnete prostředí, musíte použít speciální typ úlohy označované jako úloha nasazení. Úloha nasazení je podobná normální úloze, ale poskytuje některé další funkce. Tato funkce zahrnuje definování prostředí, které úloha nasazení používá:
variables:
- name: deploymentDefaultLocation
value: westus3
stages:
- stage: Preview
jobs:
- job: Preview
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group what-if \
--resource-group $(ResourceGroupName) \
--template-file deploy/main.bicep
- stage: Deploy
jobs:
- deployment: Deploy
environment: MyAzureEnvironment
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: AzureResourceManagerTemplateDeployment@3
name: Deploy
displayName: Deploy to Azure
inputs:
connectedServiceName: 'MyServiceConnection'
location: $(deploymentDefaultLocation)
resourceGroupName: $(ResourceGroupName)
csmFile: deploy/main.bicep
Všimněte si, že v definici YAML pro úlohu nasazení existují některé klíčové rozdíly od normální úlohy:
- Místo toho, aby začínalo slovem
job
, je úloha nasazení definována jakodeployment
. - Klíčové
environment
slovo určuje název prostředí, které se má cílit. V předchozím příkladu je nasazení sledováno v prostředí s názvemMyAzureEnvironment
. - Klíčové
strategy
slovo určuje, jak Azure Pipelines spouští kroky nasazení. Strategie nasazení podporují složité procesy nasazení, zejména pokud máte více produkčních prostředí. V tomto modulu používámerunOnce
strategii nasazení. Tato strategie se chová podobně jako ostatní úlohy, na které jste už zvyklí.
Kontroly fází a schválení
Po vytvoření prostředí můžete definovat kontroly. Kontroly slouží k ověření podmínek, které musí být splněny, aby kanál mohl prostředí používat. Schválení je typ kontroly, která vyžaduje, aby člověk poskytl ruční schválení.
Kontroly jsou definovány v prostředí, nikoli v kanálu. Autoři souboru YAML kanálu nemůžou odebrat nebo přidat tyto kontroly a schválení. Kontroly a schválení můžou spravovat jenom správci prostředí.
V mnoha organizacích je vlastníkem prostředí v Azure Pipelines osoba odpovědná za prostředí, do kterého se nasazuje. Kontroly a schválení pomáhají zajistit, aby se do procesu nasazení zapojili ti správní lidé.
Jak fungují kontroly a schválení?
Kontroly a schválení se vyhodnocují těsně před zahájením fáze kanálu. Když se Azure Pipelines chystá spustit fázi kanálu, podívá se na všechny prostředky kanálu, které fáze používá, včetně prostředí. Prostředí můžou mít kontroly, které je potřeba splnit.
Schválení je jedním typem kontroly. Při konfiguraci kontroly schválení přiřadíte jednoho nebo více uživatelů, kteří potřebují schválit pokračování kanálu.
Azure Pipelines také poskytuje další typy kontrol. Můžete například volat rozhraní API pro spuštění nějaké vlastní logiky, řídit pracovní dobu, během které se fáze může spustit, a dokonce dotazovat Azure Monitor, aby se zajistilo, že nasazení proběhlo úspěšně. Probereme pouze kontroly schválení v tomto modulu, ale poskytujeme odkazy na další informace o kontrolách v souhrnu.
Poznámka:
Fondy agentů a připojení služeb můžou mít také nakonfigurované kontroly. Můžete také použít speciální krok označovaný jako úkol ručního schvalování. V tomto modulu se ale zaměříme na prostředí a kontroly související s nimi.
Po zahájení kanálu a dosažení fáze, která vyžaduje kontrolu schválení, se spuštění kanálu pozastaví. Všem uživatelům, kteří byli označeni jako schvalovatelé, se odešle zpráva v Azure DevOps a e-mailem.
Schvalovatelé můžou zkontrolovat protokoly kanálu, například změny, které operace citlivostní analýzy zjistí. Na základě těchto informací pak změnu schválí nebo odmítne. Pokud změnu schválí, kanál se obnoví. Pokud odmítne nebo pokud nereagují v rámci konfigurovatelného časového limitu, fáze selže.
Význam osvědčených postupů
Funkce prostředí ve službě Azure Pipelines umožňuje propojit nasazení s prostředím a pak nasazení dědí kontroly a schválení definované vlastníkem prostředí. Není ale potřeba nic vyžadovat, aby nové kanály používaly prostředí.
Je důležité, abyste vy a vaše organizace vytvořili osvědčené postupy pro kontrolu definic kanálů. Příkladem je konfigurace úložiště tak, aby vyžadovala kontroly žádostí o přijetí změn u všech změn v hlavní větvi pomocí zásad ochrany větví. Další informace o tomto konceptu se dozvíte v budoucím modulu.
Ke službám připojení můžete také přidat kontroly a schválení, která zajistí, aby bylo možné získat schválení před nasazením pomocí přihlašovacích údajů instančního objektu. Schválení by ale také ovlivnila schopnost kanálu spouštět předběžné ověření a operaci citlivostní operace, protože vyžadují také připojení ke službě.
Pro fázi what-if s vlastním instančním objektem můžete použít jiné samostatné připojení služby. Instanční objekt používaný pro předběžné fáze a fáze ověřování musí mít definovanou vlastní roli Azure, aby se zajistilo, že má minimální oprávnění, která potřebuje ke své práci.