Cvičení – přidání parametrů a proměnných do šablony Bicep
V tomto cvičení aktualizujete dříve vytvořenou šablonu Bicep tak, aby:\
- Přijímá parametry pro umístění a názvy prostředků.
- Pomocí obchodních pravidel vyberete správné skladové položky pro nasazované prostředky.
Během tohoto procesu:
- Aktualizujte šablonu tak, aby zahrnovala
location
parametr. - Aktualizujte šablonu tak, aby zahrnovala parametry a proměnné pro názvy prostředků.
- Pomocí výrazů nastavte výchozí hodnoty parametrů.
- Aktualizujte šablonu tak, aby zahrnovala proměnné pro skladovou položku každého prostředku.
- Otestujte nasazení a ujistěte se, že je šablona platná.
Přidání parametrů názvu umístění a prostředku
V souboru main.bicep v editoru Visual Studio Code přidejte do horní části souboru následující kód:
param location string = 'eastus' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'
Linter Bicep přidá žluté vlnovky pod každý parametr a název proměnné, aby bylo možné označit, že se v šabloně nepoužívají. Tento problém brzy vyřešíte.
Všimněte si, že používáte výrazy, které obsahují interpolaci řetězců a
uniqueString()
funkci k definování výchozích hodnot parametrů. Někdo, kdo tuto šablonu nasazuje, může přepsat výchozí hodnoty parametrů zadáním hodnot v době nasazení, ale nemůže přepsat hodnoty proměnných.Všimněte si také, že pro název plánu služby Aplikace Azure používáte proměnnou, ale pro ostatní názvy používáte parametry. Účty úložiště a aplikace App Service potřebují globálně jedinečné názvy, ale názvy plánů služby App Service musí být jedinečné jenom v rámci skupiny prostředků. Tento rozdíl znamená, že se nejedná o použití stejného názvu plánu služby App Service v různých nasazeních, pokud se všechna nasazení nacházejí v různých skupinách prostředků.
Tip
Určujete, že
location
parametr by měl být nastaven nawestus3
hodnotu . Za normálních okolností byste prostředky vytvořili ve stejném umístění jako skupina prostředků pomocíresourceGroup().location
vlastnosti. Když ale pracujete s sandboxem Microsoft Learn, musíte použít určité oblasti Azure, které neodpovídají umístění skupiny prostředků.Najděte místa v definicích prostředků, kde
location
jsou nastaveny vlastnosti,name
a aktualizujte je tak, aby používaly hodnoty parametrů. Po dokončení by definice prostředků v souboru Bicep měly vypadat takto:resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Uložte změny souboru.
Automatické nastavení skladových položek pro každý typ prostředí
V souboru main.bicep v editoru Visual Studio Code přidejte následující parametr Bicep pod parametry, které jste vytvořili v předchozí úloze:
@allowed([ 'nonprod' 'prod' ]) param environmentType string
Všimněte si, že definujete parametr se sadou povolených hodnot, ale nezadáváte výchozí hodnotu pro tento parametr.
Pod řádek, který deklaruje proměnnou
appServicePlanName
, přidejte následující definice proměnných:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Všimněte si, že tyto hodnoty proměnných nastavujete pomocí ternárního operátoru k vyjádření určité
if/then/else
logiky.Najděte místa v definicích prostředků, kde
sku
jsou vlastnosti nastaveny, a aktualizujte je tak, aby používaly hodnoty parametrů. Po dokončení by definice prostředků v souboru Bicep měly vypadat takto:resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Všimněte si, že jste neparametrizovali všechno. Nastavili jste některé vlastnosti přímo v definicích prostředků, kde víte, že se tyto hodnoty mezi nasazeními nezmění.
Uložte změny souboru.
Ověření souboru Bicep
Po dokončení všech předchozích změn by měl váš soubor main.bicep vypadat jako v tomto příkladu:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Pokud se váš soubor neshoduje, zkopírujte příklad nebo upravte soubor tak, aby odpovídal příkladu.
Nasazení aktualizované šablony Bicep
V terminálu spusťte následující příkaz Azure CLI.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
V terminálu spusťte následující příkaz Azure PowerShellu.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Všimněte si, že při spuštění nasazení explicitně zadáváte hodnotu environmentType
parametru. Nemusíte zadávat další hodnoty parametrů, protože mají platné výchozí hodnoty.
Kontrola nasazení
V prohlížeči se vraťte na web Azure Portal a přejděte do skupiny prostředků. Stále uvidíte jedno úspěšné nasazení, protože nasazení použilo stejný název jako první nasazení.
Vyberte odkaz 1 Úspěch.
Vyberte nasazení s názvem hlavní a pak výběrem podrobností o nasazení rozbalte seznam nasazených prostředků.
Všimněte si, že byla nasazena nová aplikace a účet úložiště služby App Service s náhodně generovanými názvy.