Cvičení – nasazení prostředku s vymezeným předplatným

Dokončeno

Důležité

K provedení tohoto cvičení potřebujete vlastní předplatné Azure a mohou se vám účtovat poplatky. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet, než začnete.

Projekt Teddybear je v plném rozsahu a tým R&D čeká, až mu udělíte přístup k novému předplatnému Azure. Předplatné jste už vytvořili, ale než týmu udělíte přístup, musíte zajistit, že nasadí jenom virtuální počítače, které vyhovují zásadám týmu. Tým vám řekl, že nechce nasazovat virtuální počítače řady F nebo G.

V tomto cvičení vytvoříte šablonu Bicep, která nakonfiguruje předplatné na základě zásad týmu.

Během tohoto procesu:

  • Vytvořte šablonu Bicep, která se nasadí v oboru předplatného.
  • Přidejte definici a přiřazení azure Policy.
  • Nasaďte šablonu a ověřte výsledek.

Toto cvičení vyžaduje, abyste měli oprávnění k nasazení prostředků s vymezeným předplatným. Pokud tento požadavek nemůžete splnit s aktuálním účtem Azure, můžete získat bezplatnou zkušební verzi a vytvořit nové předplatné a tenanta Azure. Případně můžete přeskočit kroky nasazení v tomto cvičení.

V tomto cvičení se používá rozšíření Bicep pro Visual Studio Code. Nezapomeňte toto rozšíření do Visual Studio Codu nainstalovat.

Vytvoření šablony s vymezeným předplatným

  1. Otevřete Visual Studio Code.

  2. Vytvořte nový soubor s názvem main.bicep.

  3. Uložte prázdný soubor tak, aby Visual Studio Code načítal nástroje Bicep.

    Můžete vybrat možnost Uložit jako>nebo vybrat Kombinaci kláves Ctrl+S ve Windows (⌘+S v systému macOS). Nezapomeňte si zapamatovat, kam jste soubor uložili. Můžete například chtít vytvořit složku skriptů , do které ji chcete uložit.

  4. Do souboru main.bicep přidejte následující obsah. Šablonu nasadíte brzy. Místo kopírování a vkládání je vhodné ho zadat ručně, abyste viděli, jak vám nástroje pomáhají psát soubory Bicep.

    targetScope = 'subscription'
    

    Tento řádek kódu říká Bicep, že vaše šablona se nasadí v oboru předplatného.

Přidání definice zásady

  1. Pod řádek, který jste právě přidali, přidejte následující definici proměnné:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. V dolní části souboru přidejte následující definici služby Azure Policy:

    resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-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'
          }
        }
      }
    }
    

    Všimněte si, že definice zásady se vztahuje pouze na prostředky, kde:

    • Typ prostředku je roven Microsoft.Compute/virtualMachines.
    • Vlastnost sku.nameStandard_FStandard_G.

    Když se pokusíte vytvořit prostředek, který odpovídá těmto podmínkám, Azure vytvoření prostředku zamítne.

    Upozorňující

    Při použití efektu zásad zamítnutí pro definice zásad buďte opatrní, zejména v rozsáhlých oborech, jako jsou předplatná a skupiny pro správu. Pokud se definice nevytvoří správně, může mít neočekávané účinky, které můžou vést k výpadkům. Je lepší začít s efektem zásad auditu a pak přepnout na efekt odepření až po tom, co jste viděli, jak dobře funguje v určitém časovém období.

    Definici zásad vytváříte v oboru předplatného. To znamená, že po nasazení definice bude k dispozici ve všech skupinách prostředků v předplatném.

Přiřazení zásad

Definice zásady nemá žádný vliv, dokud se nepoužije. V tomto kroku nasadíte druhý prostředek s oborem předplatného, který použije definici zásad pro předplatné.

  1. policyDefinitionName Pod definici proměnné přidejte následující definici proměnné:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. V dolní části souboru pod prostředek definice zásady přidejte následující přiřazení zásad:

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

    Všimněte si, že přiřazení zásad explicitně nenakonfigurujete tak, aby platilo pro celé předplatné. Bicep tomu rozumí, protože šablona se nasadí v oboru předplatného.

  3. Uložte změny souboru.

Ověření šablony

Šablona by měla vypadat takto:

targetScope = 'subscription'

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

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-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@2024-05-01' = {
  name: policyAssignmentName
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

Pokud tomu tak není, zkopírujte příklad nebo upravte šablonu tak, aby odpovídala příkladu.

Nasazení šablony

Pokud chcete tuto šablonu nasadit do Azure, musíte se přihlásit ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali nástroje Azure CLI .

  1. V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.

  2. Pokud se v okně terminálu zobrazí bash na pravé straně, znamená to, že správné prostředí je už otevřené. Pokud se na pravé straně zobrazí ikona prostředí Bash, můžete ho vybrat a spustit prostředí.

    Snímek obrazovky okna terminálu editoru Visual Studio Code se zobrazenou možností Bash

    Pokud se zobrazí jiné prostředí než Bash, vyberte šipku rozevíracího seznamu prostředí a pak vyberte Git Bash.

    Snímek obrazovky okna terminálu editoru Visual Studio Code s rozevíracím seznamem prostředí terminálu a vybranou možností Výchozí git Bash

  3. V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:

    cd templates
    

