Nasazení skupin prostředků se soubory Bicep

Tento článek popisuje, jak nastavit obor pomocí Bicep při nasazování do skupiny prostředků.

Podporované prostředky

Většinu prostředků je možné nasadit do skupiny prostředků. Seznam dostupných prostředků najdete v referenčních informacích k šabloně ARM.

Nastavení oboru

Ve výchozím nastavení je soubor Bicep vymezený na skupinu prostředků. Pokud chcete obor explicitně nastavit, použijte:

targetScope = 'resourceGroup'

Nastavení cílového oboru na skupinu prostředků je ale zbytečné, protože tento obor se používá ve výchozím nastavení.

Příkazy nasazení

K nasazení do skupiny prostředků použijte příkazy nasazení skupiny prostředků.

V případě Azure CLI použijte příkaz az deployment group create. Následující příklad nasadí šablonu pro vytvoření skupiny prostředků:

az deployment group create \
  --name demoRGDeployment \
  --resource-group ExampleGroup \
  --template-file main.bicep \
  --parameters storageAccountType=Standard_GRS

Podrobnější informace o příkazech a možnostech nasazení šablon ARM najdete v těchto tématu:

Obory nasazení

Při nasazování do skupiny prostředků můžete nasadit prostředky do:

  • Cílová skupina prostředků pro operaci nasazení
  • jiné skupiny prostředků ve stejném předplatném nebo jiných předplatných
  • jakékoli předplatné v tenantovi
  • tenant pro skupinu prostředků

Prostředek rozšíření může být vymezený na cíl, který se liší od cíle nasazení.

Uživatel, který šablonu nasazovat, musí mít přístup k zadanému oboru.

Tato část ukazuje, jak zadat různé obory. Tyto různé obory můžete kombinovat do jedné šablony.

Obor pro cílovou skupinu prostředků

Pokud chcete nasadit prostředky do cílové skupiny prostředků, přidejte je do souboru Bicep.

// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  ...
}

Příklad šablony najdete v tématu Nasazení do cílové skupiny prostředků.

Rozsah na jinou skupinu prostředků

Pokud chcete nasadit prostředky do skupiny prostředků, která není cílovou skupinou prostředků, přidejte modul. Pomocí funkce resourceGroup nastavte scope vlastnost pro tento modul.

Pokud se skupina prostředků nachází v jiném předplatném, zadejte ID předplatného a název skupiny prostředků. Pokud je skupina prostředků ve stejném předplatném jako aktuální nasazení, zadejte pouze název skupiny prostředků. Pokud nezadáte předplatné ve funkci resourceGroup, použije se aktuální předplatné.

Následující příklad ukazuje modul, který cílí na skupinu prostředků v jiném předplatném.

param otherResourceGroup string
param otherSubscriptionID string

// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
  name: 'otherSubAndRG'
  scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}

Následující příklad ukazuje modul, který cílí na skupinu prostředků ve stejném předplatném.

param otherResourceGroup string

// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
  name: 'otherRG'
  scope: resourceGroup(otherResourceGroup)
}

Příklad šablony najdete v tématu Nasazení do více skupin prostředků.

Rozsah na předplatné

Pokud chcete nasadit prostředky do předplatného, přidejte modul. K nastavení vlastnosti použijte funkci scope subscription.

Pokud chcete nasadit do aktuálního předplatného, použijte funkci subscription bez parametru.


// module deployed at subscription level
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription()
}

Pokud chcete nasadit do jiného předplatného, zadejte toto ID předplatného jako parametr ve funkci předplatného.

param otherSubscriptionID string

// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(otherSubscriptionID)
}

Příklad šablony najdete v tématu Vytvoření skupiny prostředků.

Rozsah na tenanta

Pokud chcete vytvořit prostředky v tenantovi, přidejte modul. K nastavení vlastnosti použijte funkci scope tenanta.

