Omówienie struktury i składni plików Bicep

Ukończone

Platforma Azure Bicep zawiera własną składnię, jednak łatwo jest je zrozumieć i śledzić. Nie będziemy zagłębiać się w składnię i strukturę, ale zapoznajmy się z głównymi pojęciami, korzystając z przykładu.

Przykładowy plik Bicep .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

Scope

Domyślnie zakres docelowy wszystkich szablonów jest ustawiony dla resourceGroupparametru , jednak można go dostosować, ustawiając go jawnie. Jako inne dozwolone wartości, subscription, managementGroupi tenant.

Parametry

W poprzedniej lekcji użyto już parametrów. Umożliwiają one dostosowanie wdrożenia szablonu w czasie wykonywania przez udostępnienie potencjalnych wartości nazw, lokalizacji, prefiksów itp.

Parametry mają również typy, które edytory mogą weryfikować, a także mogą mieć wartości domyślne, aby były opcjonalne w czasie wdrażania. Ponadto można zobaczyć, że mogą one mieć reguły walidacji, aby wdrożenie było bardziej niezawodne, zapobiegając wszelkim nieprawidłowym wartościom bezpośrednio z tworzenia. Aby uzyskać więcej informacji, zobacz Parametry w Bicep.

Zmienne

Podobnie jak w przypadku parametrów zmienne odgrywają rolę w tworzeniu bardziej niezawodnego i czytelnego szablonu. Dowolne wyrażenie złożone może być przechowywane w zmiennej i używane w całym szablonie. Podczas definiowania zmiennej typ jest wnioskowany z wartości.

W powyższym przykładzie uniqueStorageName parametr jest używany do uproszczenia definicji zasobu. Aby uzyskać więcej informacji, zobacz Zmienne w Bicep.

Zasoby

Słowo resource kluczowe jest używane, gdy musisz zadeklarować zasób w szablonach. Deklaracja zasobu ma symboliczną nazwę zasobu, która może służyć do odwołowania się do tego zasobu później do definiowania podźródła lub używania jej właściwości dla niejawnej zależności, takiej jak relacja nadrzędny-podrzędny.

Istnieją pewne właściwości, które są wspólne dla wszystkich zasobów, takich jak location, namei properties. Istnieją właściwości specyficzne dla zasobów, które mogą służyć do dostosowywania warstwy cenowej zasobów, SKUitd.

Podźródła można zdefiniować w ramach zasobu lub na zewnątrz, odwołując się do elementu nadrzędnego. W powyższym przykładzie udział plików jest definiowany w ramach zasobu konta magazynu. Jeśli intencją było zdefiniowanie zasobu poza nim, należy zmienić szablon:

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
}

Aby uzyskać więcej informacji, zobacz Deklarację zasobu w Bicep.

Moduły

Jeśli chcesz naprawdę używać szablonów wielokrotnego użytku, nie możesz uniknąć korzystania z modułu. Moduły umożliwiają ponowne użycie pliku Bicep w innych plikach Bicep. W module zdefiniujesz, co należy wdrożyć, oraz wszystkie wymagane parametry, a gdy ponownie użyjesz go w innym pliku, wystarczy odwołać się do pliku i podać parametry. Reszta jest zajęta przez platformę Azure Bicep.

W powyższym przykładzie używasz modułu, który prawdopodobnie wdraża element App Service. Aby uzyskać więcej informacji, zobacz Using Modules in Bicep (Używanie modułów w środowisku Bicep).

Dane wyjściowe

Dane wyjściowe umożliwiają przekazywanie wartości z wdrożenia do świata zewnętrznego niezależnie od tego, czy znajduje się on w potoku ciągłej integracji/ciągłego wdrażania, czy w lokalnym terminalu, czy w usłudze Cloud Shell. Umożliwiłoby to dostęp do wartości, takiej jak punkt końcowy magazynu lub adres URL aplikacji po zakończeniu wdrażania.

Wszystko, czego potrzebujesz, output to słowo kluczowe i właściwość, do której chcesz uzyskać dostęp:

output storageEndpoint endpoints = stg.properties.primaryEndpoints

Aby uzyskać więcej informacji, zobacz Dane wyjściowe w Bicep.

Inne funkcje

Istnieje wiele innych funkcji dostępnych w pliku Bicep, takich jak pętle, wdrażanie warunkowe, ciągi wielowierszowe, odwoływanie się do istniejącego zasobu w chmurze i wiele innych. W rzeczywistości każda prawidłowa funkcja w szablonie usługi ARM jest również prawidłowa w pliku Bicep.

Następne kroki

W następnej lekcji dowiesz się, jak używać aplikacji Bicep w usłudze Azure Pipeline.