Instalace Bicep

Spuštěním následujícího příkazu se ujistěte, že máte nejnovější verzi Bicep:

az bicep install && az bicep upgrade

Přihlášení k Azure pomocí Azure CLI

  1. V terminálu editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:

    az login
    
  2. V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.

    V terminálu editoru Visual Studio Code se zobrazí seznam předplatných přidružených k tomuto účtu.

  3. V seznamu vyhledejte předplatné, které chcete použít pro toto cvičení.

    Pokud jste zmeškali seznam z přihlášení, můžete pomocí následujícího fragmentu kódu znovu zobrazit seznam předplatných.

    az account list --output table
    
  4. Nastavte výchozí předplatné pro všechny příkazy Azure CLI, které spustíte v této relaci.

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

Pokud chcete tuto šablonu nasadit do Azure, přihlaste se ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure PowerShell.

  1. V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.

  2. Pokud se v okně terminálu na pravé straně zobrazí pwsh nebo PowerShell , znamená to, že správné prostředí je už otevřené. Pokud se na pravé straně zobrazí ikona prostředí PowerShell, můžete ho vybrat a spustit prostředí.

    Snímek obrazovky okna terminálu editoru Visual Studio Code s možností pwsh zobrazenou v rozevíracím seznamu prostředí

    Pokud se zobrazí jiné prostředí než pwsh nebo PowerShell, vyberte šipku rozevíracího seznamu prostředí a pak vyberte PowerShell.

    Snímek obrazovky okna terminálu editoru Visual Studio Code se zobrazeným rozevíracím seznamem prostředí terminálu a vybranou možností PowerShellu

  3. V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:

    Set-Location -Path templates
    

Instalace rozhraní příkazového řádku Bicep

Pokud chcete použít Bicep z Azure PowerShellu, nainstalujte rozhraní příkazového řádku Bicep.

Přihlášení k Azure přes Azure PowerShell

  1. V terminálu editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:

    Connect-AzAccount
    
  2. V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.

  3. Spuštěním následujícího příkazu získejte ID předplatného, které chcete použít pro toto cvičení:

    Get-AzSubscription
    

    ID předplatného najdete ve druhém sloupci. Zkopírujte druhý sloupec. Vypadá nějak takto: aaaa0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e4e.

  4. Nastavte výchozí předplatné pro všechny příkazy Azure PowerShellu, které spustíte v této relaci.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Nasazení šablony do Azure

V terminálu editoru Visual Studio Code nasaďte šablonu pomocí následujících příkazů Azure CLI:

templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="sub-scope-"$today

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

Všimněte si, že vytváříte nasazení s rozsahem předplatného pomocí az deployment sub create příkazu místo příkazu, az deployment group create ke kterému jste se mohli použít.

V terminálu editoru Visual Studio Code nasaďte šablonu pomocí následujících příkazů Azure PowerShellu:

$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "sub-scope-$today"

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

Všimněte si, že vytváříte nasazení s vymezeným předplatným pomocí New-AzSubscriptionDeployment rutiny místo rutiny New-AzResourceGroupDeployment , na kterou můžete být zvyklí.

Všimněte si také, že explicitně zadáváte název a umístění pro nasazení. Azure tyto informace používá k ukládání metadat nasazení.

Tip

Název nasazení zahrnuje dnešní datum. Tím se sníží pravděpodobnost, že omylem použijete stejný název jako jiné nasazení.

Dokončení nasazení může trvat minutu nebo dvě a pak se zobrazí úspěšné nasazení.

Poznámka:

Pokud se zobrazí chybová zpráva s kódem AuthorizationFailed, pravděpodobně nemáte oprávnění k nasazení prostředků s vymezeným předplatným. Požádejte správce Azure, aby vám udělil oprávnění. Pokud tento požadavek nemůžete splnit s aktuálním účtem Azure, můžete získat bezplatnou zkušební verzi a vytvořit nové předplatné a tenanta Azure.

Ověření nasazení

Nasazení s vymezeným předplatným můžete zobrazit na webu Azure Portal. To může být užitečné k ověření úspěšného dokončení nasazení a kontrole výsledků.

  1. Přejděte na Azure Portal.

  2. V levém podokně vyberte Předplatná.

  3. Vyberte své předplatné.

  4. Do vyhledávacího pole zadejte Nasazení a pak vyberte položku nabídky Nasazení.

    Snímek obrazovky s vyhledávacím polem webu Azure Portal a položkou nabídky Nasazení

  5. Ve sloupci Název nasazení vyberte nasazení začínající dílčím oborem, abyste viděli, jaké prostředky byly nasazeny.

    Snímek obrazovky s rozhraním webu Azure Portal zobrazující seznam nasazení

  6. Výběrem možnosti Podrobnosti o nasazení ho rozbalíte. V tomto případě jsou uvedené dva prostředky Azure Policy.

    Snímek obrazovky s podoknem přehledu webu Azure Portal pro vybrané nasazení

Vyčištění prostředků

Úspěšně jste nasadili prostředky s vymezeným předplatným. Prostředky zásad, které jste vytvořili, můžete odebrat spuštěním následujících příkazů:

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

V další lekci cvičení znovu nasadíte stejné prostředky zásad. Vytvoří se znovu, ale pak je můžete znovu vyčistit.