Introducción
En este artículo, exploraremos un script de PowerShell que permite actualizar etiquetas en un grupo de recursos y en todos los recursos dentro de dicho grupo en Azure. A continuación, detallaremos cómo funciona cada parte del script, qué hace cada comando y cómo puedes adaptarlo a tus necesidades.Objetivo del script
Este script tiene como objetivo actualizar o agregar una etiqueta específica (en este caso, «ID») con un valor definido en un grupo de recursos y en todos los recursos dentro de ese grupo. Esto es útil cuando necesitas mantener una estructura de etiquetado uniforme y coherente a través de múltiples recursos en un grupo de Azure.
Requisitos previos
Antes de ejecutar este script, asegúrate de que:
- Tienes instalado el módulo
Az
de PowerShell, que es necesario para interactuar con Azure. - Estás autenticado en tu cuenta de Azure utilizando
Connect-AzAccount
.
Si no tienes el módulo Az
instalado, puedes hacerlo con el siguiente comando:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Desglosando el script
1. Definición de variables
El script comienza con la definición de tres variables principales:
$resourceGroupName = "DEV-REDORBITA-01" # Nombre del grupo de recursos
$newTagValue = "XXXXXXXXX" # Nuevo valor para la etiqueta ID
$tagName = "ID" # Nombre de la etiqueta
- $resourceGroupName: Aquí defines el nombre del grupo de recursos donde deseas actualizar las etiquetas. En este caso, el grupo de recursos se llama
"DEV-REDORBITA-01"
, pero puedes modificarlo según tu entorno.
- $newTagValue: Este es el valor que se asignará a la etiqueta. En el ejemplo, está definido como
"XXXXXXXXX"
, pero deberías reemplazarlo con el valor que deseas asignar a la etiqueta en tus recursos.
- $tagName: Es el nombre de la etiqueta que se actualizará o agregará. En este caso, la etiqueta se llama
"ID"
, pero puedes ajustarlo a tus necesidades.
2. Actualización de la etiqueta en el grupo de recursos
Una vez que las variables están definidas, el script procede a actualizar la etiqueta en el grupo de recursos.
Write-Output "Actualizando etiqueta en el grupo de recursos $resourceGroupName..."
$resourceGroup = Get-AzResourceGroup -Name $resourceGroupName
$resourceGroup.Tags[$tagName] = $newTagValue
Set-AzResourceGroup -Name $resourceGroupName -Tag $resourceGroup.Tags
- Get-AzResourceGroup -Name $resourceGroupName: Este comando obtiene la información del grupo de recursos que hemos especificado.
- $resourceGroup.Tags[$tagName] = $newTagValue: Aquí, se asigna el valor de la etiqueta definida por
$tagName
con el nuevo valor$newTagValue
al grupo de recursos.
- Set-AzResourceGroup -Name $resourceGroupName -Tag $resourceGroup.Tags: Este comando aplica los cambios de las etiquetas en el grupo de recursos.
El resultado será que la etiqueta "ID"
en el grupo de recursos será actualizada con el valor "XXXXXXXXX"
.
3. Obtener todos los recursos dentro del grupo de recursos
El siguiente paso es obtener todos los recursos dentro del grupo de recursos especificado:
Write-Output "Obteniendo todos los recursos dentro del grupo $resourceGroupName..."
$resources = Get-AzResource -ResourceGroupName $resourceGroupName
- Get-AzResource -ResourceGroupName $resourceGroupName: Este comando obtiene todos los recursos que pertenecen al grupo de recursos definido en
$resourceGroupName
.
4. Actualizar etiquetas en cada recurso dentro del grupo de recursos
Una vez obtenidos todos los recursos, el script recorre cada uno de ellos y actualiza las etiquetas:
foreach ($resource in $resources) {
Write-Output "Actualizando etiqueta en el recurso $($resource.Name)..."
$resourceTags = $resource.Tags
if (-not $resourceTags) {
$resourceTags = @{} # Si el recurso no tiene etiquetas, crear un diccionario vacío
}
$resourceTags[$tagName] = $newTagValue
Set-AzResource -ResourceId $resource.ResourceId -Tag $resourceTags -Force
}
- foreach ($resource in $resources): El script recorre todos los recursos obtenidos previamente.
- $resource.Tags: Obtiene las etiquetas actuales del recurso.
- if (-not $resourceTags): Si el recurso no tiene etiquetas, se inicializa un diccionario vacío.
- $resourceTags[$tagName] = $newTagValue: Asigna el nuevo valor de la etiqueta
"ID"
al recurso. - Set-AzResource -ResourceId $resource.ResourceId -Tag $resourceTags -Force: Este comando aplica las nuevas etiquetas al recurso.
5. Finalización
Una vez que todas las etiquetas han sido actualizadas en el grupo de recursos y en todos los recursos dentro de él, se muestra un mensaje de confirmación:
Write-Output "Actualización de etiquetas completada."
Este es el mensaje final que indica que el script ha completado su ejecución y todas las etiquetas han sido actualizadas correctamente.
Codigo completo
#Connect-AzAccount
# Variables
$resourceGroupName = "DEV-REDORBITA-01"
$newTagValue = "XXXXXX"
$tagName = "ID"
Write-Output "Actualizando etiqueta en el grupo de recursos $resourceGroupName..."
$resourceGroup = Get-AzResourceGroup -Name $resourceGroupName
$resourceGroup.Tags[$tagName] = $newTagValue
Set-AzResourceGroup -Name $resourceGroupName -Tag $resourceGroup.Tags
Write-Output "Obteniendo todos los recursos dentro del grupo $resourceGroupName..."
$resources = Get-AzResource -ResourceGroupName $resourceGroupName
foreach ($resource in $resources) {
Write-Output "Actualizando etiqueta en el recurso $($resource.Name)..."
$resourceTags = $resource.Tags
if (-not $resourceTags) {
$resourceTags = @{}
}
$resourceTags[$tagName] = $newTagValue
Set-AzResource -ResourceId $resource.ResourceId -Tag $resourceTags -Force
}
Write-Output "Actualización de etiquetas completada."
:wq!