Freigeben über


Verwalten von Azure-Ressourcengruppen mithilfe von Python

Erfahren Sie, wie Sie Python mit Azure Resource Manager verwenden, um Ihre Azure-Ressourcengruppen zu verwalten.

Voraussetzungen

  • Python 3.8 oder höher ist installiert. Informationen zum Installieren der aktuellen Version finden Sie auf Python.org.

  • Die folgenden Azure-Bibliothekspakete für Python wurden in Ihrer virtuellen Umgebung installiert. Verwenden Sie zum Installieren beliebiger Pakete pip install {package-name}:

    • azure-identity
    • azure-mgmt-resource
    • azure-mgmt-storage

    Wenn Sie bereits ältere Versionen dieser Pakete in Ihrer virtuellen Umgebung installiert haben, müssen Sie sie möglicherweise mit pip install --upgrade {package-name} aktualisieren.

  • In den Beispielen in diesem Artikel wird die CLI-basierte Authentifizierung (AzureCliCredential) verwendet. Abhängig von Ihrer Umgebung müssen Sie möglicherweise zuerst az login ausführen, um sich zu authentifizieren.

  • Eine Umgebungsvariable mit Ihrer Azure-Abonnement-ID. Verwenden Sie zum Abrufen Ihrer Azure-Abonnement-ID Folgendes:

    az account show --name 'your subscription name' --query id -o tsv
    

    Um den Wert festzulegen, verwenden Sie die Option für Ihre Umgebung.

    setx AZURE_SUBSCRIPTION_ID your-subscription-id
    

    Hinweis

    Wenn Sie nur in der aktuell ausgeführten Konsole auf die Umgebungsvariable zugreifen müssen, legen Sie die Umgebungsvariable mit set anstelle von setx fest.

    Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle ausgeführten Programme neu starten, die die Umgebungsvariablen lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, müssen Sie Visual Studio neu starten, bevor Sie das Beispiel ausführen.

Was ist eine Ressourcengruppe?

Eine Ressourcengruppe ist ein Container, der verwandte Ressourcen für eine Azure-Lösung enthält. Die Ressourcengruppe kann alle Ressourcen für die Lösung oder nur die Ressourcen enthalten, die Sie als Gruppe verwalten möchten. Sie entscheiden in Abhängigkeit davon, was für Ihre Organisation am sinnvollsten ist, wie Sie die Ressourcen den Ressourcengruppen hinzufügen. Im Allgemeinen fügen Sie einer Ressourcengruppe Ressourcen hinzu, die den gleichen Lebenszyklus haben, damit Sie diese einfacher als Gruppe bereitstellen, aktualisieren und löschen können.

In der Ressourcengruppe werden Metadaten zu den Ressourcen gespeichert. Wenn Sie einen Standort für die Ressourcengruppe angeben, legen Sie fest, wo die Metadaten gespeichert werden. Aus Compliancegründen müssen Sie unter Umständen sicherstellen, dass Ihre Daten in einer bestimmten Region gespeichert werden.

Erstellen von Ressourcengruppe

Verwenden Sie zum Erstellen einer Ressourcengruppe ResourceManagementClient.resource_groups.create_or_update.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

rg_result = resource_client.resource_groups.create_or_update(
    "exampleGroup",
    {
        "location": "westus"
    }
)

print(f"Provisioned resource group with ID: {rg_result.id}")

Ressourcengruppen auflisten

Verwenden Sie zum Auflisten der Ressourcengruppen in Ihrem Abonnement ResourceManagementClient.resource_groups.list.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

rg_list = resource_client.resource_groups.list()

for rg in rg_list:
    print(rg.name)

Um eine Ressourcengruppe zu erhalten, verwenden Sie ResourceManagementClient.resource_groups.get und geben den Namen der Ressourcengruppe an.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

rg_result = resource_client.resource_groups.get("exampleGroup")

print(f"Retrieved resource group {rg_result.name} in the {rg_result.location} region with resource ID {rg_result.id}")

Löschen von Ressourcengruppen

Verwenden Sie zum Löschen einer Ressourcengruppe ResourceManagementClient.resource_groups.begin_delete.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

rg_result = resource_client.resource_groups.begin_delete("exampleGroup")

