Omówienie struktury i składni plików Bicep
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 resourceGroup
parametru , jednak można go dostosować, ustawiając go jawnie. Jako inne dozwolone wartości, subscription
, managementGroup
i 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
, name
i properties
. Istnieją właściwości specyficzne dla zasobów, które mogą służyć do dostosowywania warstwy cenowej zasobów, SKU
itd.
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.