Partager via


Exemple : Utilisez les bibliothèques Azure pour créer un groupe de ressources

Cet exemple montre comment utiliser les bibliothèques de gestion Azure SDK dans un script Python pour créer un groupe de ressources. (La Commande CLI Azure équivalente est donnée plus loin dans cet article. Si vous préférez utiliser le portail Azure, veuillez consulter la section Créer des groupes de ressources).

Sauf indication contraire, toutes les commandes de cet article fonctionnent de la même façon dans les interpréteurs de commandes Windows et bash Linux/macOS.

1 : Configurez votre environnement de développement local

Si vous ne l’avez pas encore fait, configurez un environnement où vous pouvez exécuter ce code. Voici quelques options possibles :

2 : Installez les packages de bibliothèque Azure

Créez un fichier nommé requirements.txt avec le contenu suivant :

azure-mgmt-resource
azure-identity

Dans un terminal ou une invite de commandes avec l’environnement virtuel activé, installez les éléments requis :

pip install -r requirements.txt

3 : Écrivez du code pour créer un groupe de ressources

Créez un fichier Python nommé provision_rg.py avec le code suivant. Les commentaires expliquent les détails :

# 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://learn.microsoft.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()

Authentification dans le code

Plus loin dans cet article, vous vous connecterez à Azure avec l’Azure CLI pour exécuter le code d’exemple. Si votre compte a les permissions pour créer et lister des groupes de ressources dans votre abonnement Azure, le code s’exécutera avec succès.

Pour utiliser un tel code dans un script de production, vous pouvez définir des variables d’environnement pour utiliser une méthode d’authentification basée sur un principal de service. Pour en savoir plus, veuillez consulter la section Comment authentifier les applications Python avec les services Azure. Vous devez vous assurer que le principal de service dispose de permissions suffisantes pour créer et lister des groupes de ressources dans votre abonnement en lui attribuant un rôle approprié dans Azure; par exemple, le rôle de Contributeur sur votre abonnement.

4 : Exécutez le script.

  1. Si ce n’est déjà fait, connectez-vous à Azure en utilisant l’Azure CLI :

    az login
    
  2. Définissez la variable d’environnement AZURE_SUBSCRIPTION_ID à votre ID d’abonnement. (Vous pouvez exécuter la commande az account show et obtenir votre ID d’abonnement à partir de la propriété id dans la sortie) :

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Exécutez le script :

    python provision_rg.py
    

5 : Vérifiez le groupe de ressources

Vous pouvez vérifier que le groupe existe à l’aide du Portail Azure ou d’Azure CLI.

  • Portail Azure : ouvrez le Portail Azure, sélectionnez Groupes de ressources, puis vérifiez que le groupe figure dans la liste. Si vous avez déjà ouvert le portail, utilisez la commande Refresh pour mettre à jour la liste.

  • CLI Azure : utilisez la commande az group show :

    az group show -n PythonAzureExample-rg
    

6 : Nettoyez les ressources

Exécutez la commande az group delete si vous n’avez pas besoin de conserver le groupe de ressources créé dans cet exemple. Les groupes de ressources n’entraînent aucun frais continu dans votre abonnement, mais les ressources du groupe de ressources peuvent continuer à entraîner des frais. Il est conseillé de nettoyer tout groupe que vous n’utilisez pas activement. L’argument --no-wait permet à la commande de retourner immédiatement un résultat au lieu d’attendre que l’opération se termine.

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

Vous pouvez également utiliser la méthode ResourceManagementClient.resource_groups.begin_delete pour supprimer un groupe de ressources du code. Le code commenté en bas du script de cet article montre l’utilisation.

Pour référence : commande CLI Azure équivalente

La commande CLI Azure suivante az group create crée un groupe de ressources avec des étiquettes comme le script Python :

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

Voir aussi