Definiowanie zasobów
Szablony Bicep to pliki, które tworzysz, definiujące zasoby platformy Azure do wdrożenia.
Twoja firma z toy wymaga utworzenia szablonu Bicep wielokrotnego użytku na potrzeby uruchamiania produktu. Szablon musi wdrożyć konto usługi Azure Storage i zasoby usługi aplikacja systemu Azure, które będą używane do marketingu każdego nowego produktu podczas jego uruchamiania.
W tej lekcji dowiesz się, jak zdefiniować zasób w szablonie Bicep, jak działają nazwy zasobów i jak można tworzyć zasoby powiązane ze sobą.
Uwaga
Polecenia w tej lekcji są wyświetlane w celu zilustrowania pojęć. Nie uruchamiaj jeszcze poleceń. Będziesz ćwiczyć to, czego nauczysz się tutaj wkrótce.
Definiowanie zasobu
Główną rzeczą, którą wykonasz w przypadku szablonów Bicep, jest zdefiniowanie zasobów platformy Azure. Oto przykład typowej definicji zasobu w aplikacji Bicep. W tym przykładzie zostanie utworzone konto magazynu o nazwie toylaunchstorage
.
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'toylaunchstorage'
location: 'westus3'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Przyjrzyjmy się bliżej niektórym kluczowym elementom tej definicji zasobu:
Słowo
resource
kluczowe na początku informuje Bicep, że chcesz zdefiniować zasób.Następnie nadasz zasobowi nazwę symboliczną. W tym przykładzie nazwa symboliczna zasobu to
storageAccount
. Nazwy symboliczne są używane w aplikacji Bicep do odwoływania się do zasobu, ale nigdy nie będą wyświetlane na platformie Azure.Microsoft.Storage/storageAccounts@2022-09-01
to typ zasobu i wersja interfejsu API zasobu.Microsoft.Storage/storageAccounts
informuje Bicep, że deklarujesz konto usługi Azure Storage.2022-09-01
Data to wersja interfejsu API usługi Azure Storage używana przez Bicep podczas tworzenia zasobu.Napiwek
Rozszerzenie Bicep dla programu Visual Studio Code ułatwia znajdowanie typów zasobów i wersji interfejsu API dla tworzonych zasobów. Jeśli znasz szablony usługi ARM, pamiętaj, że wersja interfejsu API jest zgodna z wersją, której również używasz.
Musisz zadeklarować nazwę zasobu, czyli nazwę, którą konto magazynu zostanie przypisane na platformie Azure. Nazwa zasobu zostanie ustawiona przy użyciu słowa kluczowego
name
.Ważne
Nazwy symboliczne są używane tylko w szablonie Bicep i nie są wyświetlane na platformie Azure. Nazwy zasobów są wyświetlane na platformie Azure.
Następnie ustawisz inne szczegóły zasobu, takie jak jego lokalizacja, jednostka SKU (warstwa cenowa) i rodzaj. Istnieją również właściwości, które można zdefiniować, które są różne dla każdego typu zasobu. Różne wersje interfejsu API mogą również wprowadzać różne właściwości. W tym przykładzie ustawiamy warstwę dostępu konta magazynu na
Hot
.
Napiwek
Nazwy zasobów często mają reguły, które należy przestrzegać, takie jak maksymalna długość, dozwolone znaki i unikatowość na całej platformie Azure. Wymagania dotyczące nazw zasobów są różne dla każdego typu zasobu platformy Azure. Przed dodaniem ich do szablonu należy zapoznać się z ograniczeniami i wymaganiami dotyczącymi nazewnictwa.
Co się stanie, gdy zasoby zależą od siebie nawzajem?
Szablon Bicep zwykle zawiera kilka zasobów. Często potrzebny jest zasób zależny od innego zasobu. Może być konieczne wyodrębnienie niektórych informacji z jednego zasobu, aby móc zdefiniować inne. Jeśli wdrażasz aplikację internetową, musisz utworzyć infrastrukturę serwera, zanim będzie można dodać do niej aplikację. Te relacje są nazywane zależnościami.
Musisz wdrożyć aplikację usługi App Service dla szablonu, który pomoże uruchomić produkt toy, ale aby utworzyć aplikację usługi App Service, musisz najpierw utworzyć plan usługi App Service. Plan usługi App Service reprezentuje zasoby hostingu serwera i jest zadeklarowany w następujący przykład:
resource appServicePlan 'Microsoft.Web/serverFarms@2023-12-01' = {
name: 'toy-product-launch-plan'
location: 'westus3'
sku: {
name: 'F1'
}
}
Ta definicja zasobu informuje Bicep, że chcesz wdrożyć plan usługi App Service, który ma typ Microsoft.Web/serverFarms
zasobu . Zasób planu ma nazwę toy-product-launch-plan
i jest wdrażany w regionie Zachodnie stany USA 3. Korzysta z jednostki SKU cenowej F1, która jest warstwą bezpłatną usługi App Service.
Po zadeklarowaniu planu usługi App Service następnym krokiem jest zadeklarowanie aplikacji:
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: 'toy-product-launch-1'
location: 'westus3'
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Ten szablon instruuje platformę Azure, aby hostował aplikację w utworzonym planie. Zwróć uwagę, że definicja planu zawiera symboliczną nazwę planu usługi App Service w tym wierszu: serverFarmId: appServicePlan.id
. Ten wiersz oznacza, że Bicep pobierze identyfikator zasobu planu usługi App Service przy użyciu id
właściwości . To powiedzenie: identyfikator farmy serwerów tej aplikacji jest identyfikatorem zdefiniowanego wcześniej planu usługi App Service.
Napiwek
Na platformie Azure identyfikator zasobu jest unikatowym identyfikatorem dla każdego zasobu. Identyfikator zasobu zawiera identyfikator subskrypcji platformy Azure, nazwę grupy zasobów i nazwę zasobu wraz z innymi informacjami.
Deklarując zasób aplikacji z właściwością odwołującą się do symbolicznej nazwy planu, platforma Azure rozumie niejawną zależność między aplikacją usługi App Service a planem. Po wdrożeniu zasobów platforma Azure gwarantuje, że w pełni wdroży plan przed rozpoczęciem wdrażania aplikacji.