Gyakorlat – Előfizetés-hatókörű erőforrás üzembe helyezése

Befejeződött

Fontos

Ennek a gyakorlatnak az elvégzéséhez saját Azure-előfizetés szükséges, amely költségekkel járhat. Ha még nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes fiókot.

A Project Teddybear már javában működik, és az R&D csapata arra vár, hogy hozzáférést adjon az új Azure-előfizetéshez. Már létrehozta az előfizetést, de mielőtt hozzáférést adna a csapatnak, gondoskodnia kell arról, hogy csak olyan virtuális gépeket telepítsen, amelyek megfelelnek a csapat szabályzatainak. A csapat azt mondta, hogy nem szeretne F vagy G sorozatú virtuális gépeket üzembe helyezni.

Ebben a gyakorlatban létrehoz egy Bicep-sablont, amely a csapat szabályzatai alapján konfigurálja az előfizetést.

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

  • Hozzon létre egy Bicep-sablont, amelyet egy előfizetés hatókörében szeretne üzembe helyezni.
  • Adjon hozzá egy Azure Policy-definíciót és -hozzárendelést.
  • Helyezze üzembe a sablont, és ellenőrizze az eredményt.

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.

Ez a gyakorlat a Visual Studio Code Bicep-bővítményét használja. Telepítse ezt a bővítményt a Visual Studio Code-ban.

Előfizetés-hatókörű sablon létrehozása

  1. Nyissa meg a Visual Studio Code-ot.

  2. Hozzon létre egy main.bicep nevű új fájlt.

  3. Mentse az üres fájlt, hogy a Visual Studio Code betöltse a Bicep-eszközt.

    Választhatja a Fájlmentés>másként lehetőséget, vagy a Ctrl+S billentyűkombinációt a Windowsban (⌘+S macOS rendszeren). Ne feledje, hogy hová mentette a fájlt. Előfordulhat például, hogy létre szeretne hozni egy szkriptmappát , amelybe mentené.

  4. Adja hozzá a következő tartalmat a main.bicep fájlhoz. Hamarosan üzembe helyezi a sablont. Célszerű a másolás és beillesztés helyett manuálisan begépelni, hogy az eszköz hogyan segít a Bicep-fájlok írásában.

    targetScope = 'subscription'
    

    Ez a kódsor tájékoztatja a Bicepet, hogy a sablon egy előfizetési hatókörben lesz üzembe helyezve.

Szabályzatdefiníció hozzáadása

  1. Az imént hozzáadott sor alatt adja hozzá a következő változódefiníciót:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. A fájl alján adja hozzá a következő Azure Policy-definíciót:

    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'
          }
        }
      }
    }
    

    Figyelje meg, hogy a szabályzatdefiníció csak azokra az erőforrásokra vonatkozik, ahol:

    • Az erőforrás típusa egyenlő .Microsoft.Compute/virtualMachines
    • A sku.name tulajdonság vagy a következővel Standard_F kezdődik: vagy Standard_G.

    Amikor olyan erőforrást próbál létrehozni, amely megfelel ezeknek a feltételeknek, az Azure megtagadja az erőforrás létrehozását.

    Figyelmeztetés

    Legyen óvatos, amikor a megtagadási szabályzat effektust használja a szabályzatdefiníciókhoz, különösen olyan széles hatókörökben, mint az előfizetések és a felügyeleti csoportok. Ha a definíció nem megfelelően lett létrehozva, váratlan hatásokkal járhat, amelyek kimaradásokhoz vezethetnek. Érdemesebb a naplózási szabályzat effektusával kezdeni, majd csak akkor váltson a megtagadási effektusra, ha már látta, hogy az egy adott időszak alatt jól működik.

    A szabályzatdefiníciót az előfizetés hatókörében hozza létre. Ez azt jelenti, hogy a definíció üzembe helyezése után az előfizetés összes erőforráscsoportjában elérhető lesz.

A szabályzat hozzárendelése

A szabályzatdefiníciók csak az alkalmazásuk után lépnek érvénybe. Ebben a lépésben egy második előfizetés-hatókörű erőforrást fog üzembe helyezni, amely a szabályzatdefiníciót alkalmazza az előfizetésre.

  1. policyDefinitionName A változódefiníció alatt adja hozzá a következő változódefiníciót:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. A fájl alján, a szabályzatdefiníciós erőforrás alatt adja hozzá a következő szabályzat-hozzárendelést:

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

    Figyelje meg, hogy nem konfigurálja explicit módon a szabályzat-hozzárendelést úgy, hogy a teljes előfizetésre vonatkozzanak. A Bicep ezt megérti, mivel a sablon az előfizetés hatókörében lesz üzembe helyezve.

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

A sablon ellenőrzése

A sablonnak a következőképpen kell kinéznie:

targetScope = 'subscription'

var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'

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
  }
}

Ha nem, másolja ki a példát, vagy módosítsa a sablont a példának megfelelően.

A sablon üzembe helyezése

Ha a sablont az Azure-ban szeretné üzembe helyezni, be kell jelentkeznie az Azure-fiókjába a Visual Studio Code termináljában. Győződjön meg arról, hogy telepítette az Azure CLI-eszközöket .

  1. Válassza a Terminál menü Új terminál pontját. A terminálablak általában a képernyő alsó felében nyílik meg.

  2. Ha a terminálablak jobb oldalán látható rendszerhéj bash, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

  3. Ha nem bash-rendszerhéjjelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a Git Bash lehetőséget.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. A terminálhéjak listájában válassza a bash lehetőséget.

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

  5. A terminálban lépjen arra a könyvtárra, ahová a sablont mentette. Ha például a sablont a sablonok mappájába mentette, használhatja ezt a parancsot:

    cd templates
    

