Grundlegendes zu Bicep-Dateistruktur und -Syntax

Abgeschlossen

Azure Bicep bietet eine eigene Syntax, die jedoch leicht zu verstehen und zu befolgen ist. Wir werden nicht näher auf die Syntax und die Struktur eingehen, aber wir werden die wichtigsten Konzepte anhand eines Beispiels erläutern.

Beispiel Bicep .bicep-Datei

@minLength(3)
@maxLength(11)
param storagePrefix string

param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
    name: uniqueStorageName
    location: location
    sku: {
        name: storageSKU
    }
    kind: 'StorageV2'
    properties: {
        supportsHttpsTrafficOnly: true
    }

    resource service 'fileServices' = {
        name: 'default'

        resource share 'shares' = {
            name: 'exampleshare'
        }
    }
}

module webModule './webApp.bicep' = {
    name: 'webDeploy'
    params: {
        skuName: 'S1'
        location: location
    }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Bereich

Standardmäßig ist der Zielbereich aller Vorlagen auf resourceGroup eingestellt. Sie können ihn jedoch anpassen, indem Sie ihn explizit festlegen. Als weitere zulässige Werte subscription, managementGroup und tenant.

Parameter

Sie haben die Parameter bereits in der vorherigen Lerneinheit verwendet. Sie ermöglichen es Ihnen, Ihre Vorlagenbereitstellung zur Laufzeit anzupassen, da Sie mögliche Werte für Namen, Speicherort, Präfixe usw. angeben können.

Parameter haben auch Typen, die von den Editoren validiert werden können, und können auch Standardwerte haben, um sie bei der Bereitstellung optional zu machen. Zusätzlich können Sie sehen, dass sie Validierungsregeln haben können, um die Bereitstellung zuverlässiger zu machen, indem sie jeden ungültigen Wert direkt bei der Erstellung verhindern. Weitere Informationen finden Sie unter Parameter in Bicep.

Variablen

Ähnlich wie Parameter spielen auch Variablen eine Rolle bei der Erstellung einer robusten und lesbaren Vorlage. Jeder komplexe Ausdruck lässt sich in einer Variablen speichern und in der gesamten Vorlage verwenden. Wenn Sie eine Variable definieren, wird der Typ aus dem Wert abgeleitet.

Im obigen Beispiel wird das uniqueStorageName zur Vereinfachung der Ressourcendefinition verwendet. Weitere Informationen finden Sie unter Variablen in Bicep.

Ressourcen

Das Schlüsselwort resource wird verwendet, wenn Sie eine Ressource in Ihren Vorlagen deklarieren müssen. Die Ressourcendeklaration verfügt über einen symbolischen Namen für die Ressource, der verwendet werden kann, um später auf diese Ressource zu verweisen, entweder um eine Subressource zu definieren oder um ihre Eigenschaften für eine implizite Abhängigkeit wie eine Beziehung zwischen über- und untergeordneten Elementen zu verwenden.

Es gibt bestimmte Eigenschaften, die für alle Ressourcen gleich sind, wie location, name und properties. Es gibt Ressourcen-spezifische Eigenschaften, mit denen Sie den Tarif der Ressource, SKU usw. anpassen können.

Sie können Unterressourcen innerhalb einer Ressource oder außerhalb definieren, indem Sie auf die übergeordnete Ressource verweisen. Im obigen Beispiel wird eine Dateifreigabe innerhalb der Speicherkontoressource definiert. Wenn die Absicht besteht, die Ressource außerhalb davon zu definieren, müssen Sie Ihre Vorlage ändern:

resource storage 'Microsoft.Storage/storageAccounts@2021-02-01' = {
    name: 'examplestorage'
    location: resourceGroup().location
    kind: 'StorageV2'
    sku: {
        name: 'Standard_LRS'
    }
}

resource service 'Microsoft.Storage/storageAccounts/fileServices@2021-02-01' = {
    name: 'default'
    parent: storage
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2021-02-01' = {
    name: 'exampleshare'
    parent: service
}

Weitere Informationen finden Sie unter Ressourcendeklaration in Bicep.

Module

Wenn Sie wirklich wiederverwendbare Vorlagen wünschen, können Sie die Verwendung eines Moduls nicht vermeiden. Mit Modulen können Sie eine Bicep-Datei in anderen Bicep-Dateien wiederverwenden. In einem Modul definieren Sie, was Sie bereitstellen müssen und welche Parameter Sie benötigen. Wenn Sie es in einer anderen Datei wiederverwenden, müssen Sie nur auf die Datei verweisen und die Parameter angeben. Den Rest erledigt Azure Bicep.

In dem obigen Beispiel verwenden Sie ein Modul, das vermutlich ein App Service bereitstellt. Weitere Informationen finden Sie unter Module in Bicep verwenden.

Ausgaben

Sie können Ausgaben verwenden, um Werte von Ihrer Bereitstellung an die Außenwelt zu übergeben, unabhängig davon, ob sie sich in einer CI/CD-Pipeline oder in einem lokalen Terminal oder Cloud Shell befindet. Dadurch können Sie auf einen Wert wie einen Speicherendpunkt oder eine Anwendungs-URL zugreifen, nachdem die Bereitstellung abgeschlossen ist.

Alles, was Sie brauchen, ist das Schlüsselwort output und die Eigenschaft, auf die Sie zugreifen möchten:

output storageEndpoint endpoints = stg.properties.primaryEndpoints

Weitere Informationen finden Sie unter Ausgaben in Bicep.

Andere Funktionen

In einer Bicep-Datei sind viele weitere Funktionen verfügbar, z. B. Schleifen, bedingte Bereitstellung, mehrzeilige Zeichenfolgen, Verweis auf eine vorhandene Cloudressource und vieles mehr. Tatsächlich ist jede gültige Funktion in einer ARM-Vorlage auch in einer Bicep-Datei gültig.

Nächste Schritte

In der nächsten Einheit erfahren Sie, wie Sie Bicep in einer Azure-Pipeline verwenden.