Übung: Hinzufügen von Parametern und Variablen zu Ihrer Bicep-Vorlage

Abgeschlossen

In dieser Übung aktualisieren Sie die zuvor erstellte Bicep-Vorlage, damit sie:\

  • Parameter für die Ressourcenstandorte und -namen akzeptiert
  • Ihre Geschäftsregeln anwendet, um die richtigen SKUs für die bereitgestellten Ressourcen auszuwählen

In dem Prozess gehen Sie wie folgt vor:

  • Sie aktualisieren die Vorlage so, dass sie einen ___location-Parameter enthält.
  • Sie aktualisieren die Vorlage und fügen Parameter und Variablen für die Ressourcennamen ein.
  • Sie verwenden Ausdrücke, um Standardwerte für die Parameter festzulegen.
  • Sie aktualisieren die Vorlage und fügen Variablen für die SKU jeder Ressource ein.
  • Sie testen die Bereitstellung, um sicherzustellen, dass die Vorlage gültig ist.

Hinzufügen der Parameter für Standort und Namen

  1. Fügen Sie in der Datei "main.bicep " in Visual Studio Code den folgenden Code am Anfang der Datei hinzu:

    param ___location string = 'eastus'
    param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    
    var appServicePlanName = 'toy-product-launch-plan'
    

    Der Bicep-Linter unterstreicht jeden Parameter- und Variablennamen mit gelben Schlangenlinien, um anzuzeigen, dass sie nicht in der Vorlage verwendet werden. Dieses Problem werden Sie in Kürze korrigieren.

    Beachten Sie, dass Sie Ausdrücke verwenden, die Zeichenfolgeninterpolation und die uniqueString()-Funktion enthalten, um Standardparameterwerte zu definieren. Wenn eine Person diese Vorlage bereitstellt, kann sie die Standardparameterwerte überschreiben, indem sie die Werte zur Bereitstellungszeit angibt. Die Variablenwerte kann sie aber nicht außer Kraft setzen.

    Beachten Sie außerdem, dass Sie für den Azure App Service-Plannamen eine Variable verwenden, für die anderen Namen aber Parameter. Für Speicherkonten und App Service-Apps sind global eindeutige Namen erforderlich, während die Namen von App Service-Plänen nur innerhalb der jeweiligen Ressourcengruppe eindeutig sein müssen. Aufgrund dieses Unterschieds ist es nicht problematisch, den gleichen Namen für den App Service-Plan für mehrere Bereitstellungen zu verwenden, solange alle Bereitstellungen in verschiedenen Ressourcengruppen erfolgen.

    Tipp

    Sie geben an, dass der ___location-Parameter auf westus3 festgelegt werden soll. Normalerweise würden Sie Ressourcen am gleichen Standort wie die Ressourcengruppe erstellen, indem Sie die resourceGroup().___location-Eigenschaft verwenden. Wenn Sie jedoch mit der Microsoft Learn Sandbox arbeiten, müssen Sie bestimmte Azure-Regionen verwenden, die nicht mit dem Standort der Ressourcengruppe übereinstimmen.

  2. Suchen Sie die Stellen in den Ressourcendefinitionen, an denen die Eigenschaften ___location und name festgelegt werden, und aktualisieren Sie sie, sodass sie die Parameterwerte verwenden. Wenn Sie fertig sind, sollten die Ressourcendefinitionen in Ihrer Bicep-Datei wie folgt aussehen:

    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. Speichern Sie die Änderungen in der Datei.

Automatisches Festlegen der SKUs für jeden Umgebungstyp

  1. Fügen Sie in der Datei "main.bicep " in Visual Studio Code den folgenden Bicep-Parameter unter den Parametern hinzu, die Sie in der vorherigen Aufgabe erstellt haben:

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

    Beachten Sie, dass Sie einen Parameter mit einem Satz zulässiger Werte definieren, aber keinen Standardwert für diesen Parameter angeben.

  2. Fügen Sie unterhalb der Zeile, in der die Variable appServicePlanName deklariert wird, die folgenden Variablendefinitionen hinzu:

    var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
    var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
    

    Beachten Sie, dass Sie die Werte dieser Variablen mithilfe des ternären Operators festlegen, um eine if/then/else-Logik auszudrücken.

  3. Suchen Sie die Stellen in den Ressourcendefinitionen, an denen die sku-Eigenschaften festgelegt werden, und aktualisieren Sie sie, sodass sie die Parameterwerte verwenden. Wenn Sie fertig sind, sollten die Ressourcendefinitionen in Ihrer Bicep-Datei wie folgt aussehen:

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

    Beachten Sie, dass Sie noch nicht alles parametrisiert haben. Es gibt noch einige Eigenschaften direkt in den Ressourcendefinitionen, von denen Sie wissen, dass sich diese Werte zwischen Bereitstellungen nicht ändern.

  4. Speichern Sie die Änderungen in der Datei.

Überprüfen Ihrer Bicep-Datei

Nachdem Sie alle vorherigen Änderungen abgeschlossen haben, sollte die Datei "main.bicep " wie im folgenden Beispiel aussehen:

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

Wenn Ihre Datei nicht übereinstimmt, kopieren Sie das Beispiel, oder passen Sie Ihre Datei an das Beispiel an.

Bereitstellen der aktualisierten Bicep-Vorlage

Führen Sie den folgenden Azure CLI-Befehl im Terminal aus.

az deployment group create \
  --name main \
  --template-file main.bicep \
  --parameters environmentType=nonprod

Führen Sie den folgenden Azure PowerShell-Befehl im Terminal aus.

New-AzResourceGroupDeployment `
  -Name main `
  -TemplateFile main.bicep `
  -environmentType nonprod

Beachten Sie, dass Sie den Wert für den environmentType-Parameter explizit beim Ausführen der Bereitstellung angeben. Sie müssen die anderen Parameterwerte nicht angeben, da sie gültige Standardwerte besitzen.

Überprüfen Ihrer Bereitstellung

  1. Wechseln Sie in Ihrem Browser zurück zum Azure-Portal , und wechseln Sie zu Ihrer Ressourcengruppe. Es wird noch immer eine erfolgreiche Bereitstellung angezeigt, da diese denselben Namen wie die erste Bereitstellung verwendet hat.

  2. Wählen Sie den Link 1 Succeeded (1 erfolgreich) aus.

  3. Wählen Sie die Bereitstellung mit dem Namen "Haupt" und dann "Bereitstellungsdetails " aus, um die Liste der bereitgestellten Ressourcen zu erweitern.

    Screenshot der Azure-Portalschnittstelle für die spezifische Bereitstellung mit Speicherkonto- und App Service-Ressourcen, die mit generierten Namen aufgelistet sind.

  4. Beachten Sie, dass eine neue App Service-App und ein Speicherkonto mit zufällig generierten Namen bereitgestellt wurden.