Deklaracja zasobu w Bicep
W tym artykule opisano składnię używaną do dodawania zasobu do pliku Bicep. W pliku Bicep jest ograniczonych do 800 zasobów. Aby uzyskać więcej informacji, zobacz Limity szablonów.
Definiowanie zasobów
Dodaj deklarację zasobu przy użyciu słowa kluczowego resource
. Należy ustawić symboliczną nazwę zasobu. Nazwa symboliczna nie jest taka sama jak nazwa zasobu. Nazwa symboliczna służy do odwołowania się do zasobu w innych częściach pliku Bicep.
@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Dlatego deklaracja konta magazynu może zaczynać się od:
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
W nazwach symbolicznych jest rozróżniana wielkość liter. Mogą zawierać litery, cyfry i podkreślenia (_
). Nie mogą zaczynać się od liczby. Zasób nie może mieć takiej samej nazwy jak parametr, zmienna lub moduł.
Aby zapoznać się z dostępnymi typami zasobów i wersją, zobacz Bicep resource reference (Dokumentacja zasobów Bicep). Bicep nie obsługuje apiProfile
formatu , który jest dostępny w formacie JSON szablonów usługi Azure Resource Manager (szablonów usługi ARM). Można również zdefiniować zasoby dostawcy rozszerzalności Bicep. Aby uzyskać więcej informacji, zobacz Dostawca rozszerzenia kubernetes Bicep.
Aby warunkowo wdrożyć zasób, użyj if
składni . Aby uzyskać więcej informacji, zobacz Wdrażanie warunkowe w aplikacji Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Aby wdrożyć więcej niż jedno wystąpienie zasobu, użyj for
składni . Można użyć dekoratora batchSize
, aby określić, czy wystąpienia są wdrażane szeregowo, czy równolegle. Aby uzyskać więcej informacji, zobacz Iteracyjne pętle w Bicep.
@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
<properties-to-repeat>
}]
Możesz również użyć for
składni właściwości zasobu, aby utworzyć tablicę.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
properties: {
<array-property>: [for <item> in <collection>: <value-to-repeat>]
}
}
Korzystanie z dekoratorów
Dekoratory są zapisywane w formacie @expression
i są umieszczane powyżej deklaracji zasobów. W poniższej tabeli przedstawiono dostępne dekoratory dla zasobów.
Dekorator | Argument | opis |
---|---|---|
batchSize | Brak | Konfigurowanie wystąpień w celu sekwencyjnego wdrażania. |
opis | string | Podaj opisy zasobu. |
Dekoratory znajdują się w przestrzeni nazw systemu. Jeśli musisz odróżnić dekorator od innego elementu o tej samej nazwie, należy poprzeć dekorator za pomocą polecenia sys
. Jeśli na przykład plik Bicep zawiera parametr o nazwie description
, należy dodać przestrzeń nazw systemu podczas korzystania z dekoratora opisu .
BatchSize
Można stosować @batchSize()
tylko do definicji zasobu lub modułu for
, która używa wyrażenia.
Domyślnie zasoby są wdrażane równolegle. Po dodaniu dekoratora batchSize(int)
wystąpienia są wdrażane szeregowo.
@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
...
}]
Aby uzyskać więcej informacji, zobacz Wdrażanie w partiach.
opis
Aby dodać wyjaśnienie, dodaj opis do deklaracji zasobów. Na przykład:
@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
...
}]
Tekst w formacie markdown może służyć do tekstu opisu.
Nazwa zasobu
Każdy zasób ma nazwę. Podczas ustawiania nazwy zasobu należy zwrócić uwagę na reguły i ograniczenia nazw zasobów.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
...
}
Zazwyczaj należy ustawić nazwę na parametr, aby można było przekazać różne wartości podczas wdrażania.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
...
}
Lokalizacja zasobu
Wiele zasobów wymaga lokalizacji. Możesz określić, czy zasób potrzebuje lokalizacji za pomocą funkcji IntelliSense lub odwołania do szablonu. W poniższym przykładzie dodano parametr lokalizacji używany dla konta magazynu.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Zazwyczaj należy ustawić lokalizację na parametr, aby można było wdrożyć je w różnych lokalizacjach.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: location
...
}
Różne typy zasobów są obsługiwane w różnych lokalizacjach. Aby uzyskać obsługiwane lokalizacje dla usługi platformy Azure, zobacz Dostępność produktów według regionów. Aby uzyskać obsługiwane lokalizacje dla typu zasobu, użyj programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Tagi zasobów
Tagi można stosować do zasobu podczas wdrażania. Tagi ułatwiają logiczne organizowanie wdrożonych zasobów. Przykłady różnych sposobów określania tagów można znaleźć w temacie Tagi szablonów usługi ARM.
Tożsamości zarządzane dla zasobów
Niektóre zasoby obsługują tożsamości zarządzane dla zasobów platformy Azure. Te zasoby mają obiekt tożsamości na poziomie głównym deklaracji zasobu.
Można użyć tożsamości przypisanych przez system lub przypisanych przez użytkownika.
W poniższym przykładzie pokazano, jak skonfigurować tożsamość przypisaną przez system dla klastra usługi Azure Kubernetes Service.
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
W następnym przykładzie pokazano, jak skonfigurować tożsamość przypisaną przez użytkownika dla maszyny wirtualnej.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Właściwości specyficzne dla zasobu
Powyższe właściwości są ogólne dla większości typów zasobów. Po ustawieniu tych wartości należy ustawić właściwości specyficzne dla wdrażanych typów zasobów.
Użyj odwołania do zasobów intellisense lub Bicep, aby określić, które właściwości są dostępne i które są wymagane. W poniższym przykładzie ustawiono pozostałe właściwości dla konta magazynu.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Następne kroki
- Aby warunkowo wdrożyć zasób, zobacz Wdrażanie warunkowe w aplikacji Bicep.
- Aby odwołać się do istniejącego zasobu, zobacz Istniejące zasoby w aplikacji Bicep.
- Aby dowiedzieć się więcej o określaniu kolejności wdrażania, zobacz Zależności zasobów w aplikacji Bicep.