Ejercicio: Uso de copy para reducir la repetición
En este ejercicio final, seguirá trabajando con cuentas de almacenamiento. Esta vez, usa la construcción copy
para aprovisionar varias cuentas de almacenamiento a partir de una misma definición.
La construcción Copy
proporciona una única ubicación central que debe actualizar cuando cambien los requisitos.
Creación de la plantilla de Resource Manager
Aquí crearemos una plantilla de Azure Resource Manager (ARM) que define un recurso de la cuenta de almacenamiento. La plantilla usa copy
para crear versiones similares del mismo recurso un determinado número de veces.
En Visual Studio Code, cree un archivo llamado copy.json en el mismo directorio que contiene azuredeploy.json.
Agregue este contenido a copy.json:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageCount": { "type": "int", "defaultValue": 1, "metadata": { "description": "the number of storage accounts copies being deployed" } }, "storageAccountName": { "type": "string", "defaultValue": "storage", "metadata": { "description": "the name of the storage account" } } }, "functions": [], "variables": {}, "resources": [ { "name": "[concat(parameters('storageAccountName'), copyIndex())]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "storageaccount1" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Premium_LRS", "tier": "Premium" }, "copy": { "name": "storagecopy", "count": "[parameters('storageCount')]" } } ], "outputs": {} }
El parámetro storageCount
define el número de copias que se van a crear.
En resources
, anote el recurso de la cuenta de almacenamiento. Para que el nombre de la cuenta de almacenamiento sea único, la plantilla usa copyIndex()
para anexar el índice actual al nombre de la cuenta de almacenamiento.
En la sección copy
se lee el número de copias que se van a crear a partir del parámetro storageCount
.
Implementación de la plantilla
En este caso, implemente la plantilla como lo hizo anteriormente. En el paso de implementación se aprovisionan dos cuentas de almacenamiento similares.
Cree una variable de PowerShell que contenga el nombre de la cuenta de almacenamiento.
$STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
Ejecute el comando
New-AzResourceGroupDeployment
siguiente para implementar la plantilla:New-AzResourceGroupDeployment ` -TemplateFile "./copy.json" ` -storageAccountName $STORAGE_ACCT_NAME ` -storageCount 2
En este caso,
storageCount
se establece en2
para aprovisionar dos cuentas de almacenamiento.
Comprobar la implementación
Aunque la salida muestra que se crearon dos cuentas de almacenamiento, aquí se ejecuta el comando Get-AzResource
para centrarse en los recursos de salida.
Ejecute el comando Get-AzResource
siguiente para asegurarse de que se implementaron los recursos:
Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId
El argumento tailwindsa*
especifica que solo se muestren los identificadores que coincidan con el prefijo de nombre que asignó a los recursos.
La salida será similar a esta:
Name ResourceId
---- ----------
tailwindsa1852777810 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
tailwindsa1852777811 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
En este ejemplo:
- tailwindsa185277781 es el nombre base que se generó para la cuenta de almacenamiento (
"tailwindsa" + Get-Random -Count 1
). - tailwindsa1852777810 (el nombre base más "0") es la primera cuenta de almacenamiento.
- tailwindsa1852777811 (el nombre base más "1") es la segunda cuenta de almacenamiento.
¡Excelente trabajo! A medida que cambien sus necesidades, como el nivel de rendimiento que necesita, puede modificar las definiciones de recursos desde una sola ubicación.
Limpieza
El espacio aislado limpia los recursos automáticamente cuando haya terminado con este módulo.
Al trabajar en una suscripción propia, se recomienda identificar al final de un proyecto si aún necesita los recursos creados. Los recursos que dejas en ejecución pueden costar dinero. Puede eliminar los recursos de forma individual o eliminar el grupo de recursos para eliminar todo el conjunto de recursos.
Creación de la plantilla de Resource Manager
Aquí crearemos una plantilla de Azure Resource Manager (ARM) que define un recurso de la cuenta de almacenamiento. La plantilla usa copy
para crear versiones similares del mismo recurso un determinado número de veces.
En Visual Studio Code, cree un archivo llamado copy.json en el mismo directorio que contiene azuredeploy.json.
Agregue este contenido a copy.json:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageCount": { "type": "int", "defaultValue": 1, "metadata": { "description": "the number of storage accounts being deployed" } }, "storageAccountName": { "type": "string", "defaultValue": "storage", "metadata": { "description": "the name of the storage account" } } }, "functions": [], "variables": {}, "resources": [ { "name": "[concat(parameters('storageAccountName'), copyIndex())]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "storageaccount1" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Premium_LRS", "tier": "Premium" }, "copy": { "name": "storagecopy", "count": "[parameters('storageCount')]" } } ], "outputs": {} }
El parámetro storageCount
define el número de copias que se van a crear.
En resources
, anote el recurso de la cuenta de almacenamiento. Para que el nombre de la cuenta de almacenamiento sea único, la plantilla usa copyIndex()
para anexar el índice actual al nombre de la cuenta de almacenamiento.
En la sección copy
se lee el número de copias que se van a crear a partir del parámetro storageCount
.
Implementación de la plantilla
En este caso, implemente la plantilla como lo hizo anteriormente. En el paso de implementación se aprovisionan dos cuentas de almacenamiento similares.
Cree una variable de Bash que contenga el nombre de la cuenta de almacenamiento.
STORAGE_ACCT_NAME=tailwindsa$RANDOM
Ejecute el comando
az deployment group create
siguiente para implementar la plantilla:az deployment group create \ --template-file copy.json \ --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
En este caso,
storageCount
se establece en2
para aprovisionar dos cuentas de almacenamiento.
Comprobar la implementación
Aunque la salida muestra que se crearon dos cuentas de almacenamiento, aquí se ejecuta el comando az deployment group show
para centrarse en los recursos de salida.
Ejecute el comando az deployment group show
siguiente para mostrar los detalles de la implementación:
az deployment group show \
--name copy \
--query "properties.outputResources[].id" \
--output tsv
El argumento --query
especifica que solo se muestren los identificadores de los recursos de salida.
La salida será similar a esta:
/subscriptions/4b328dc1-56b1-4031-89b0-c0898204f8a5/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9820
/subscriptions/4b328dc1-56b1-4031-89b0-c0898204f8a5/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9821
En este ejemplo:
- tailwindsa982 es el nombre base que se generó para la cuenta de almacenamiento (
tailwindsa$RANDOM
). - tailwindsa9820 (el nombre base más "0") es la primera cuenta de almacenamiento.
- tailwindsa9821 (el nombre base más "1") es la segunda cuenta de almacenamiento.
¡Excelente trabajo! A medida que cambien sus necesidades, como el nivel de rendimiento que necesita, puede modificar las definiciones de recursos desde una sola ubicación.
Limpieza
El espacio aislado limpia los recursos automáticamente cuando haya terminado con este módulo.
Al trabajar en una suscripción propia, se recomienda identificar al final de un proyecto si aún necesita los recursos creados. Los recursos que dejas en ejecución pueden costar dinero. Puede eliminar los recursos de forma individual o eliminar el grupo de recursos para eliminar todo el conjunto de recursos.