Esempio: Usare le librerie di Azure per creare un gruppo di risorse

Questo esempio illustra come usare le librerie di gestione di Azure SDK in uno script Python per creare un gruppo di risorse. (L'oggetto Il comando equivalente dell'interfaccia della riga di comando di Azure viene fornito più avanti in questo articolo. Se si preferisce usare il portale di Azure, vedere Creare gruppi di risorse.

Se non diversamente specificato, tutti i comandi di questo articolo funzionano allo stesso modo nella shell Bash Linux/macOS e nella shell dei comandi di Windows.

1: Configurare l'ambiente di sviluppo locale

Se non è già stato fatto, configurare un ambiente in cui è possibile eseguire questo codice. Di seguito sono riportate alcuni opzioni:

2: Installare i pacchetti della libreria di Azure

Creare un file denominato requirements.txt con il contenuto seguente:

azure-mgmt-resource
azure-identity

In un terminale o da un prompt dei comandi con l'ambiente virtuale attivato, installare i requisiti:

pip install -r requirements.txt

3: Scrivere codice per creare un gruppo di risorse

Creare un file Python denominato provision_rg.py con il codice seguente. I commenti spiegano i dettagli:

# Import the needed credential and management objects from the libraries.
import os

from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient

# Acquire a credential object using DevaultAzureCredential.
credential = DefaultAzureCredential()

# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)

# Provision the resource group.
rg_result = resource_client.resource_groups.create_or_update(
    "PythonAzureExample-rg", {"location": "centralus"}
)

# Within the ResourceManagementClient is an object named resource_groups,
# which is of class ResourceGroupsOperations, which contains methods like
# create_or_update.
#
# The second parameter to create_or_update here is technically a ResourceGroup
# object. You can create the object directly using ResourceGroup(location=
# LOCATION) or you can express the object as inline JSON as shown here. For
# details, see Inline JSON pattern for object arguments at
# https://video2.skills-academy.com/azure/developer/python/sdk
# /azure-sdk-library-usage-patterns#inline-json-pattern-for-object-arguments

print(
    f"Provisioned resource group {rg_result.name} in the {rg_result.location} region"
)

# The return value is another ResourceGroup object with all the details of the
# new group. In this case the call is synchronous: the resource group has been
# provisioned by the time the call returns.

# To update the resource group, repeat the call with different properties, such
# as tags:
rg_result = resource_client.resource_groups.create_or_update(
    "PythonAzureExample-rg",
    {
        "location": "centralus",
        "tags": {"environment": "test", "department": "tech"},
    },
)

print(f"Updated resource group {rg_result.name} with tags")

# Optional lines to delete the resource group. begin_delete is asynchronous.
# poller = resource_client.resource_groups.begin_delete(rg_result.name)
# result = poller.result()

Autenticazione nel codice

Più avanti in questo articolo si accede ad Azure con l'interfaccia della riga di comando di Azure per eseguire il codice di esempio. Se l'account dispone delle autorizzazioni per creare ed elencare i gruppi di risorse nella sottoscrizione di Azure, il codice verrà eseguito correttamente.

Per usare questo codice in uno script di produzione, è possibile impostare le variabili di ambiente per usare un metodo basato su entità servizio per l'autenticazione. Per altre informazioni, vedere Come autenticare le app Python con i servizi di Azure. È necessario assicurarsi che l'entità servizio disponga di autorizzazioni sufficienti per creare ed elencare i gruppi di risorse nella sottoscrizione assegnandole un ruolo appropriato in Azure, ad esempio il ruolo Collaboratore nella sottoscrizione.

4: Eseguire lo script

  1. Se non è già stato fatto, accedere ad Azure usando l'interfaccia della riga di comando di Azure:

    az login
    
  2. Impostare la AZURE_SUBSCRIPTION_ID variabile di ambiente sull'ID sottoscrizione. È possibile eseguire il comando az account show e ottenere l'ID id sottoscrizione dalla proprietà nell'output:

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Eseguire lo script:

    python provision_rg.py
    

5: Verificare il gruppo di risorse

È possibile verificare che il gruppo esista tramite il portale di Azure o l'interfaccia della riga di comando di Azure.

  • Portale di Azure: aprire il portale di Azure, selezionare Gruppi di risorse e verificare che il gruppo sia presente nell'elenco. Se il portale è già aperto, usare il comando Aggiorna per aggiornare l'elenco.

  • Interfaccia della riga di comando di Azure: usare il comando az group show :

    az group show -n PythonAzureExample-rg
    

6: Pulire le risorse

Eseguire il comando az group delete se non è necessario mantenere il gruppo di risorse creato in questo esempio. I gruppi di risorse non comportano addebiti in corso nella sottoscrizione, ma le risorse nel gruppo di risorse potrebbero continuare a comportare addebiti. È consigliabile pulire qualsiasi gruppo che non si usa attivamente. Con l'argomento --no-wait, il comando restituisce immediatamente il risultato invece di attendere il completamento dell'operazione.

az group delete -n PythonAzureExample-rg  --no-wait

Per eliminare un gruppo di risorse dal codice, è anche possibile usare il metodo ResourceManagementClient.resource_groups.begin_delete. Il codice commentato nella parte inferiore dello script in questo articolo illustra l'utilizzo.

Per riferimento: comando equivalente dell'interfaccia della riga di comando di Azure

Il comando az group create dell'interfaccia della riga di comando di Azure seguente crea un gruppo di risorse con tag come lo script Python:

az group create -n PythonAzureExample-rg -l centralus --tags "department=tech" "environment=test"

Vedi anche