Erőforrások üzembe helyezése több hatókörben
Néha a hierarchia több szintjén is üzembe kell helyeznie az erőforrásokat egy üzembe helyezésen belül. Íme néhány olyan helyzet, amikor ezt érdemes elvégeznie:
- Az erőforrásokat két különböző erőforráscsoportban kell üzembe helyeznie. Létrehozhat például egy hálózati biztonsági csoportot egy megosztott erőforráscsoportban, és üzembe helyezhet egy hálózati adaptert egy virtuális géphez az alkalmazás erőforráscsoportjában.
- Sablon használatával létrehoz egy erőforráscsoportot, amely egy előfizetés-hatókörű erőforrás, majd egy tárfiókot és más Azure-erőforrásokat szeretne üzembe helyezni az adott erőforráscsoportban egy erőforráscsoport hatókörű üzembe helyezésével.
- Felügyeleticsoport-hierarchiát helyez üzembe, és néhány előfizetést is üzembe szeretne helyezni, amelyek bérlői hatókörű erőforrások.
A Bicep használatával olyan üzembe helyezést hozhat létre, amely több hatókörön keresztül működik a scope
kulcsszó használatával.
Megjegyzés:
Az egység parancsai a fogalmakat szemléltetik. Még ne futtassa a parancsokat. Hamarosan gyakorolja, amit itt tanul.
Modul hatókörének megadása
A Bicep-modulok használatával olyan erőforráskészletet helyezhet üzembe, amely eltér a targetScope
fájlban megadotttól. Íme egy példa Bicep-fájl, amely egy targetScope
subscription
adott erőforrással együtt van üzembe helyezve, de egy modul használatával üzembe helyez néhány erőforrást egy erőforráscsoportban:
targetScope = 'subscription'
module networkModule 'modules/network.bicep' = {
scope: resourceGroup('ToyNetworking')
name: 'networkModule'
}
Figyelje meg, hogy a scope
tulajdonság egy Bicep-függvény használatával segít azonosítani a megcélzandó hatókört. Az előző példa a függvényt resourceGroup()
használja, és megadja a megcélzandó erőforráscsoport nevét. A , managementGroup()
és tenant()
függvényeket subscription()
is használhatja. A Bicep-fájlok kulcsszójának és a scope
modulok kulcsszójának használatával targetScope
számos különböző hatókör-kombinációt hozhat létre az üzemelő példányokhoz.
Megjegyzés:
Az egyik kivétel az, hogy a Bicep-fájlok targetScope
egy vagy resourceGroup
subscription
több modult scope
nem tartalmazhatnak managementGroup
.
Tipp.
Ha előfizetés-hatókörű Bicep-fájlt használ egy erőforráscsoport létrehozásához, az erőforráscsoport szimbolikus nevét használhatja modulként scope
. A következő gyakorlatban látni fogja, hogyan teheti ezt meg.
Üzembe helyezés több erőforráscsoportban
A hatókörök gyakran használják az erőforrások több erőforráscsoportban való üzembe helyezését. Bár a legtöbb Azure-erőforráson nem tudja beállítani a scope
tulajdonságot, modulokkal jelezheti a Bicepnek, hogy egy erőforráskészletet egy másik erőforráscsoportban kell üzembe helyezni.
Létrehozhat például egy olyan Bicep-fájlkészletet, amely üzembe helyez egy virtuális hálózatot és annak társított erőforrásait egy ToyNetworking nevű megosztott erőforráscsoportban, majd üzembe helyez egy hálózati adaptert egy másik erőforráscsoportban. Így néz ki a Bicep-fájl:
module networkModule 'modules/network.bicep' = {
scope: resourceGroup('ToyNetworking')
name: 'networkModule'
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2020-11-01' = {
name: 'production-nic'
location: resourceGroup().location
properties: {
ipConfigurations: [
{
name: 'toy-subnet-ip-configuration'
properties: {
subnet: {
id: networkModule.outputs.subnetResourceId
}
}
}
]
}
}
Figyelje meg, hogy a ToyNetworking erőforráscsoportban üzembe helyezendő erőforrások egy modulban vannak definiálva , és a subnetResourceId
kimenetet a hálózati adapter erőforrásdefiníciója használja.
A fájl üzembe helyezése után a ProjectTeddybear nevű másik erőforráscsoportot is megcélzhatja, például a következőt:
az deployment group create --resource-group ProjectTeddybear ...
New-AzResourceGroupDeployment -ResourceGroupName ProjectTeddybear ...
Bár az üzembe helyezés a ProjectTeddybear erőforráscsoportot célozza meg, a virtuális hálózati erőforrások a ToyNetworking erőforráscsoportban lesznek üzembe helyezve . A hálózati adapter a ProjectTeddybear erőforráscsoportban van üzembe helyezve.
Egy erőforráscsoportot egy másik előfizetésben is üzembe helyezhet, ha az előfizetés azonosítóját a resourceGroup
hatókörbe helyezi:
module networkModule 'modules/network.bicep' = {
scope: resourceGroup('f0750bbe-ea75-4ae5-b24d-a92ca601da2c', 'ToyNetworking')
name: 'networkModule'
}
Hasonlóképpen a subscription()
hatókör függvénnyel több előfizetésben is üzembe helyezhet erőforrásokat az előfizetés hatókörében, és a managementGroup()
hatókör függvénnyel több felügyeleti csoportban is üzembe helyezheti az erőforrásokat. Azonban nem helyezheti üzembe őket több bérlőn.
Egyetlen erőforrás hatókörének megadása
A scope
kulcsszót néhány más erőforrástípuson is használhatja, nem csak modulokon. A bővítményerőforrások a scope
kulcsszó használatával határozzák meg, hogy melyik erőforrásra vonatkoznak. Emellett a bérlői hatókörű erőforrások használhatják a scope
kulcsszót, hogy bármilyen sablonból üzembe helyezhesse őket.
Például egy Bicep-fájl használatával létrehozhat egy felügyeleticsoport-hierarchiát, ahogyan az a következő példában látható:
targetScope = 'managementGroup'
resource parentManagementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
scope: tenant()
name: 'NonProduction'
properties: {
displayName: 'Non-production'
}
}
resource childManagementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
scope: tenant()
name: 'SecretRND'
properties: {
displayName: 'Secret R&D Projects'
details: {
parent: {
id: parentManagementGroup.id
}
}
}
}
Figyelje meg, hogy ez a példa a sablonfájlban használja targetScope = 'managementGroup'
, de aztán üzembe helyezi a felügyeleti csoportokat a tenant()
hatókörön belül.
Megjegyzés:
Az előző példa bemutatja, hogyan hozhat létre felügyeleticsoport-hierarchiát a Bicep használatával. A NonProduction felügyeleti csoport a gyökérszintű felügyeleti csoport gyermeke lesz, a SecretRND felügyeleti csoport pedig a NonProduction felügyeleti csoport gyermeke lesz.
Felügyeleti csoport és előfizetési hierarchia létrehozása
Most már tudja, hogyan helyezhet üzembe számos különböző erőforrást különböző hatókörökben, és tudja, hogyan használhatja a Bicep-modulokat és a kulcsszót az scope
erőforrások kombinációinak üzembe helyezéséhez. Alkalmazzuk ezt az új tudást a felügyeleti csoport hierarchiájának kiterjesztésére az előző példában. A hierarchia mostantól egy előfizetési aliast is tartalmaz, amely egy bérlői hatókörű erőforrás, amely új Azure-előfizetést hoz létre:
resource subscription 'Microsoft.Subscription/aliases@2020-09-01' = {
scope: tenant()
name: subscriptionAliasName
properties: {
// ...
}
}
Megjegyzés:
Előfizetési alias létrehozásakor meg kell adnia néhány egyéb tulajdonságot is, például egy számlázási hatókört. Az egyértelműség kedvéért kihagytuk őket.
Ezután társíthatja az előfizetést egy felügyeleti csoporttal, amelyhez telepítenie kell egy úgynevezett erőforrástípust Microsoft.Management/managementGroups/subscriptions
. Az erőforrás működése miatt egy modulban deklarálná. Íme például egy modulok/mg-subscription-association.bicep nevű fájl:
targetScope = 'tenant'
@description('The name of the management group that should contain the subscription.')
param managementGroupName string
@description('The subscription ID to place into the management group.')
param subscriptionId string
resource managementGroup 'Microsoft.Management/managementGroups@2021-04-01' existing = {
name: managementGroupName
}
resource subscriptionAssociation 'Microsoft.Management/managementGroups/subscriptions@2021-04-01' = {
parent: managementGroup
name: subscriptionId
}
Figyelje meg, hogy a felügyeleti csoportra a existing
kulcsszó hivatkozik.
A fő Bicep-fájl ezután létrehozhatja a társításokat a modul beleszámításával. A teljes Bicep-fájl:
targetScope = 'managementGroup'
@description('The name of the subscription alias to deploy.')
param subscriptionAliasName string
resource parentManagementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
scope: tenant()
name: 'NonProduction'
properties: {
displayName: 'Non-production'
}
}
resource childManagementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
scope: tenant()
name: 'SecretRND'
properties: {
displayName: 'Secret R&D Projects'
details: {
parent: {
id: parentManagementGroup.id
}
}
}
}
resource subscription 'Microsoft.Subscription/aliases@2020-09-01' = {
scope: tenant()
name: subscriptionAliasName
properties: {
// ...
}
}
module subscriptionAssociation 'modules/mg-subscription-association.bicep' = {
name: 'subscriptionAssociation'
scope: tenant()
params: {
managementGroupName: childManagementGroup.name
subscriptionId: subscription.properties.subscriptionId
}
}
Mint láthatta, az összes hatókört és Bicep nyelvi funkciót együtt használhatja a teljes Azure-infrastruktúra kifinomult üzembe helyezéséhez.