Nasazení předplatných se soubory Bicep
Tento článek popisuje, jak nastavit obor pomocí Bicep při nasazování do předplatného.
Pro zjednodušení správy prostředků můžete nasazovat prostředky na úrovni předplatného Azure. Můžete například do svého předplatného nasadit zásady a řízení přístupu na základě role v Azure (Azure RBAC), které je použije v rámci vašeho předplatného. Můžete také vytvořit skupiny prostředků v rámci předplatného a nasadit prostředky do skupin prostředků v předplatném.
Poznámka
V nasazení na úrovni předplatného můžete nasadit do 800 různých skupin prostředků.
Microsoft Learn
Další informace o oborech nasazení a pokyny najdete v tématu Nasazení prostředků do předplatných, skupin pro správu a tenantů pomocí Bicep na Microsoft Learn.
Podporované prostředky
Ne všechny typy prostředků je možné nasadit na úroveň předplatného. V této části je uveden seznam podporovaných typů prostředků.
Pro Azure Blueprints použijte:
V případě zásad Azure použijte:
Pro řízení přístupu použijte:
- accessReviewScheduleDefinitions
- accessReviewScheduleSettings
- roleAssignments
- roleAssignmentScheduleRequests
- roleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Pro vnořené šablony, které se nasadí do skupin prostředků, použijte:
K vytváření nových skupin prostředků použijte:
Ke správě předplatného použijte:
Pro monitorování použijte:
Pro zabezpečení použijte:
- advancedThreatProtectionSettings
- alertsSuppressionRules
- assessmentMetadata
- Hodnocení
- nastavení automatického zřizování
- Konektory
- deviceSecurityGroups
- nastavení příjmu dat
- ceny
- zabezpečeníAktuály
- zdroje dat
- workspaceSettings (nastavení pracovního prostoru)
Mezi další podporované typy patří:
Nastavení oboru
Pokud chcete nastavit rozsah na předplatné, použijte:
targetScope = 'subscription'
Příkazy nasazení
K nasazení do předplatného použijte příkazy nasazení na úrovni předplatného.
V případě Azure CLI použijte příkaz az deployment sub create. Následující příklad nasadí šablonu pro vytvoření skupiny prostředků:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-file main.bicep \
--parameters rgName=demoResourceGroup rgLocation=centralus
Podrobnější informace o příkazech a možnostech nasazení šablon ARM najdete v těchto tématu:
- Nasazení prostředků pomocí šablon ARM a Azure CLI
- Nasazení prostředků pomocí šablon ARM a Azure PowerShell
- Nasazení šablon ARM z Cloud Shell
Umístění a název nasazení
Pro nasazení na úrovni předplatného musíte zadat umístění pro nasazení. Umístění nasazení je oddělené od umístění prostředků, které nasadíte. Umístění nasazení určuje, kam se budou ukládat data nasazení. Nasazení skupiny pro správu a tenanta také vyžadují umístění. Pro nasazení skupin prostředků se k ukládání dat nasazení používá umístění skupiny prostředků.
Můžete zadat název nasazení nebo použít výchozí název nasazení. Výchozí název je název souboru šablony. Například při nasazení šablony s názvem main.json se vytvoří výchozí název nasazení main.
Pro každý název nasazení je umístění neměnné. Nasazení nemůžete vytvořit v jednom umístění, pokud existuje nasazení se stejným názvem v jiném umístění. Pokud například vytvoříte nasazení předplatného s názvem deployment1 v centralus, nemůžete později vytvořit další nasazení s názvem deployment1, ale umístěním westus. Pokud se zobrazí kód chyby , použijte pro tento název jiný název nebo stejné umístění jako InvalidDeploymentLocation předchozí nasazení.
Obory nasazení
Při nasazování do předplatného můžete prostředky nasadit do:
- cílové předplatné z operace
- jakékoli předplatné v tenantovi
- skupiny prostředků v rámci předplatného nebo jiných předplatných
- tenanta pro předplatné
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.
Rozsah na předplatné
Pokud chcete nasadit prostředky do cílového předplatného, přidejte tyto prostředky s klíčovým resource slovem .
targetScope = 'subscription'
// resource group created in target subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2020-10-01' = {
...
}
Příklady nasazení do předplatného najdete v tématu Vytvoření skupin prostředků a Přiřazení definice zásady.
Pokud chcete nasadit prostředky do předplatného, které se liší od předplatného operace, přidejte modul. K nastavení vlastnosti použijte funkci scope subscription. Do pole ID předplatného, do kterého subscriptionId chcete nasadit, zadejte vlastnost .
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Obor na skupinu prostředků
Pokud chcete nasadit prostředky do skupiny prostředků v rámci předplatného, přidejte modul a nastavte jeho scope vlastnost. Pokud skupina prostředků již existuje, pomocí funkce resourceGroup nastavte hodnotu oboru. Zadejte název skupiny prostředků.
targetScope = 'subscription'
param resourceGroupName string
module exampleModule 'module.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
Pokud je skupina prostředků vytvořená ve stejném souboru Bicep, použijte symbolický název skupiny prostředků a nastavte hodnotu oboru. Příklad nastavení oboru na symbolický název najdete v tématu Vytvoření skupiny prostředkůa 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.
targetScope = 'subscription'
// 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.
targetScope = 'subscription'
param mgName string = 'mg-${uniqueString(newGuid())}'
// management group created 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.
Skupiny prostředků
Vytvoření skupin prostředků
Pokud chcete vytvořit skupinu prostředků, definujte prostředek Microsoft.Resources/resourceGroups s názvem a umístěním pro skupinu prostředků.
Následující příklad vytvoří prázdnou skupinu prostředků.
targetScope='subscription'
param resourceGroupName string
param resourceGroupLocation string
resource newRG 'Microsoft.Resources/resourceGroups@2021-01-01' = {
name: resourceGroupName
location: resourceGroupLocation
}
Vytvoření skupiny prostředků a prostředků
Pokud chcete vytvořit skupinu prostředků a nasadit do ní prostředky, přidejte modul. Modul obsahuje prostředky, které se mají nasadit do skupiny prostředků. Nastavte obor modulu na symbolický název skupiny prostředků, kterou vytvoříte. Můžete nasadit až 800 skupin prostředků.
Následující příklad vytvoří skupinu prostředků a nasadí do této skupiny prostředků účet úložiště. Všimněte scope si, že vlastnost modulu je nastavená na newRG , což je symbolický název vytvářené skupiny prostředků.
targetScope='subscription'
param resourceGroupName string
param resourceGroupLocation string
param storageName string
param storageLocation string
resource newRG 'Microsoft.Resources/resourceGroups@2021-01-01' = {
name: resourceGroupName
location: resourceGroupLocation
}
module storageAcct 'storage.bicep' = {
name: 'storageModule'
scope: newRG
params: {
storageLocation: storageLocation
storageName: storageName
}
}
Modul používá soubor Bicep s názvem storage.bicep s následujícím obsahem:
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: {}
}
Azure Policy
Přiřazení definice zásady
Následující příklad přiřadí k předplatnému existující definici zásady. Pokud definice zásady přijímá parametry, zadejte je jako objekt. Pokud definice zásady nepřidá parametry, použijte výchozí prázdný objekt.
targetScope = 'subscription'
param policyDefinitionID string
param policyName string
param policyParameters object = {}
resource policyAssign 'Microsoft.Authorization/policyAssignments@2020-09-01' = {
name: policyName
properties: {
policyDefinitionId: policyDefinitionID
parameters: policyParameters
}
}
Vytvoření a přiřazení definic zásad
Definici zásady můžete definovat a přiřadit ve stejném souboru Bicep.
targetScope = 'subscription'
resource locationPolicy 'Microsoft.Authorization/policyDefinitions@2020-09-01' = {
name: 'locationpolicy'
properties: {
policyType: 'Custom'
parameters: {}
policyRule: {
if: {
field: 'location'
equals: 'northeurope'
}
then: {
effect: 'deny'
}
}
}
}
resource locationRestrict 'Microsoft.Authorization/policyAssignments@2020-09-01' = {
name: 'allowedLocation'
properties: {
policyDefinitionId: locationPolicy.id
}
}
Řízení přístupu
Další informace o přiřazování rolí najdete v tématu Přidání přiřazení rolí Azure pomocí Azure Resource Manager šablon.
Následující příklad vytvoří skupinu prostředků, použije na ní zámek a přiřadí roli objektu zabezpečení.
targetScope = 'subscription'
@description('Name of the resourceGroup to create')
param resourceGroupName string
@description('Location for the resourceGroup')
param resourceGroupLocation string
@description('principalId of the user that will be given contributor access to the resourceGroup')
param principalId string
@description('roleDefinition to apply to the resourceGroup - default is contributor')
param roleDefinitionId string = 'b24988ac-6180-42a0-ab88-20f7382dd24c'
@description('Unique name for the roleAssignment in the format of a guid')
param roleAssignmentName string = guid(principalId, roleDefinitionId, resourceGroupName)
var roleID = '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/${roleDefinitionId}'
resource newResourceGroup 'Microsoft.Resources/resourceGroups@2019-10-01' = {
name: resourceGroupName
location: resourceGroupLocation
properties: {}
}
module applyLock 'lock.bicep' = {
name: 'applyLock'
scope: newResourceGroup
}
module assignRole 'role.bicep' = {
name: 'assignRBACRole'
scope: newResourceGroup
params: {
principalId: principalId
roleNameGuid: roleAssignmentName
roleDefinitionId: roleID
}
}
Následující příklad ukazuje modul pro použití zámku:
resource createRgLock 'Microsoft.Authorization/locks@2016-09-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Následující příklad ukazuje modul pro přiřazení role:
@description('The principal to assign the role to')
param principalId string
@description('A GUID used to identify the role assignment')
param roleNameGuid string = newGuid()
param roleDefinitionId string
resource roleNameGuid_resource 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
name: roleNameGuid
properties: {
roleDefinitionId: roleDefinitionId
principalId: principalId
}
}
Další kroky
Další informace o jiných oborech najdete v těchto tématu: