Grundlegendes zu Bicep-Dateistruktur und -Syntax
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.