Weitere Informationen dazu, in welcher Reihenfolge Ressourcenlöschungen in Azure Resource Manager durchgeführt werden, finden Sie unter Azure Resource Manager: Löschvorgang von Ressourcengruppen.

Bereitstellen von Ressourcen

Sie können Azure-Ressourcen mithilfe von Python-Klassen oder durch Bereitstellen einer Azure Resource Manager-Vorlage (ARM-Vorlage) bereitstellen.

Bereitstellen von Ressourcen mithilfe von Python-Klassen

Im folgenden Beispiel wird mithilfe von StorageManagementClient.storage_accounts.begin_create ein Speicherkonto erstellt. Der Name des Speicherkontos muss in Azure eindeutig sein.

import os
import random
from azure.identity import AzureCliCredential
from azure.mgmt.storage import StorageManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

random_postfix = ''.join(random.choices('abcdefghijklmnopqrstuvwxyz1234567890', k=13))
storage_account_name = "demostore" + random_postfix

storage_client = StorageManagementClient(credential, subscription_id)

storage_account_result = storage_client.storage_accounts.begin_create(
    "exampleGroup",
    storage_account_name,
    {
        "location": "westus",
        "sku": {
            "name": "Standard_LRS"
        }
    }
)

Bereitstellen von Ressourcen mithilfe einer ARM-Vorlage

Um eine ARM-Vorlage bereitzustellen, verwenden Sie ResourceManagementClient.deployments.begin_create_or_update. Im folgenden Beispiel ist eine lokale Vorlage mit dem Namen storage.json erforderlich.

import os
import json
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.resource.resources.models import DeploymentMode

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

with open("storage.json", "r") as template_file:
    template_body = json.load(template_file)

rg_deployment_result = resource_client.deployments.begin_create_or_update(
    "exampleGroup",
    "exampleDeployment",
    {
        "properties": {
            "template": template_body,
            "parameters": {
                "storagePrefix": {
                    "value": "demostore"
                },
            },
            "mode": DeploymentMode.incremental
        }
    }
)

Das folgende Beispiel zeigt die ARM-Vorlage mit dem Namen storage.json, die Sie bereitstellen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Weitere Informationen zum Bereitstellen einer ARM-Vorlage finden Sie unter Bereitstellen von Ressourcen mit ARM-Vorlagen und Azure CLI.

Ressourcengruppen sperren

Eine Sperre verhindert, dass andere Benutzer in Ihrer Organisation versehentlich wichtige Ressourcen löschen oder ändern.

Verwenden Sie ManagementLockClient.management_locks.create_or_update_at_resource_group_level, um zu verhindern, dass eine Ressourcengruppe und ihre Ressourcen gelöscht werden.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_group_level(
    "exampleGroup",
    "lockGroup",
    {
        "level": "CanNotDelete"
    }
)

Verwenden Sie zum Abrufen der Sperren für eine Ressourcengruppe ManagementLockClient.management_locks.list_at_resource_group_level.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_group_level("exampleGroup", "lockGroup")

print(f"Lock {lock_result.name} applies {lock_result.level} lock")

Verwenden Sie zum Löschen einer Sperre für eine Ressourcengruppe ManagementLockClient.management_locks.delete_at_resource_group_level.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_group_level("exampleGroup", "lockGroup")

Weitere Informationen finden Sie unter Sperren von Ressourcen mit dem Azure-Ressourcen-Manager.

Hinzufügen von Tags zu Ressourcengruppen

Sie können Ressourcengruppen und Ressourcen Tags zuordnen, um sie logisch zu organisieren. Weitere Informationen finden Sie unter Verwenden von Tags zum Organisieren von Azure-Ressourcen.

Exportieren von Ressourcengruppen in Vorlagen

Zur Unterstützung beim Erstellen von ARM-Vorlagen können Sie eine Vorlage aus vorhandenen Ressourcen exportieren. Weitere Informationen finden Sie unter Verwenden des Azure-Portals zum Exportieren einer Vorlage.

Verwalten des Zugriffs auf Ressourcengruppen

Der Zugriff auf Ressourcen in Azure wird mithilfe der rollenbasierten Zugriffssteuerung in Azure (Azure RBAC) verwaltet. Weitere Informationen finden Sie unter Hinzufügen oder Entfernen von Azure-Rollenzuweisungen mithilfe der Azure CLI.

Nächste Schritte