A Bicep telepítése

Futtassa a következő parancsot a Bicep legújabb verziójának biztosításához:

az bicep install && az bicep upgrade

Bejelentkezés az Azure-ba az Azure CLI használatával

  1. A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:

    az login
    
  2. A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.

    A Visual Studio Code terminál megjeleníti a fiókhoz társított előfizetések listáját.

  3. A listában keresse meg a gyakorlathoz használni kívánt előfizetést.

    Ha kihagyta a listát a bejelentkezésből, az alábbi kódrészlet használatával ismét listázhatja az előfizetéseket.

    az account list --output table
    
  4. Állítsa be az alapértelmezett előfizetést az ebben a munkamenetben futtatott összes Azure CLI-parancshoz.

    az account set --subscription "Your Subscription Name or ID"
    

A sablon Azure-ban való üzembe helyezéséhez jelentkezzen be az Azure-fiókjába a Visual Studio Code terminálból. Győződjön meg arról, hogy telepítette az Azure PowerShellt.

  1. Válassza a Terminál menü Új terminál pontját. A terminálablak általában a képernyő alsó felében nyílik meg.

  2. Ha a terminálablak jobb oldalán látható rendszerhéj PowerShell vagy pwsh, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

  3. Ha nem PowerShell vagy pwsh rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a PowerShellt.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. A terminálhéjak listájában válassza a PowerShellt vagy a pwsh-t.

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

  5. A terminálban lépjen arra a könyvtárra, ahová a sablont mentette. Ha például a sablont a sablonok mappájába mentette, használhatja ezt a parancsot:

    Set-Location -Path templates
    

A Bicep parancssori felület telepítése

A Bicep Azure PowerShellből való használatához telepítse a Bicep CLI-t.

Bejelentkezés az Azure-ba az Azure PowerShell használatával

  1. A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:

    Connect-AzAccount
    
  2. A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.

  3. A gyakorlathoz használni kívánt előfizetés azonosítójának lekéréséhez futtassa a következő parancsot:

    Get-AzSubscription
    

    Az előfizetések azonosítói a második oszlopban találhatók. Másolja ki a második oszlopot. Úgy néz ki, mint cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

  4. Állítsa be az alapértelmezett előfizetést az ebben a munkamenetben futtatott Összes Azure PowerShell-parancshoz.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

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

az deployment sub create \
    --name $deploymentName \
    --location westus \
    --template-file $templateFile

Figyelje meg, hogy az előfizetés-hatókörű üzembe helyezést a az deployment sub create parancs használatával hozza létre ahelyett, hogy azt a az deployment group create parancsot használna, amelyet esetleg használna.

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"

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

Figyelje meg, hogy előfizetés-hatókörű üzembe helyezést hoz létre a New-AzSubscriptionDeployment parancsmaggal, nem pedig a New-AzResourceGroupDeployment használt parancsmaggal.

Azt is megfigyelheti, hogy kifejezetten megadja az üzembe helyezés nevét és helyét. Az Azure ezeket az információkat használja az üzembehelyezési metaadatok tárolására.

Tipp.

Az üzemelő példány neve tartalmazza a mai dátumot. Így kevésbé valószínű, hogy véletlenül ugyanazt a nevet fogja használni, mint egy másik üzembe helyezés.

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

Feljegyzés

Ha az AuthorizationFailed kóddal ellátott hibaüzenet jelenik meg, valószínűleg nincs engedélye az előfizetés-hatókörű erőforrások üzembe helyezésére. Kérje meg az Azure-rendszergazdát, hogy adjon önnek engedélyeket. 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.

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

Az előfizetés-hatókörű üzemelő példányokat az Azure Portalon tekintheti meg. Ez hasznos lehet annak ellenőrzéséhez, hogy az üzembe helyezés sikeresen befejeződött-e, és hogy megvizsgálja az eredményeket.

  1. Nyissa meg az Azure Portalt.

  2. A bal oldali panelen válassza az Előfizetések lehetőséget.

  3. Válassza ki előfizetését.

  4. A Keresőmezőbe írja be az Üzembe helyezéseket, majd válassza az Üzembe helyezések menüpontot.

    Screenshot of the Azure portal Search box and the Deployments menu item.

  5. Az Üzembe helyezés neve oszlopban válassza ki az alhatókörrel kezdődő üzembe helyezést, hogy lássa, milyen erőforrások lettek üzembe helyezve.

    Screenshot of the Azure portal interface showing the list of deployments.

  6. Az üzembe helyezés részleteinek kiválasztásával bontsa ki. Ebben az esetben a két Azure Policy-erőforrás szerepel a listán.

    Screenshot of the Azure portal overview pane for the selected deployment.

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

Sikeresen üzembe helyezte az előfizetés-hatókörű erőforrásokat. A létrehozott szabályzaterőforrásokat az alábbi parancsok futtatásával távolíthatja el:

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
$subscriptionId = (Get-AzContext).Subscription.Id

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

A következő gyakorlatban ugyanazokat a szabályzaterőforrásokat fogja újra üzembe helyezni. Ezek újra létrejönnek, de utána újra megtisztíthatja őket.