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.

Deklaracji

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ływanie się do zasobu w innych częściach pliku Bicep.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Dlatego deklaracja konta magazynu może zaczynać się od:

resource stg 'Microsoft.Storage/storageAccounts@2021-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 uzyskać informacje o dostępnych typach zasobów i wersji, zobacz Bicep resource reference (Dokumentacja zasobów Bicep). Bicep nie obsługuje apiProfileformatu JSON dostępnego w formacie JSON szablonów usługi Azure Resource Manager (szablony usługi ARM). Można również zdefiniować zasoby dostawcy rozszerzalności Bicep. Aby uzyskać więcej informacji, zobacz Dostawca kubernetes rozszerzalności 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 . Dekorator umożliwia batchSize określenie, 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>
}]

Do utworzenia tablicy można również użyć for składni właściwości zasobu.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

Nazwa zasobu

Każdy zasób ma nazwę. Podczas ustawiania nazwy zasobu należy zwrócić uwagę na reguły i ograniczenia dotyczące nazw zasobów.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-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@2019-06-01' = {
  name: storageAccountName
  ...
}

Lokalizacja

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, który jest używany dla konta magazynu.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-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@2019-06-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 Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

Tagi

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 platformy Azure

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 Azure Kubernetes Service.

resource aks 'Microsoft.ContainerService/managedClusters@2020-09-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@2020-06-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Właściwości specyficzne dla zasobów

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@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Następne kroki