Gyakorlat – Erőforrások üzembe helyezése több hatókörben modulok használatával

Befejeződött

Megjegyzés:

Ehhez a gyakorlathoz Azure-előfizetés szükséges. Ha még nem rendelkezik ilyen előfizetéssel, ingyenes előfizetést kaphat.

Az R&D csapata segítséget kért egy virtuális hálózat létrehozásához a Project Teddybear-előfizetésben. Tudja, hogy a jövőben több előfizetéssel fog segíteni a csapatnak, ezért úgy dönt, hogy kibővíti az újrafelhasználható Bicep-sablont egy virtuális hálózat üzembe helyezéséhez a csapattagok számára.

Ebben a gyakorlatban frissíteni fogja a sablont, amelyet az utolsó gyakorlatban kezdett építeni.

A folyamat során a következőt fogja elvégezni:

  • Frissítse az előfizetés-hatókörű sablont egy új erőforráscsoport létrehozásához.
  • Hozzon létre egy különálló Bicep-modult egy virtuális hálózattal, és paraméterekkel szabályozza a virtuális hálózat konfigurálását.
  • Frissítse a sablont a modul erőforráscsoportban való üzembe helyezéséhez.
  • A sablon üzembe helyezése.

Ehhez a gyakorlathoz rendelkeznie kell engedéllyel az előfizetés-hatókörű erőforrások üzembe helyezéséhez. Ha nem tudja teljesíteni ezt a követelményt a jelenlegi Azure-fiókjával, ingyenes próbaverziót kaphat, és létrehozhat egy új Azure-előfizetést és -bérlőt. Másik lehetőségként kihagyhatja a gyakorlat üzembe helyezési lépéseit.

Erőforráscsoport létrehozása

  1. A Visual Studio Code-ban nyissa meg a korábbi gyakorlatban létrehozott main.bicep fájlt.

  2. Az aktuális változódefiníciók alatt adja hozzá a következő változódefiníciót:

    var resourceGroupName = 'ToyNetworking'
    
  3. A fájl alján adja hozzá a következő erőforrásdefiníciót:

    resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-01-01' = {
      name: resourceGroupName
      location: deployment().location
    }
    

    Figyelje meg, hogy ugyanúgy definiálja az erőforráscsoportot, mint egy másik erőforrást. Az erőforráscsoport egy előfizetés-hatókörű erőforrás, amely a Bicep-fájlokban üzembe helyezhető és felügyelhető a targetScope következő beállítással subscription: .

  4. Mentse a fájl módosításait.

Modul hozzáadása virtuális hálózat létrehozásához

Ezután létre fog hozni egy Bicep-modult az R&D-csapat virtuális hálózatához. A gyakorlat későbbi részében üzembe fogja helyezni a modul erőforrásait az erőforráscsoportban.

  1. A Visual Studio Code-ban hozzon létre egy új, modulok nevű mappát ugyanabban a mappában, amelyben létrehozta a main.bicep fájlt.

  2. A modulok mappájában hozzon létre és mentsen egy virtualNetwork.bicep nevű fájlt.

  3. A virtualNetwork.bicep fájlban adja hozzá a következő tartalmat:

    param virtualNetworkName string
    param virtualNetworkAddressPrefix string
    
    resource virtualNetwork 'Microsoft.Network/virtualNetworks@2020-11-01' = {
      name: virtualNetworkName
      location: resourceGroup().location
      properties: {
        addressSpace: {
          addressPrefixes: [
            virtualNetworkAddressPrefix
          ]
        }
      }
    }
    

    Figyelje meg, hogy ehhez a modulhoz még nem adott meg egy targetScope beállítást. Nem kell célhatókört megadnia, ha a Bicep-fájl erőforráscsoportot céloz meg.

  4. Mentse a fájl módosításait.

A modul használata az előfizetés üzembe helyezésében

Most már készen áll arra, hogy tájékoztassa a Bicepet, hogy telepítse a modult az erőforráscsoportban.

  1. A Visual Studio Code main.bicep fájljában adja hozzá a targetScope következő paraméterdefiníciókat:

    param virtualNetworkName string
    param virtualNetworkAddressPrefix string
    

    Ezek a paraméterek újra felhasználhatóvá teszik a sablont. Amikor az R&D-csapatnak új előfizetésre van szüksége, létrehozhat egy egyedi nevet és IP-címtartományt tartalmazó virtuális hálózatot.

  2. A fájl alján adja hozzá a következő moduldefiníciót:

    module virtualNetwork 'modules/virtualNetwork.bicep' = {
      scope: resourceGroup
      name: 'virtualNetwork'
      params: {
        virtualNetworkName: virtualNetworkName
        virtualNetworkAddressPrefix: virtualNetworkAddressPrefix
      }
    }
    

    Figyelje meg, hogy explicit módon adja meg a scope modult. A Bicep tisztában van azzal, hogy a modulban lévő erőforrásokat a fájlban korábban létrehozott erőforráscsoportban kell üzembe helyezni.

A sablon ellenőrzése

