Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Obtenga información sobre cómo utilizar Python con Azure Resource Manager para administrar los grupos de recursos de Azure.
Requisitos previos
Python 3.8 o posterior instalado. Para instalar la versión más reciente, consulte Python.org.
Los siguientes paquetes de biblioteca de Azure para Python instalados en el entorno virtual. Para instalar cualquiera de los paquetes, use
pip install {package-name}
:- azure-identity
- azure-mgmt-resource
- azure-mgmt-storage
Si ya tiene versiones anteriores de estos paquetes instalados en el entorno virtual, es posible que tenga que actualizarlas con
pip install --upgrade {package-name}
.En los ejemplos de este artículo se usa la autenticación basada en la CLI (
AzureCliCredential
). En función de su entorno, es posible que tenga que ejecutaraz login
primero para autenticar.Variable de entorno con el identificador de suscripción de Azure. Para obtener el identificador de suscripción de Azure, use:
az account show --name 'your subscription name' --query id -o tsv
Para establecer el valor, use la opción para su entorno.
setx AZURE_SUBSCRIPTION_ID your-subscription-id
Nota:
Si solo necesita acceder a la variable de entorno en la consola en ejecución actual, establezca la variable de entorno con
set
en lugar desetx
.Después de agregar las variables de entorno, es posible que tenga que reiniciar los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
¿Qué es un grupo de recursos?
Un grupo de recursos es un contenedor que almacena los recursos relacionados con una solución de Azure. El grupo de recursos puede incluir todos los recursos de la solución o solo aquellos que se desean administrar como grupo. Decida cómo agregar recursos a grupos de recursos en función de lo que tenga más sentido para su organización. Por lo general, se recomienda agregar recursos que compartan el mismo ciclo de vida al mismo grupo de recursos para que los pueda implementar, actualizar y eliminar con facilidad como un grupo.
Los grupos de recursos almacenan metadatos acerca de los recursos. Al especificar la ubicación del grupo de recursos, se especifica el lugar en que dichos metadatos se almacenan. Por motivos de compatibilidad, es posible que deba asegurarse de que los datos se almacenan en una región concreta.
Crear grupos de recursos
Para crear un grupo de recursos, use 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}")
Enumeración de grupos de recursos
Para enumerar los grupos de recursos de su suscripción, use 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)
Para obtener un grupo de recursos, utilice ResourceManagementClient.resource_groups.get y proporcione el nombre del grupo de recursos.
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}")
Eliminación de grupos de recursos
Para eliminar un grupo de recursos, use 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.begin_delete("exampleGroup")
Para obtener más información sobre cómo ordena Azure Resource Manager la eliminación de recursos, consulte Eliminación del grupo de recursos en Azure Resource Manager.
Implementación de recursos
Puede implementar recursos de Azure usando las clases de Python o implementando una plantilla de Azure Resource Manager (plantilla de ARM).
Implementación de recursos mediante clases de Python
En el ejemplo siguiente se crea una cuenta de almacenamiento mediante StorageManagementClient.storage_accounts.begin_create. El nombre para la cuenta de almacenamiento debe ser único en Azure.
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"
}
}
)
Implementación de recursos mediante una plantilla de ARM
Para implementar una plantilla de ARM, use ResourceManagementClient.deployments.begin_create_or_update. En el ejemplo siguiente se requiere una plantilla local denominada 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
}
}
)
En el ejemplo siguiente se muestra la plantilla de ARM denominada storage.json
que se va a implementar:
{
"$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
}
}
]
}
Para obtener más información sobre la implementación de una plantilla de ARM, consulte Implementación de recursos con las plantillas de ARM y la CLI de Azure.
Bloqueo de grupos de recursos
Los bloqueos impiden que otros usuarios de la organización eliminen o modifiquen de forma accidental recursos críticos.
Para evitar que se elimine un grupo de recursos y sus recursos, use 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"
}
)
Para obtener los bloqueo de un grupo de recursos, use 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_result = lock_client.management_locks.get_at_resource_group_level("exampleGroup", "lockGroup")
print(f"Lock {lock_result.name} applies {lock_result.level} lock")
Para eliminar un bloqueo en un grupo de recursos, use 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")
Para obtener más información, consulte Bloqueo de recursos con el Administrador de recursos de Azure.
Etiquetado de grupos de recursos
Puede aplicar etiquetas a los recursos y grupos de recursos para organizar de manera lógica los recursos. Para obtener más información, vea Uso de etiquetas para organizar los recursos de Azure.
Exportación de grupos de recursos a plantillas
Para ayudar con la creación de plantillas de ARM, puede exportar una plantilla desde los recursos existentes. Para más información, consulte Uso de Azure Portal para exportar una plantilla.
Administración del acceso a los grupos de recursos
El control de acceso basado en roles (RBAC) de Azure es la forma en la que se administra el acceso a los recursos de Azure. Para más información, consulte Incorporación o eliminación de asignaciones de roles de Azure mediante la CLI de Azure.
Pasos siguientes
- Para obtener información sobre Azure Resource Manager, consulte Información general de Azure Resource Manager.
- Para más información sobre las opciones de autenticación, consulte Autenticación de aplicaciones de Python en servicios de Azure mediante el SDK de Azure para Python.