Actualización masiva de tags en Azure utilizando PowerShell

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:

  1. Tienes instalado el módulo Az de PowerShell, que es necesario para interactuar con Azure.
  2. 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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *