Inzicht in bicep-bestandsstructuur en -syntaxis
Azure Bicep wordt geleverd met een eigen syntaxis, maar het is eenvoudig te begrijpen en te volgen. We gaan niet dieper in op de syntaxis en structuur, maar laten we de belangrijkste concepten bekijken met behulp van een voorbeeld.
Voorbeeld van Bicep-bestand .bicep
@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
Bereik
Standaard is het doelbereik van alle sjablonen ingesteld, resourceGroup
maar u kunt het aanpassen door deze expliciet in te stellen. Als andere toegestane waarden, subscription
, en tenant
managementGroup
.
Parameters
U hebt de parameters in de vorige les al gebruikt. Hiermee kunt u uw sjabloonimplementatie tijdens runtime aanpassen door potentiële waarden op te geven voor namen, locatie, voorvoegsels, enzovoort.
Parameters hebben ook typen die editors kunnen valideren en kunnen ook standaardwaarden hebben om ze optioneel te maken tijdens de implementatie. Daarnaast kunt u zien dat ze validatieregels kunnen hebben om de implementatie betrouwbaarder te maken door te voorkomen dat een ongeldige waarde rechtstreeks van de creatie afkomstig is. Zie Parameters in Bicep voor meer informatie.
Variabelen
Net als bij parameters spelen variabelen een rol bij het maken van een robuustere en leesbare sjabloon. Elke complexe expressie kan worden opgeslagen in een variabele en in de sjabloon worden gebruikt. Wanneer u een variabele definieert, wordt het type afgeleid van de waarde.
In het bovenstaande voorbeeld wordt het uniqueStorageName
gebruikt om de resourcedefinitie te vereenvoudigen. Zie Variabelen in Bicep voor meer informatie.
Resources
Het resource
trefwoord wordt gebruikt wanneer u een resource in uw sjablonen moet declareren. De resourcedeclaratie heeft een symbolische naam voor de resource die later kan worden gebruikt om naar die resource te verwijzen voor het definiëren van een subresource of het gebruik van de eigenschappen voor een impliciete afhankelijkheid, zoals een bovenliggende/onderliggende relatie.
Er zijn bepaalde eigenschappen die gebruikelijk zijn voor alle resources, zoals location
, name
en properties
. Er zijn resourcespecifieke eigenschappen die kunnen worden gebruikt om de prijscategorie voor resources aan te passen, SKU
enzovoort.
U kunt subresources binnen een resource of buiten definiëren door te verwijzen naar het bovenliggende item. In het bovenstaande voorbeeld wordt een bestandsshare gedefinieerd in de opslagaccountresource. Als de bedoeling was om de resource buiten de resource te definiëren, moet u de sjabloon wijzigen:
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
}
Zie Resourcedeclaratie in Bicep voor meer informatie.
Modules
Als u echt herbruikbare sjablonen wilt, kunt u het gebruik van een module niet vermijden. Met modules kunt u een Bicep-bestand opnieuw gebruiken in andere Bicep-bestanden. In een module definieert u wat u moet implementeren en eventuele parameters die nodig zijn en wanneer u deze opnieuw gebruikt in een ander bestand, hoeft u alleen maar naar het bestand te verwijzen en de parameters op te geven. De rest wordt verzorgd door Azure Bicep.
In het bovenstaande voorbeeld gebruikt u een module die waarschijnlijk een App Service
. Zie Modules gebruiken in Bicep voor meer informatie.
Uitvoerwaarden
U kunt uitvoer gebruiken om waarden van uw implementatie door te geven aan de buitenwereld, ongeacht of deze zich in een CI/CD-pijplijn of in een lokale terminal of Cloud Shell bevindt. Hierdoor hebt u toegang tot een waarde, zoals opslageindpunt of toepassings-URL nadat de implementatie is voltooid.
U hebt alleen het output
trefwoord nodig en de eigenschap die u wilt openen:
output storageEndpoint endpoints = stg.properties.primaryEndpoints
Zie Outputs in Bicep voor meer informatie.
Andere functies
Er zijn veel andere functies beschikbaar in een Bicep-bestand, zoals lussen, voorwaardelijke implementatie, tekenreeksen met meerdere regels, waarnaar wordt verwezen naar een bestaande cloudresource en nog veel meer. In feite is elke geldige functie binnen een ARM-sjabloon ook geldig in een Bicep-bestand.
Volgende stappen
In de volgende les leert u hoe u Bicep gebruikt in een Azure Pipeline.