Cvičení – refaktoring šablony pro použití modulů

Dokončeno

V tomto cvičení aktualizujete dříve vytvořenou šablonu Bicep, aby používala modul pro prostředky služby Aplikace Azure Service. Moduly pomáhají udržet záměr hlavní šablony jasnější. Pokud se rozhodnete, můžete modul App Service znovu použít v jiných šablonách.

Během tohoto procesu:

  • Přidejte nový modul a přesuňte do něj prostředky služby App Service.
  • Odkazujte na modul z hlavní šablony Bicep.
  • Přidejte výstup pro název hostitele aplikace App Service a vygenerujte ho z nasazení modulu a šablony.
  • Otestujte nasazení a ujistěte se, že je šablona platná.

Přidání nového souboru modulu

  1. V editoru Visual Studio Code vytvořte novou složku s názvem moduly ve stejné složce, ve které jste vytvořili soubor main.bicep . Ve složce modulů vytvořte soubor s názvem appService.bicep. Uložte soubor.

  2. Do souboru appService.bicep přidejte následující obsah:

    param location string
    param appServiceAppName string
    
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    var appServicePlanName = 'toy-product-launch-plan'
    var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
    
    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 zkopírovali parametry a proměnné ze šablony main.bicep , protože šablona appService.bicep musí být samostatná.

  3. Uložte změny souboru. Všimněte si, že Visual Studio Code nezobrazuje žádné červené vlnovky, které označují upozornění na chybějící proměnné, chybějící parametry nebo neplatné prostředky.

Přidání odkazu na modul z nadřazené šablony

Teď, když máte úplný modul pro nasazení prostředků služby App Service, můžete na modul odkazovat v rámci nadřazené šablony. Vzhledem k tomu, že modul nasazuje prostředky služby App Service, můžete z nadřazené šablony odstranit přidružené prostředky a proměnné.

  1. V souboru main.bicep odstraňte prostředky služby App Service a appServicePlanName definice proměnných.appServicePlanSkuName Neodstraňujte parametry služby App Service, protože je stále potřebujete. Také neodstraňovat parametry účtu úložiště, proměnnou nebo prostředky.

  2. V dolní části souboru main.bicep přidejte následující kód Bicep:

    module appService 'modules/appService.bicep' = {
      name: 'appService'
      params: {
        location: location
        appServiceAppName: appServiceAppName
        environmentType: environmentType
      }
    }
    

    Všimněte si, že zadáváte parametry modulu tak, že odkazujete na parametry v nadřazené šabloně.

  3. Uložte změny souboru.

Přidání názvu hostitele jako výstupu

  1. Do dolní části souboru appService.bicep přidejte následující kód Bicep:

    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Tento kód deklaruje, že výstup pro tento modul, který bude pojmenován appServiceAppHostName, bude typu string. Výstup převezme jeho hodnotu z defaultHostName vlastnosti aplikace App Service.

  2. Uložte změny souboru.

    Tento výstup se deklaruje v souboru Bicep, který použijeme jako modul, takže bude k dispozici pouze nadřazené šabloně. Musíte také vrátit výstup osobě, která šablonu nasadila.

  3. Otevřete soubor main.bicep a do dolní části souboru přidejte následující kód:

    output appServiceAppHostName string = appService.outputs.appServiceAppHostName
    

    Všimněte si, že tento výstup je deklarován podobným způsobem jako výstup v modulu. Tentokrát ale odkazujete na výstup modulu místo na vlastnost prostředku.

  4. Uložte změny souboru.

Ověření 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 storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountSkuName
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

module appService 'modules/appService.bicep' = {
  name: 'appService'
  params: {
    location: location
    appServiceAppName: appServiceAppName
    environmentType: environmentType
  }
}

output appServiceAppHostName string = appService.outputs.appServiceAppHostName

Soubor appService.bicep by měl vypadat jako v tomto příkladu:

param location string
param appServiceAppName string

@allowed([
  'nonprod'
  'prod'
])
param environmentType string

var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'

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
  }
}

output appServiceAppHostName string = appServiceApp.properties.defaultHostName

Pokud se některý ze souborů neshoduje, zkopírujte příklad nebo upravte šablonu tak, aby odpovídala 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

Kontrola nasazení

  1. V prohlížeči se vraťte na web Azure Portal. Přejděte do skupiny prostředků; nyní existují dvě úspěšná nasazení.

  2. Vyberte odkaz 2 Úspěch. Všimněte si, že v seznamu máte nasazení označované jako hlavní a nové nasazení s názvem appService.

    Snímek obrazovky s rozhraním webu Azure Portal pro nasazení se dvěma uvedenými nasazeními a úspěšnými stavy

  3. Vyberte nasazení s názvem main a pak výběrem možnosti Podrobnosti nasazení rozbalte seznam nasazených prostředků.

    Všimněte si, že naše nasazení modulu se zobrazí v seznamu.

    Snímek obrazovky s rozhraním webu Azure Portal pro konkrétní nasazení se seznamem jednoho prostředku

  4. Vyberte kartu Výstupy. Všimněte si, že existuje výstup s názvem appServiceAppHostName s názvem hostitele vaší aplikace App Service. Zkopírujte název hostitele do schránky.

    Snímek obrazovky s rozhraním webu Azure Portal pro výstupy konkrétního nasazení

  5. Otevřete novou kartu prohlížeče a vložte zkopírovaný název hostitele. Měla by se zobrazit výchozí úvodní stránka služby App Service.

    Snímek obrazovky s výchozí úvodní stránkou služby App Service

Gratulujeme! Úspěšně jste nasadili základy pro skvělou aplikaci.