A main.bicep fájlnak a következőképpen kell kinéznie:

targetScope = 'subscription'

param virtualNetworkName string
param virtualNetworkAddressPrefix string

var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'
var resourceGroupName = 'ToyNetworking'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = {
  name: policyDefinitionName
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        allOf: [
          {
            field: 'type'
            equals: 'Microsoft.Compute/virtualMachines'
          }
          {
            anyOf: [
              {
                field: 'Microsoft.Compute/virtualMachines/sku.name'
                like: 'Standard_F*'
              }
              {
                field: 'Microsoft.Compute/virtualMachines/sku.name'
                like: 'Standard_G*'
              }
            ]
          }
        ]
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
  name: policyAssignmentName
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: resourceGroupName
  location: deployment().location
}

module virtualNetwork 'modules/virtualNetwork.bicep' = {
  scope: resourceGroup
  name: 'virtualNetwork'
  params: {
    virtualNetworkName: virtualNetworkName
    virtualNetworkAddressPrefix: virtualNetworkAddressPrefix
  }
}

A modulok/virtualNetwork.bicep fájlnak a következőképpen kell kinéznie:

param virtualNetworkName string
param virtualNetworkAddressPrefix string

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2020-11-01' = {
  name: virtualNetworkName
  location: resourceGroup().location
  properties: {
    addressSpace: {
      addressPrefixes: [
        virtualNetworkAddressPrefix
      ]
    }
  }
}

Ha bármelyik fájl nem egyezik a példával, másolja ki a példát, vagy módosítsa a sablont.

A sablon üzembe helyezése az Azure-ban

A Visual Studio Code terminálban helyezze üzembe a sablont az alábbi Azure CLI-parancsokkal:

templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="sub-scope-"$today
virtualNetworkName="rnd-vnet-001"
virtualNetworkAddressPrefix="10.0.0.0/24"

az deployment sub create \
    --name $deploymentName \
    --location westus \
    --template-file $templateFile \
    --parameters virtualNetworkName=$virtualNetworkName \
                 virtualNetworkAddressPrefix=$virtualNetworkAddressPrefix

A Visual Studio Code terminálban helyezze üzembe a sablont az alábbi Azure PowerShell-parancsokkal:

$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "sub-scope-$today"
$virtualNetworkName = 'rnd-vnet-001'
$virtualNetworkAddressPrefix = '10.0.0.0/24'

New-AzSubscriptionDeployment `
  -Name $deploymentName `
  -Location westus `
  -TemplateFile $templateFile `
  -virtualNetworkName $virtualNetworkName `
  -virtualNetworkAddressPrefix $virtualNetworkAddressPrefix

Figyelje meg, hogy a paraméterek és virtualNetworkAddressPrefix a paraméterek értékeit virtualNetworkName adja át. Amikor egy másik R&D-csapat arra kéri, hogy készítse elő az előfizetésüket, módosíthatja ezeket az értékeket, hogy saját virtuális hálózatot biztosítson a csapatnak.

Az üzembe helyezés befejezése eltarthat egy-két percig, majd megjelenik egy sikeres üzembe helyezés.

Az üzemelő példány ellenőrzése

Most ellenőrizni fogja az erőforráscsoportot és a modul által létrehozott üzembe helyezést.

  1. Nyissa meg az Azure Portalt.

  2. A bal oldali panelen válassza az Erőforráscsoportok lehetőséget. Figyelje meg, hogy létrejött a ToyNetworking erőforráscsoport.

  3. Válassza ki a ToyNetworking erőforráscsoportot . Figyelje meg, hogy a modul sikeresen üzembe lett helyezve az erőforráscsoportban, és hogy a virtuális hálózat létrejött:

    Screenshot of the Azure portal, showing the ToyNetworking resource group.

Az erőforrások eltávolítása

Sikeresen üzembe helyezte az előfizetés hatókörű erőforrásait, beleértve egy erőforráscsoportot is, és egy modult használt az erőforrás üzembe helyezéséhez a létrehozott erőforráscsoportban. Eltávolíthatja a létrehozott szabályzaterőforrásokat és erőforráscsoportokat.

Figyelem

Ez a parancs véglegesen törli a ToyNetworking nevű erőforráscsoportot és annak összes erőforrását. Ha bármi mást is üzembe helyezett ebben az erőforráscsoportban, hagyja ki ezt a lépést.

subscriptionId=$(az account show --query 'id' --output tsv)

az policy assignment delete --name 'DenyFandGSeriesVMs' --scope "/subscriptions/$subscriptionId"
az policy definition delete --name 'DenyFandGSeriesVMs' --subscription $subscriptionId
az group delete --name ToyNetworking
$subscriptionId = (Get-AzContext).Subscription.Id

Remove-AzPolicyAssignment -Name 'DenyFandGSeriesVMs' -Scope "/subscriptions/$subscriptionId"
Remove-AzPolicyDefinition -Name 'DenyFandGSeriesVMs' -SubscriptionId $subscriptionId
Remove-AzResourceGroup -Name ToyNetworking