Cvičení – přidání parametrů a proměnných do souboru Bicep
V tomto cvičení aktualizujete dříve vytvořený soubor 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 soubor Bicep tak, aby zahrnoval
locationparametr. - Aktualizujte soubor Bicep tak, aby zahrnoval parametry a proměnné pro názvy prostředků.
- Pomocí výrazů nastavte výchozí hodnoty parametrů.
- Aktualizujte soubor Bicep tak, aby zahrnoval proměnné pro SKU každého prostředku.
- Otestujte nasazení a ujistěte se, že je soubor Bicep platný.
Přidejte parametry umístění a názvu prostředku.
V souboru main.bicep v editoru Visual Studio Code přidejte do horní části souboru Bicep 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 proměnnou, značící, že nejsou použity v souboru Bicep. 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 nasazuje tento soubor Bicep, 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 není problém použít stejný název plánu služby App Service napříč různými nasazeními, pokud všechna tato nasazení probíhají do různých skupin prostředků.
Návod
Určujete, že
locationparametr by měl být nastaven nawestus3hodnotu . Za normálních okolností byste vytvořili prostředky ve stejném umístění jako skupina prostředků pomocí vlastnostiresourceGroup().location. 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 jsou nastaveny vlastnosti
locationaname, a aktualizujte je tak, aby byly použity 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@2024-04-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2024-04-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 stringVš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/elselogiky.Najděte místa v definicích prostředků, kde jsou vlastnosti
skunastavovány, a aktualizujte je tak, aby používaly hodnoty parametrů. Až skončíte, měly by definice zdrojů ve vašem souboru Bicep 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@2024-04-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2024-04-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ěřte váš soubor 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@2024-04-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2024-04-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ého souboru Bicep
V terminálu spusťte následující příkaz Azure CLI.
az deployment group create \
--name main \
--template-file main.bicep \
--parameters environmentType=nonprod
V terminálu spusťte následující příkaz Azure PowerShellu.
New-AzResourceGroupDeployment `
-Name main `
-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.
Zkontrolujte své nasazení
V prohlížeči se vraťte na Azure portal a přejděte do skupiny prostředků. Budete mít stále možnost vidět jedno úspěšné nasazení, protože nasazení použilo stejný název jako první nasazení.
Vyberte odkaz 1 Úspěšný.
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.