Pide tu presupuesto ya!
Como administrador de Azure, una de sus responsabilidades clave es administrar los recursos de manera eficiente. Una tarea común es iniciar y detener máquinas virtuales según un cronograma para reducir costos. Si bien puedes hacer esto manualmente, la automatización es el camino a seguir para una ejecución consistente y sin errores. En esta publicación, explicaremos la creación de un runbook de Azure Automation para administrar los estados de energía de las máquinas virtuales.
Comencemos creando un script de PowerShell que luego convertiremos en un runbook. Este script realizará una acción (Iniciar o Detener), un nombre de grupo de recursos y una lista de nombres de VM como parámetros:
param (
[Parameter(Mandatory)]
[ValidateSet('Start', 'Stop')]
[string]$Action,
[Parameter(Mandatory)]
[string]$ResourceGroupName,
[Parameter(Mandatory)]
[string[]]$VMName
)
$ErrorActionPreference="Stop"
foreach ($name in $VMName) {
try {
if ($Action -eq 'Start') {
Start-AzVM -ResourceGroupName $ResourceGroupName -Name $name
Write-Output "$name started successfully."
} else {
Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $name -Force
Write-Output "$name stopped successfully."
}
}
catch {
Write-Error "Failed to $Action $name. Error: $_"
}
}
Guarde este script en un archivo, por ejemplo, `C:\runbook_azure_vm_schedule.ps1`.
Antes de convertir esto en un runbook, probémoslo localmente. Primero, verifique el estado actual de nuestras VM:
'SRV2','LINUX' | % { Get-AzVm -Name $_ -Status } | select name,powerstate
Ahora, detengamos estas máquinas virtuales usando nuestro script:
C:\runbook_azure_vm_schedule.ps1 -Action Stop -ResourceGroupName 'psforsysadmins' -VMName 'SRV2','LINUX'
Una vez que se complete el script, verifique nuevamente los estados de la VM:
'SRV2','LINUX' | % { Get-AzVm -Name $_ -Status } | select name,powerstate
Debería ver que las máquinas virtuales ahora están desasignadas. ¡Excelente! Nuestro script funciona localmente.
Ahora, creemos un runbook en Azure Automation. Usaremos la extensión VS Code de Azure Automation para esto.
1. Abra VS Code y navegue hasta la extensión de Azure.
2. Busque su cuenta de automatización en su suscripción.
3. Haga clic derecho en “Runbooks” y seleccione “Crear runbook”.
4. Asigne al runbook el nombre “ManageVMState” y elija PowerShell 7.2 como tipo.
Una vez creado el runbook, copie su script en el nuevo archivo que se abre VS Code.
Antes de publicar, probemos el runbook localmente:
1. Haga clic derecho en el runbook y seleccione “Ejecutar local”.
2. Ingrese los parámetros cuando se le solicite:
-Action 'Stop' -ResourceGroupName 'psforsysadmins' -VMName @('SRV2','LINUX')
Si tiene éxito, verá un resultado que indica que las máquinas virtuales se detuvieron.
Ahora, publiquemos el runbook en Azure:
1. Haga clic derecho en el runbook y seleccione “Publicar Runbook”.
2. Confirme cuando se le solicite.
Para ejecutar el runbook en Azure:
1. Haga clic derecho en el runbook y seleccione “Iniciar trabajo de automatización”.
2. Seleccione “Azure” como entorno de ejecución.
3. Ingrese los parámetros cuando se le solicite:
ResourceGroupName: psforsysadmins
Action: stop
VMNames: ['SRV2','LINUX']
Nota: Para matrices en runbooks de Azure Automation, use la sintaxis de matriz JSON (p. ej., [‘VM1′,’VM2’]) en lugar de la sintaxis de matriz de PowerShell.
Si encuentra un error como “No se encontró ninguna suscripción en este contexto”, significa que el runbook no está autenticado para acceder y controlar las máquinas virtuales cuando se ejecuta en Azure. Este es un problema común al pasar de las pruebas locales a la ejecución de Azure.
Para resolver esto, deberá agregar autenticación a su secuencia de comandos mediante una entidad de servicio o una identidad administrada. Cubriremos eso en una publicación futura, ¡así que estad atentos!
Crear un runbook de Azure Automation para administrar los estados de energía de las máquinas virtuales es una forma eficaz de optimizar el uso de recursos de Azure. Al programar estos runbooks, puede garantizar que las máquinas virtuales solo se ejecuten cuando sea necesario, lo que podría ahorrar costos significativos.
Recuerde, si bien hemos creado un runbook funcional, todavía hay más que considerar, como el manejo adecuado de errores, el registro y, lo más importante, la autenticación segura. En nuestra próxima publicación, profundizaremos en estos temas avanzados para crear una solución de administración de VM lista para producción.
¡Feliz automatización!
Leave a comment