Übung: Bereitstellen einer Ressource im Abonnementbereich
Wichtig
Sie benötigen für diese Übung ein eigenes Azure-Abonnement. Außerdem fallen möglicherweise Gebühren für Sie an. Wenn Sie noch kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Project Teddybear ist in vollem Gang, und das R&D-Team wartet darauf, dass Sie ihm Zugriff auf das neue Azure-Abonnement erteilen. Sie haben das Abonnement bereits erstellt, aber bevor Sie dem Team Zugriff erteilen, müssen Sie sicherstellen, dass nur virtuelle Computer bereitgestellt werden, die den Richtlinien des Teams entsprechen. Das Team hat Ihnen mitgeteilt, dass es keine virtuellen Computer der F- oder G-Serie bereitstellen möchte.
In dieser Übung erstellen Sie eine Bicep-Vorlage, die das Abonnement basierend auf den Richtlinien des Teams konfiguriert.
In dem Prozess gehen Sie wie folgt vor:
- Erstellen Sie eine Bicep-Vorlage, die in einem Abonnementbereich bereitgestellt werden soll.
- Fügen Sie eine Azure Policy-Definition und -Zuweisung hinzu.
- Stellen Sie die Vorlage bereit, und überprüfen Sie das Ergebnis.
Für diese Übung benötigen Sie die Berechtigung, abonnementspezifische Ressourcen bereitzustellen. Wenn Sie diese Anforderung mit Ihrem aktuellen Azure-Konto nicht erfüllen können, können Sie die kostenlose Testversion nutzen und ein neues Azure-Abonnement und einen neuen Mandanten erstellen. Alternativ können Sie die Bereitstellungsschritte in dieser Übung überspringen.
In dieser Übung wird die Bicep-Erweiterung für Visual Studio Code verwendet. Sie müssen diese Erweiterung in Visual Studio Code installieren.
Erstellen einer Vorlage im Abonnementbereich
Öffnen Sie Visual Studio Code.
Erstellen Sie eine neue Datei namens main.bicep.
Speichern Sie die leere Datei, damit Visual Studio Code die Bicep-Tools lädt.
Sie können entweder Datei>Speichern unter oder STRG+S unter Windows (⌘+S unter macOS) auswählen. Merken Sie sich unbedingt den Speicherort der Datei. Sie können dazu beispielsweise einen Ordner scripts (Skripts) erstellen und sie darin speichern.
Fügen Sie der Datei main.bicep den folgenden Inhalt hinzu. Sie werden die Vorlage in Kürze bereitstellen. Es empfiehlt sich, ihn manuell einzugeben, anstatt ihn zu kopieren und einzufügen, damit Sie sehen können, wie die Tools Ihnen beim Schreiben Ihrer Bicep-Dateien helfen.
targetScope = 'subscription'
Diese Codezeile teilt Bicep mit, dass Ihre Vorlage in einem Abonnementbereich bereitgestellt wird.
Hinzufügen einer Richtliniendefinition
Fügen Sie unter der soeben hinzugefügten Zeile die folgende Variablendefinition hinzu:
var policyDefinitionName = 'DenyFandGSeriesVMs'
Fügen Sie am Ende der Datei die folgende Azure Policy-Definition hinzu:
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' } } } }
Beachten Sie, dass die Richtliniendefinition nur für Ressourcen gilt, auf die Folgendes zutrifft:
- Der Ressourcentyp ist gleich
Microsoft.Compute/virtualMachines
. - Die
sku.name
-Eigenschaft beginnt entweder mitStandard_F
oderStandard_G
.
Wenn Sie versuchen, eine Ressource zu erstellen, die diese Bedingungen erfüllt, verweigert Azure die Ressourcenerstellung.
Warnung
Seien Sie vorsichtig, wenn Sie den Richtlinieneffekt Verweigern für Ihre Richtliniendefinitionen verwenden, insbesondere bei großen Bereichen wie Abonnements und Verwaltungsgruppen. Wenn die Definition nicht ordnungsgemäß erstellt wird, kann dies unerwartete Auswirkungen haben, die zu Ausfällen führen können. Es ist besser, mit dem Richtlinieneffekt Überwachen zu beginnen und erst dann zum Effekt Verweigern zu wechseln, wenn Sie gesehen haben, dass er über einen gewissen Zeitraum gut funktioniert.
Sie erstellen die Richtliniendefinition im Bereich des Abonnements. Dies bedeutet, dass die Definition nach der Bereitstellung in allen Ressourcengruppen im Abonnement verfügbar ist.
- Der Ressourcentyp ist gleich
Zuweisen der Richtlinie
Eine Richtliniendefinition hat erst dann Auswirkungen, wenn sie angewendet wird. In diesem Schritt stellen Sie eine zweite Ressource im Abonnementbereich bereit, welche die Richtliniendefinition auf das Abonnement anwendet.
Fügen Sie unter den
policyDefinitionName
-Variablendefinitionen die folgende Variablendefinition hinzu:var policyAssignmentName = 'DenyFandGSeriesVMs'
Fügen Sie am Ende der Datei unter der Richtliniendefinitionsressource die folgende Richtlinienzuweisung hinzu:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Beachten Sie, dass Sie die Richtlinienzuweisung nicht explizit so konfigurieren, dass sie für das gesamte Abonnement gilt. Bicep versteht dies, da die Vorlage im Abonnementbereich bereitgestellt wird.
Speichern Sie die Änderungen in der Datei.
Überprüfen der Vorlage
Die Vorlage sollte folgendermaßen aussehen:
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
}
}
Andernfalls kopieren Sie entweder das Beispiel, oder passen Sie Ihre Vorlage an das Beispiel an.
Bereitstellen der Vorlage
Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um diese Vorlage in Azure bereitzustellen. Stellen Sie sicher, dass Sie die Azure CLI-Tools installiert haben.
Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.
Wenn das Terminalfenster auf der rechten Seite Bash anzeigt, bedeutet dies, dass die richtige Shell bereits geöffnet ist. Wenn stattdessen auf der rechten Seite ein Bash-Shellsymbol angezeigt wird, können Sie darauf klicken, um die Shell zu starten.
Wenn eine andere Shell als bash angezeigt wird, wählen Sie die Shell-Dropdownliste und dann Git Bash aus.
Wechseln Sie im Terminal zu dem Verzeichnis, in dem Sie Ihre Vorlage gespeichert haben. Wenn Sie Ihre Vorlage beispielsweise im Ordner templates gespeichert haben, können Sie den folgenden Befehl verwenden:
cd templates
Installieren von Bicep
Vergewissern Sie sich mit dem folgenden Befehl, dass Sie die aktuelle Version von Bicep verwenden:
az bicep install && az bicep upgrade
Anmelden bei Azure mithilfe der Azure CLI
Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:
az login
Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.
Im Visual Studio Code-Terminal wird eine Liste der Abonnements angezeigt, die diesem Konto zugeordnet sind.
Suchen Sie in der Liste nach dem Abonnement, das Sie für diese Übung verwenden möchten.
Wenn Sie die Liste bei der Anmeldung verpasst haben, können Sie den folgenden Codeausschnitt verwenden, um Ihre Abonnements erneut aufzulisten.
az account list --output table
Legen Sie das Standardabonnement für alle Azure CLI-Befehle fest, die Sie in dieser Sitzung ausführen.
az account set --subscription "Your Subscription Name or ID"
Melden Sie sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto an, um diese Vorlage in Azure bereitzustellen. Stellen Sie sicher, dass Azure PowerShell installiert ist.
Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.
Wenn das Terminalfenster auf der rechten Seite pwsh oder powershell anzeigt, bedeutet dies, dass die richtige Shell bereits geöffnet ist. Wenn stattdessen auf der rechten Seite ein PowerShell-Shellsymbol angezeigt wird, können Sie darauf klicken, um die Shell zu starten.
Wenn eine andere Shell als pwsh oder powershell angezeigt wird, öffnen Sie die Shelldropdownliste und dann PowerShell.
Wechseln Sie im Terminal zu dem Verzeichnis, in dem Sie Ihre Vorlage gespeichert haben. Wenn Sie Ihre Vorlage beispielsweise im Ordner templates gespeichert haben, können Sie den folgenden Befehl verwenden:
Set-Location -Path templates
Installieren der Bicep CLI
Installieren Sie die Bicep-CLI, um Bicep über Azure PowerShell zu verwenden.
Anmelden bei Azure mithilfe von Azure PowerShell
Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:
Connect-AzAccount
Melden Sie sich im Browser, der anschließend geöffnet wird, bei Ihrem Azure-Konto an.
Führen Sie den folgenden Befehl aus, um die ID des Abonnements abzurufen, das Sie für diese Übung verwenden möchten:
Get-AzSubscription
Die Abonnement-ID befindet sich in der zweiten Spalte. Kopieren Sie die zweite Spalte. Es sieht ungefähr wie aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e aus.
Legen Sie das Standardabonnement für alle Azure PowerShell-Befehle fest, die Sie in dieser Sitzung ausführen.
Set-AzContext -SubscriptionId {Your subscription ID}
Bereitstellen der Vorlage in Azure
Stellen Sie die Vorlage im Visual Studio Code-Terminal mithilfe der folgenden Azure CLI-Befehle bereit:
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="sub-scope-"$today
az deployment sub create \
--name $deploymentName \
--location westus \
--template-file $templateFile
Beachten Sie, dass Sie eine Bereitstellung im Abonnementbereich erstellen, indem Sie den Befehl az deployment sub create
verwenden und nicht den Befehl az deployment group create
, den Sie möglicherweise gewohnt sind.
Stellen Sie die Vorlage im Visual Studio Code-Terminal mithilfe der folgenden Azure PowerShell-Befehle bereit:
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "sub-scope-$today"
New-AzSubscriptionDeployment `
-Name $deploymentName `
-Location westus `
-TemplateFile $templateFile
Beachten Sie, dass Sie eine Bereitstellung im Abonnementbereich erstellen, indem Sie das Cmdlet New-AzSubscriptionDeployment
verwenden und nicht das Cmdlet New-AzResourceGroupDeployment
, das Sie möglicherweise gewohnt sind.
Beachten Sie auch, dass Sie explizit einen Namen und Standort für die Bereitstellung angeben. Azure verwendet diese Informationen zum Speichern der Bereitstellungsmetadaten.
Tipp
Ihr Bereitstellungsname enthält das heutige Datum. Dadurch wird es weniger wahrscheinlich, dass Sie versehentlich den gleichen Namen wie eine andere Bereitstellung verwenden.
Das Fertigstellen der Bereitstellung kann einige Minuten dauern. Anschließend wird eine erfolgreiche Bereitstellung angezeigt.
Hinweis
Wenn eine Fehlermeldung mit dem Code AuthorizationFailed angezeigt wird, verfügen Sie wahrscheinlich nicht über die Berechtigung, eine abonnementspezifische Ressource bereitzustellen. Bitten Sie Ihren Azure-Administrator, Ihnen die entsprechenden Berechtigungen zu erteilen. Wenn Sie diese Anforderung mit Ihrem aktuellen Azure-Konto nicht erfüllen können, können Sie alternativ die kostenlose Testversion nutzen und ein neues Azure-Abonnement und einen neuen Mandanten erstellen.
Überprüfen der Bereitstellung
Sie können Bereitstellungen im Abonnementbereich im Azure-Portal anzeigen. Dies kann hilfreich sein, um zu bestätigen, dass die Bereitstellung erfolgreich abgeschlossen wurde, und um die Ergebnisse zu untersuchen.
Öffnen Sie das Azure-Portal.
Wählen Sie im linken Bereich Abonnements aus.
Wählen Sie Ihr Abonnement aus.
Geben Sie im SuchfeldBereitstellungen ein, und wählen Sie dann das Menüelement Bereitstellungen aus.
Wählen Sie in der Spalte Bereitstellungsname die Bereitstellung aus, die mit dem Unterbereich beginnt, um zu sehen, welche Ressourcen bereitgestellt wurden.
Wählen Sie Bereitstellungsdetails aus, um die Angaben zu erweitern. In diesem Fall werden die beiden Azure Policy-Ressourcen aufgeführt.
Bereinigen der Ressourcen
Sie haben Ressourcen im Abonnementbereich erfolgreich bereitgestellt. Sie können die von Ihnen erstellten Richtlinienressourcen entfernen, indem Sie die folgenden Befehle ausführen:
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
In der nächsten Übungseinheit stellen Sie die gleichen Richtlinienressourcen erneut bereit. Sie werden erneut erstellt, aber Sie können sie anschließend erneut bereinigen.