Správa skupin prostředků Azure pomocí Pythonu

Naučte se používat Python s Azure Resource Manager ke správě skupin prostředků Azure.

Požadavky

  • Nainstalovaný Python 3.7 nebo novější. Pokud chcete nainstalovat nejnovější verzi, podívejte se na Python.org

  • Ve vašem virtuálním prostředí jsou nainstalované následující balíčky knihovny Azure pro Python. Pokud chcete nainstalovat některý z balíčků, použijte pip install {package-name}

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

    Pokud už máte ve virtuálním prostředí nainstalované starší verze těchto balíčků, možná je budete muset aktualizovat pomocí pip install --upgrade {package-name}

  • Příklady v tomto článku používají ověřování na základě rozhraní příkazového řádku (AzureCliCredential). V závislosti na vašem prostředí možná budete muset k ověření nejprve spustit příkaz az login .

  • Proměnná prostředí s ID vašeho předplatného Azure. K získání ID předplatného Azure použijte:

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

    K nastavení hodnoty použijte možnost pro vaše prostředí.

    setx AZURE_SUBSCRIPTION_ID your-subscription-id
    

    Poznámka

    Pokud potřebujete získat přístup pouze k proměnné prostředí v aktuálně spuštěné konzole, můžete proměnnou prostředí nastavit pomocí setxproměnné set místo .

    Po přidání proměnných prostředí může být nutné restartovat všechny spuštěné programy, které budou potřebovat přečíst proměnnou prostředí, včetně okna konzoly. Pokud například jako editor používáte Visual Studio, před spuštěním příkladu visual studio restartujte.

Co je skupina prostředků?

Skupina prostředků je kontejner, který uchovává související prostředky pro řešení Azure. Skupina prostředků může zahrnovat všechny prostředky pro řešení nebo pouze ty prostředky, které chcete spravovat jako skupinu. O tom, jak chcete přidat prostředky do skupin prostředků, rozhodujete na základě toho, co je pro vaši organizaci nejvhodnější. Obecně platí, že prostředky, které sdílejí stejný životní cyklus, přidejte do stejné skupiny prostředků, abyste je mohli snadno nasadit, aktualizovat a odstranit jako skupinu.

Skupina prostředků ukládá metadata o prostředcích. Když zadáte umístění pro skupinu prostředků, určujete, kde se tato metadata ukládají. Z důvodu dodržování předpisů může být nutné zajistit, aby se data ukládala v určité oblasti.

Vytvoření skupin prostředků

Pokud chcete vytvořit skupinu prostředků, použijte 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}")

Výpis skupin prostředků

Pokud chcete zobrazit seznam skupin prostředků ve vašem předplatném, použijte 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)

Pokud chcete získat jednu skupinu prostředků, použijte ResourceManagementClient.resource_groups.get a zadejte název skupiny prostředků.

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

Odstranění skupin prostředků

Pokud chcete odstranit skupinu prostředků, použijte 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")

Další informace o tom, jak Azure Resource Manager objednává odstranění prostředků, najdete v tématu Odstranění skupiny prostředků Azure Resource Manager.

Nasazení prostředků

Prostředky Azure můžete nasadit pomocí tříd Pythonu nebo nasazením šablony Azure Resource Manager (šablony ARM).

Nasazení prostředků pomocí tříd Pythonu

Následující příklad vytvoří účet úložiště pomocí StorageManagementClient.storage_accounts.begin_create. Název účtu úložiště musí být v rámci Azure jedinečný.

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

Nasazení prostředků pomocí šablony ARM

K nasazení šablony ARM použijte ResourceManagementClient.deployments.begin_create_or_update. Následující příklad vyžaduje místní šablonu s názvem storage.json.

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

Následující příklad ukazuje šablonu ARM s názvem storage.json , kterou nasazujete:

{
  "$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
      }
    }
  ]
}

Další informace o nasazení šablony ARM najdete v tématu Nasazení prostředků pomocí šablon ARM a Azure CLI.

Uzamčení skupin prostředků

Uzamykání zabraňuje tomu, aby ostatní uživatelé ve vaší organizaci omylem odstranili nebo změnili důležité prostředky.

Pokud chcete zabránit odstranění skupiny prostředků a jejích prostředků, použijte ManagementLockClient.management_locks.create_or_update_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.create_or_update_at_resource_group_level(
    "exampleGroup",
    "lockGroup",
    {
        "level": "CanNotDelete"
    }
)

Pokud chcete získat zámky pro skupinu prostředků, použijte 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")

Pokud chcete odstranit zámek skupiny prostředků, použijte 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")

Další informace najdete v tématu Zamknutí prostředků pomocí Azure Resource Manageru.

Označení skupin prostředků

Ke skupinám prostředků a prostředkům můžete použít značky, abyste mohli prostředky logicky uspořádat. Informace najdete v tématu Použití značek k uspořádání prostředků Azure.

Export skupin prostředků do šablon

Pokud chcete pomoct s vytvářením šablon ARM, můžete šablonu exportovat z existujících prostředků. Další informace najdete v tématu Použití Azure Portal k exportu šablony.

Správa přístupu ke skupinám prostředků

Řízení přístupu na základě role v Azure (Azure RBAC) je způsob, jakým spravujete přístup k prostředkům v Azure. Další informace najdete v tématu Přidání nebo odebrání přiřazení rolí Azure pomocí Azure CLI.

Další kroky