Uživatel, který šablonu nasazovat, musí mít požadovaný přístup k nasazení v tenantovi.

Následující příklad obsahuje modul, který je nasazený do tenanta.

// module deployed at tenant level
module exampleModule 'module.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

Místo použití modulu můžete nastavit rozsah na pro tenant() některé typy prostředků. Následující příklad nasadí skupinu pro správu v tenantovi.

param mgName string = 'mg-${uniqueString(newGuid())}'

// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
  scope: tenant()
  name: mgName
  properties: {}
}

output output string = mgName

Další informace najdete v tématu Skupina pro správu.

Nasazení do cílové skupiny prostředků

Pokud chcete nasadit prostředky v cílové skupině prostředků, definujte je v resources části šablony. Následující šablona vytvoří účet úložiště ve skupině prostředků, který je zadaný v operaci nasazení.

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Nasazení do několika skupin prostředků

Nasazení můžete do více skupin prostředků v jednom souboru Bicep.

Poznámka

V jednom nasazení můžete nasadit do 800 skupin prostředků. Toto omezení obvykle znamená, že můžete nasadit do jedné skupiny prostředků zadané pro nadřazenou šablonu a až 799 skupin prostředků ve vnořených nebo propojených nasazeních. Pokud však nadřazená šablona obsahuje pouze vnořené nebo propojené šablony a sama o sobě nenasazovat žádné prostředky, můžete do vnořených nebo propojených nasazení zahrnout až 800 skupin prostředků.

Následující příklad nasadí dva účty úložiště. První účet úložiště se nasadí do skupiny prostředků zadané v operaci nasazení. Druhý účet úložiště se nasadí do skupiny prostředků zadané v secondResourceGroup parametrech secondSubscriptionID a :

@maxLength(11)
param storagePrefix string

param firstStorageLocation string = resourceGroup().location

param secondResourceGroup string
param secondSubscriptionID string = ''
param secondStorageLocation string

var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var secondStorageName = '${storagePrefix}${uniqueString(secondSubscriptionID, secondResourceGroup)}'

module firstStorageAcct 'storage.bicep' = {
  name: 'storageModule1'
  params: {
    storageLocation: firstStorageLocation
    storageName: firstStorageName
  }
}

module secondStorageAcct 'storage.bicep' = {
  name: 'storageModule2'
  scope: resourceGroup(secondSubscriptionID, secondResourceGroup)
  params: {
    storageLocation: secondStorageLocation
    storageName: secondStorageName
  }
}

Oba moduly používají stejný soubor Bicep s názvem storage.bicep.

param storageLocation string
param storageName string

resource storageAcct 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageName
  location: storageLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {}
}

Vytvoření skupiny prostředků

Z nasazení skupiny prostředků můžete přepnout na úroveň předplatného a vytvořit skupinu prostředků. Následující šablona nasadí účet úložiště do cílové skupiny prostředků a v zadaném předplatném vytvoří novou skupinu prostředků.

@maxLength(11)
param storagePrefix string

param firstStorageLocation string = resourceGroup().location

param secondResourceGroup string
param secondSubscriptionID string = ''
param secondLocation string

var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

// resource deployed to target resource group
module firstStorageAcct 'storage2.bicep' = {
  name: 'storageModule1'
  params: {
    storageLocation: firstStorageLocation
    storageName: firstStorageName
  }
}

// module deployed to subscription
module newRG 'resourceGroup.bicep' = {
  name: 'newResourceGroup'
  scope: subscription(secondSubscriptionID)
  params: {
    resourceGroupName: secondResourceGroup
    resourceGroupLocation: secondLocation
  }
}

Předchozí příklad používá následující soubor Bicep pro modul, který vytvoří novou skupinu prostředků.

targetScope='subscription'

param resourceGroupName string
param resourceGroupLocation string

resource newRG 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: resourceGroupName
  location: resourceGroupLocation
}

Další kroky

Další informace o jiných oborech najdete v těchto tématu: