Nasazení souborů Bicep pomocí kanálu
Teď, když jste vytvořili základní kanál, jste připraveni nastavit kanál pro nasazení souborů Bicep. V této lekci se dozvíte, jak nasadit kód Bicep z kanálu a jak nastavit kroky nasazení.
Poznámka:
Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.
Připojení služby
Když nasadíte soubor Bicep z vlastního počítače, použijete Azure CLI nebo Azure PowerShell. Před nasazením kódu se přihlásíte do Azure. Nástroje vás obvykle vyzve, abyste v prohlížeči zadali svoji e-mailovou adresu a heslo. Po ověření přihlašovacích údajů se vaše oprávnění k nasazení prostředků potvrdí a pomocí nástrojů můžete nasadit soubor Bicep.
Nasazení podle kanálu vyžaduje také ověřování. Protože kanály běží bez zásahu člověka, kanály se ověřují v Azure pomocí instančního objektu. Přihlašovací údaje instančního objektu se skládají z ID aplikace a tajného klíče, což je obvykle klíč nebo certifikát. Ve službě Azure Pipelines použijete připojení služby k bezpečnému uložení těchto přihlašovacích údajů, aby je mohl váš kanál používat. Připojení ke službě obsahuje také některé další informace, které vašemu kanálu pomůžou identifikovat prostředí Azure, do kterého chcete nasadit.
Tip
V tomto modulu použijete Azure DevOps k automatickému vytvoření instančního objektu při vytváření připojení služby. Modul Ověření kanálu nasazení Azure pomocí instančních objektů poskytuje podrobnější vysvětlení instančních objektů, včetně jejich fungování a způsobu jejich vytvoření, přiřazení rolí a jejich správy.
Při vytváření připojení služby pojmenujete připojení. Kroky odkazují na připojení služby pomocí tohoto názvu, takže kód YAML kanálu nemusí obsahovat tajné informace.
Po spuštění kanálu má agent, který spouští kroky nasazení, přístup k připojení služby včetně jeho přihlašovacích údajů. Krok kanálu používá přihlašovací údaje pro přihlášení k Azure, stejně jako se přihlašujete sami. Pak akce definované v kroku používají identitu instančního objektu.
Musíte zajistit, aby měl instanční objekt oprávnění, která potřebuje ke spuštění kroků nasazení. Například možná budete muset instančnímu objektu přiřadit roli Přispěvatel pro skupinu prostředků, do které nasadí vaše prostředky.
Upozorňující
Může se zdát jednodušší uložit přihlašovací údaje instančního objektu do souboru YAML a pak se přihlásit pomocí az login
příkazu. Tento přístup byste nikdy neměli používat k ověření instančního objektu. Přihlašovací údaje v souboru YAML se ukládají ve formátu prostého textu. Každý, kdo má přístup k vašemu úložišti, může zobrazit a používat přihlašovací údaje. I když omezíte přístup k organizaci a projektu Azure DevOps, kdykoli někdo naklonuje vaše úložiště, soubor YAML, který obsahuje přihlašovací údaje, bude na počítači této osoby. Při práci s Azure z kanálu je důležité použít připojení služby. Připojení služeb také poskytují další funkce zabezpečení a řízení přístupu.
Připojení služeb se vytvářejí v projektu Azure DevOps. Jedno připojení služby může sdílet několik kanálů. Obvykle je ale vhodné nastavit připojení služby a odpovídající instanční objekt pro každý kanál a každé prostředí, do něhož nasadíte. Tento postup pomáhá zvýšit zabezpečení kanálů a snižuje pravděpodobnost náhodného nasazení nebo konfigurace prostředků v jiném prostředí, než který očekáváte.
Připojení ke službě můžete také nastavit tak, aby bylo možné ho používat pouze v konkrétních kanálech. Když například vytvoříte připojení služby, které se nasadí do produkčního prostředí vašeho webu, je vhodné zajistit, aby toto připojení služby mohlo používat jenom kanál vašeho webu. Omezení připojení služby na konkrétní kanály zastaví náhodné použití stejného připojení služby pro jiný projekt a potenciálně způsobí, že váš produkční web přestane fungovat.
Nasazení souboru Bicep pomocí úlohy nasazení skupiny prostředků Azure
Pokud potřebujete nasadit soubor Bicep z kanálu, můžete použít úlohu nasazení skupiny prostředků Azure. Tady je příklad konfigurace kroku pro použití úlohy:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
connectedServiceName: 'MyServiceConnection'
location: 'westus3'
resourceGroupName: Example
csmFile: deploy/main.bicep
overrideParameters: >
-parameterName parameterValue
První řádek určuje AzureResourceManagerTemplateDeployment@3
. Říká službě Azure Pipelines, že úloha, kterou chcete použít pro tento krok, má název AzureResourceManagerTemplateDeployment
a chcete použít verzi 3
úlohy.
Když použijete úlohu nasazení skupiny prostředků Azure, zadáte vstupy , které úkolu sdělí, co má udělat. Tady jsou některé vstupy, které můžete zadat při použití úkolu:
-
connectedServiceName
je název připojení služby, které se má použít. -
location
je třeba zadat, i když se její hodnota nemusí použít. Úloha nasazení skupiny prostředků Azure může také vytvořit skupinu prostředků za vás a pokud ano, musí znát oblast Azure, ve které se má skupina prostředků vytvořit. V tomto modulu zadátelocation
vstupní hodnotu, ale její hodnota se nepoužije. -
resourceGroupName
určuje název skupiny prostředků, do které má být soubor Bicep nasazen. -
overrideParameters
obsahuje všechny hodnoty parametrů, které chcete předat do souboru Bicep v době nasazení.
Když se úloha spustí, použije připojení služby k přihlášení k Azure. V době, kdy úloha spustí zadané nasazení, se úloha ověřila. Nemusíte spouštět az login
.
Spuštění příkazů Azure CLI a Azure PowerShellu
Dvě z nejužitečnějších předdefinovaných úloh v Azure Pipelines jsou Azure CLI a úlohy Azure PowerShellu. Tyto úlohy můžete použít ke spuštění jednoho nebo více příkazů Azure CLI nebo PowerShellu.
V budoucích modulech Microsoft Learn se dozvíte, jak vám příkaz Azure CLI pomůže automatizovat další části procesu nasazení z kanálu.
Proměnné
Kanály často obsahují hodnoty, které chcete oddělit od souboru YAML. Když například nasadíte soubor Bicep do skupiny prostředků, zadáte název skupiny prostředků. Název skupiny prostředků se pravděpodobně liší při nasazování do různých prostředí. Možná budete také muset zadat parametry pro soubory Bicep, včetně tajných kódů, jako jsou hesla databázových serverů. Tyto hodnoty neukládejte do souboru YAML kanálu ani nikde jinde v úložišti Git. Místo toho pro zvýšení zabezpečení a opětovné použití definic kanálů použijte proměnné.
Vytvoření proměnné
Webové rozhraní Azure Pipelines obsahuje editor, který můžete použít k vytváření proměnných pro váš kanál:
Hodnotu proměnné Azure Pipelines můžete nastavit jako tajný klíč. Když nastavíte hodnotu proměnné jako tajný klíč, nebudete moct po nastavení zobrazit hodnotu. Služba Azure Pipelines je navržená tak, aby neodhaluje tajné hodnoty v protokolech kanálu.
Upozorňující
Azure Pipelines ve výchozím nastavení obfuskuje hodnoty tajných proměnných v protokolech kanálu, ale potřebujete postupovat i podle osvědčených postupů. Kroky kanálu mají přístup ke všem hodnotám proměnných, včetně tajných kódů. Pokud váš kanál obsahuje krok, který zabezpečeně nezpracuje zabezpečenou proměnnou, je možné, že se tajná proměnná zobrazí v protokolech kanálu.
Uživatelům můžete umožnit, aby při ručním spuštění kanálu přepsali hodnotu proměnné. Hodnota, kterou uživatel poskytuje, se používá pouze pro konkrétní spuštění kanálu. Přepsání proměnných může být užitečné při testování kanálu.
Použití proměnné v kanálu
Po vytvoření proměnné použijete konkrétní syntaxi, která odkazuje na proměnnou v souboru YAML kanálu:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
connectedServiceName: $(ServiceConnectionName)
location: $(DeploymentDefaultLocation)
resourceGroupName: $(ResourceGroupName)
csmFile: deploy/main.bicep
overrideParameters: >
-environmentType $(EnvironmentType)
Formát definičního souboru kanálu obsahuje speciální $(VariableName)
syntaxi. Pomocí tohoto přístupu můžete odkazovat na libovolnou proměnnou bez ohledu na to, jestli se jedná o tajný kód nebo ne.
Tip
V předchozím příkladu si všimněte, že název souboru Bicep není uložený v proměnné. Stejně jako parametry Bicep nemusíte vytvářet proměnné pro všechno. Je vhodné vytvořit proměnné pro cokoli, co se může změnit mezi prostředími a čímkoli, co je tajné. Protože kanál bude vždy používat stejný soubor šablony, nemusíte pro cestu vytvořit proměnnou.
Systémové proměnné
Azure Pipelines také používá systémové proměnné. Systémové proměnné obsahují předdefinované informace, které můžete chtít použít v kanálu. Tady jsou některé systémové proměnné, které můžete použít v kanálu:
-
Build.BuildNumber
je jedinečný identifikátor spuštění kanálu. I přes jeho názevBuild.BuildNumber
je hodnota často řetězec, nikoli číslo. Tuto proměnnou můžete použít k pojmenování nasazení Azure, abyste mohli sledovat nasazení zpět ke konkrétnímu spuštění kanálu, které ho aktivovalo. -
Agent.BuildDirectory
je cesta v systému souborů vašeho počítače agenta, kde jsou uložené soubory spuštění kanálu. Tyto informace můžou být užitečné, když chcete odkazovat na soubory v agentu sestavení.
Vytvoření proměnných v souboru YAML kanálu
Kromě použití webového rozhraní Azure Pipelines k vytváření proměnných můžete nastavit hodnoty proměnných v souboru YAML kanálu. Tuto možnost můžete použít v případě, že máte hodnoty, které nejsou tajné, kdy se hodnoty dají uložit do úložiště a když chcete hodnoty proměnných uchovávat na jednom místě v souboru, abyste je mohli odkazovat v celé definici kanálu. Tento přístup můžete použít ke sledování změn proměnné v systému správy verzí.
Pokud chcete nastavit proměnnou v souboru YAML, přidejte variables
oddíl:
trigger: none
pool:
vmImage: ubuntu-latest
variables:
ServiceConnectionName: 'MyServiceConnection'
EnvironmentType: 'Test'
ResourceGroupName: 'MyResourceGroup'
DeploymentDefaultLocation: 'westus3'
jobs:
- job:
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
connectedServiceName: $(ServiceConnectionName)
location: $(DeploymentDefaultLocation)
resourceGroupName: $(ResourceGroupName)
csmFile: deploy/main.bicep
overrideParameters: >
-environmentType $(EnvironmentType)
Tento příklad kanálu definuje čtyři proměnné: ServiceConnectionName
, EnvironmentType
, ResourceGroupName
a DeploymentDefaultLocation
.
Později v tomto modulu se dozvíte, jak v jednom kanálu kombinovat proměnné definované na různých místech.