Wdrożenia grup zasobów z plikami Bicep
W tym artykule opisano sposób ustawiania zakresu za pomocą Bicep podczas wdrażania w grupie zasobów.
Obsługiwane zasoby
Większość zasobów można wdrożyć w grupie zasobów. Aby uzyskać listę dostępnych zasobów, zobacz Dokumentacja szablonu usługi ARM.
Ustawianie zakresu
Domyślnie plik Bicep jest w zakresie grupy zasobów. Jeśli chcesz jawnie ustawić zakres, użyj:
targetScope = 'resourceGroup'
Jednak ustawienie zakresu docelowego na grupę zasobów jest niepotrzebne, ponieważ ten zakres jest używany domyślnie.
Polecenia wdrażania
Aby wdrożyć w grupie zasobów, użyj poleceń wdrażania grupy zasobów.
W przypadku interfejsu wiersza polecenia platformy Azure użyj polecenia az deployment group create. Poniższy przykład umożliwia wdrożenie szablonu w celu utworzenia grupy zasobów. Grupa zasobów określona w parametrze --resource-group
jest docelową grupą zasobów.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Aby uzyskać bardziej szczegółowe informacje o poleceniach wdrażania i opcjach wdrażania szablonów usługi ARM, zobacz:
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu wiersza polecenia platformy Azure
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i programu Azure PowerShell
- Wdrażanie szablonów usługi ARM z poziomu usługi Cloud Shell
Zakresy wdrażania
Podczas wdrażania w grupie zasobów można wdrożyć zasoby w:
- docelowa grupa zasobów dla operacji wdrażania
- inne grupy zasobów w tej samej subskrypcji lub innych subskrypcjach
- dowolna subskrypcja w dzierżawie
- dzierżawa dla grupy zasobów
Zasób rozszerzenia może być o określonym zakresie dla miejsca docelowego, który różni się od docelowego wdrożenia.
Użytkownik wdrażający szablon musi mieć dostęp do określonego zakresu.
W tej sekcji przedstawiono sposób określania różnych zakresów. Te różne zakresy można połączyć w jednym szablonie.
Zakres do docelowej grupy zasobów
Aby wdrożyć zasoby w docelowej grupie zasobów, dodaj te zasoby do pliku Bicep.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Przykładowy szablon można znaleźć w temacie Deploy to target resource group (Wdrażanie w docelowej grupie zasobów).
Zakres do innej grupy zasobów
Aby wdrożyć zasoby w grupie zasobów, która nie jest docelową grupą zasobów, dodaj moduł. Użyj funkcji resourceGroup, aby ustawić właściwość dla tego modułuscope
.
Jeśli grupa zasobów znajduje się w innej subskrypcji, podaj identyfikator subskrypcji i nazwę grupy zasobów. Jeśli grupa zasobów znajduje się w tej samej subskrypcji co bieżące wdrożenie, podaj tylko nazwę grupy zasobów. Jeśli nie określisz subskrypcji w funkcji resourceGroup, zostanie użyta bieżąca subskrypcja.
W poniższym przykładzie przedstawiono moduł przeznaczony dla grupy zasobów w innej subskrypcji.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
W następnym przykładzie pokazano moduł przeznaczony dla grupy zasobów w tej samej subskrypcji.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
Aby zapoznać się z przykładowym szablonem, zobacz Wdrażanie w wielu grupach zasobów.
Zakres subskrypcji
Aby wdrożyć zasoby w subskrypcji, dodaj moduł. Użyj funkcji subscription, aby ustawić jej scope
właściwość.
Aby wdrożyć w bieżącej subskrypcji, użyj funkcji subskrypcji bez parametru .
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Aby wdrożyć w innej subskrypcji, określ ten identyfikator subskrypcji jako parametr w funkcji subskrypcji.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
Przykładowy szablon można znaleźć w temacie Create resource group with Bicep (Tworzenie grupy zasobów za pomocą Bicep).
Zakres do dzierżawy
Aby utworzyć zasoby w dzierżawie, dodaj moduł. Użyj funkcji dzierżawy, aby ustawić jej scope
właściwość.
Użytkownik wdrażający szablon musi mieć wymagany dostęp do wdrożenia w dzierżawie.
Poniższy przykład obejmuje moduł wdrożony w dzierżawie.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Zamiast używać modułu, można ustawić zakres na tenant()
dla niektórych typów zasobów. Poniższy przykład umożliwia wdrożenie grupy zarządzania w dzierżawie.
param mgName string = 'mg-${uniqueString(newGuid())}'
// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
Aby uzyskać więcej informacji, zobacz Grupa zarządzania.
Wdrażanie w docelowej grupie zasobów
Aby wdrożyć zasoby w docelowej grupie zasobów, zdefiniuj te zasoby w resources
sekcji szablonu. Poniższy szablon tworzy konto magazynu w grupie zasobów określonej w operacji wdrażania.
@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@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Wdrażanie w wielu grupach zasobów
Wdrożenie można wdrożyć w więcej niż jednej grupie zasobów w jednym pliku Bicep.
Uwaga
W jednym wdrożeniu można wdrożyć 800 grup zasobów. Zazwyczaj to ograniczenie oznacza, że można wdrożyć w jednej grupie zasobów określonej dla szablonu nadrzędnego i maksymalnie 799 grup zasobów w zagnieżdżonych lub połączonych wdrożeniach. Jeśli jednak szablon nadrzędny zawiera tylko zagnieżdżone lub połączone szablony i nie wdraża żadnych zasobów, możesz uwzględnić maksymalnie 800 grup zasobów w zagnieżdżonych lub połączonych wdrożeniach.
W poniższym przykładzie wdrożono dwa konta magazynu. Pierwsze konto magazynu jest wdrażane w grupie zasobów określonej w operacji wdrażania. Drugie konto magazynu jest wdrażane w grupie zasobów określonej w parametrach secondResourceGroup
i secondSubscriptionID
:
@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 moduły używają tego samego pliku Bicep o nazwie storage.bicep.
param storageLocation string
param storageName string
resource storageAcct 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageName
location: storageLocation
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
Utwórz grupę zasobów
Aby uzyskać informacje na temat tworzenia grup zasobów, zobacz Create resource group with Bicep (Tworzenie grupy zasobów za pomocą Bicep).
Następne kroki
Aby dowiedzieć się więcej o innych zakresach, zobacz: