Inzicht in bicep-bestandsstructuur en -syntaxis

Voltooid

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, resourceGroupmaar u kunt het aanpassen door deze expliciet in te stellen. Als andere toegestane waarden, subscription, en tenantmanagementGroup.

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, nameen properties. Er zijn resourcespecifieke eigenschappen die kunnen worden gebruikt om de prijscategorie voor resources aan te passen, SKUenzovoort.

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.