Excluir VMs de la Azure Automation Account con PowerShell
Azure Automation permite ejecutar de manera automatizada procesos y flujos para, entre otras cosas, controlar costos en Azure. Una de las tareas más comunes es definir horas de actividad en ciertas VMs para así mantener en ejecución las cargas de trabajo cuando realmente sea necesario, aunque en ciertos casos necesitamos hacer exepciones o exclusiones.
Azure Automation
Automation es un servicio de Azure que nos ofrece la posibilidad de ahorrar costos y ganar tiempo, ya sea por automatizar procesos repetitivos y manuales como por controlar la ejecución de servicios cuando realmente sea necesario. Ya hemos hablado que es posible trabajar con PowerShell para realizar estas tareas.
En el problema planteado en el post, tenemos resuelto el encendido y apagado de ciertas VMs (las que pertenecen a un Resource Group en particular) y nos encontramos con la necesidad de excluír una de ellas, para que no aplique esta configuración.
Automation variables
Lo primero que debemos hacer obtener la información necesaria de la automation account. Para ello tenemos el siguiente cmdlet: Get-AzAutomationAccount
Para obtener la lista de VMs excluídas debemos ejecutar el siguiente cmdlet, tomando en cuenta la variable External_ExcludeVMNames
. La misma define la lista de Vms que no van a ser consideradas en la ejecución del runbook:
Obviamente que el resultado no contiene valores, ya que no se han agregado anteriormente.
Con la información anterior estamos en condiciones de agregar a la lista (ahora vacía) de VMs a excluír, la VM a la que queremos que no aplique el runbook de encendido/apagado:
Listo!
Para la siguiente ejecución del runbook, se va a omitir la VM agregada en la variable External_ExcludeVMNames
.
Quitar VMs de la exclusión
En caso que nos encontremos con la necesidad de quitar VMs de esta lista, para que la solución las encienda o apague, necesitamos modificar el string de la variable anteriormente modificada, llamada External_ExcludeVMNames.
A modo de ejemplo vamos a contemplar que la lista definida contenía las siguientes VMs:
Donde se ve que la lista de VMs es “azDemoVM, vm-testing, w2019test”, para quitar la VM vm-testing de la lista de excluídas se deberá ejecutar lo siguiente:
También es posible ejecutar el comando Set-AzAutomationVariable con todos los parámetros necesarios:
Happy scripting!
Comments