Cvičení – přidání parametrů a proměnných do souboru Bicep

Dokončeno

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 location parametr.
  • 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.

  1. 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 location parametr by měl být nastaven na westus3hodnotu . Za normálních okolností byste vytvořili prostředky ve stejném umístění jako skupina prostředků pomocí vlastnosti resourceGroup().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ů.

  2. Najděte místa v definicích prostředků, kde jsou nastaveny vlastnosti location a name, 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
      }
    }
    
  3. Uložte změny souboru.

Automatické nastavení skladových položek pro každý typ prostředí

  1. 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.

  2. 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.

  3. Najděte místa v definicích prostředků, kde jsou vlastnosti sku nastavová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í.

  4. 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í

  1. 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í.

  2. Vyberte odkaz 1 Úspěšný.

  3. Vyberte nasazení s názvem hlavní a pak výběrem podrobností o nasazení rozbalte seznam nasazených prostředků.

    Snímek obrazovky rozhraní Azure Portal pro konkrétní nasazení, s účtem úložiště a prostředky App Service uvedenými s vygenerovanými názvy.

  4. 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.