Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 2)
En esta segunda y última parte de la entrada seguiremos justo donde lo dejamos en la anterior y añadiremos un poco más de funcionalidad a nuestro script buscador de máquinas virtuales fuera de backup. Concretamente veremos cómo gestionar excepciones y cómo enviar notificaciones de correo periódicas.
- Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 1).
- Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 2).
En la entrada anterior nos quedamos con un pequeño script con el que ya conseguíamos sacar las máquinas virtuales sin backup pero poco más:
|
|
Gestionando las excepciones
Tarde o temprano utilizando este script os encontraréis con la situación en la que se reporta una máquina virtual fuera de backup que realmente debería estarlo, ya sea porque es una máquina de test, una demo o cualquier otra situación. En esta parte vamos a añadir de una forma extremadamente sencilla un archivo de excepciones donde iremos añadiendo el nombre de dichas máquinas virtuales fuera de backup.
Lo primero que haremos será guardar nuestro script en una carpeta, para este ejemplo será C:\Scripts\Get-VmNoBackup.ps1. Un ejemplo de la salida del script sin excepciones sería este:
Sabiendo la salida del script podemos proceder a crear el archivo de excepciones, con el que quitaremos las VMs de test de nuestro listado. Nuestro archivo de excepciones simplemente será un archivo .txt ubicado en la misma carpeta del script: C:\Scripts\Get-VmNoBackup_Excepciones.txt.
|
|
La idea es que en dicho archivo de excepciones añadamos un nombre de VM por línea, en nuestro caso quedaría así:
A partir de ahí solo nos queda leer el contenido de dicho archivo utilizando Get-Content y añadir este criterio al if en el que checkeamos si existe el Custom Attribute:
|
|
Repasemos las modificaciones:
- En la línea 2 leemos mediante Get-Content el contenido del archivo de excepciones y lo añadimos a la variable $Excepciones.
- En la línea 13 añadimos una nueva condición al if en la que el nombre de la VM ($Vm.Name) no debe estar dentro del array de $Excepciones.
Y este es el resultado de ejecutar el script con las últimas modificaciones:
Como podemos ver ya no aparecen las VMs Sobrebits-Test1 y Sobrebits-Test2.
Otra aproximación para gestionar las excepciones podría ser utilizar tags de vSphere sobre las máquinas virtuales que podrían ser leídos por nuestro script, poner excepciones de carpetas o básicamente cualquier criterio que se os ocurra.
Enviando el resultado del script vía correo electrónico
Para brindar un poco más de funcionalidad al script podemos hacer que éste nos envíe un reporte con las máquinas virtuales fuera de backup por correo electrónico tal como vimos en la entrada “Enviar correo desde PowerShell”.
Para ello necesitaremos de un servidor SMTP desde el que estemos autorizados a enviar correo y hacer unas pequeñas modificaciones a nuestro script.
En primer lugar deberemos configurar los parámetros para la conexión smtp:
|
|
Y al final del script, en vez de mostrar el contenido enviamos el correo electrónico (siempre y cuando existan máquinas virtuales fuera de backup):
|
|
Aquí no hay mucho que explicar puesto que no hemos hecho nada que no hicieramos ya en “Enviar correo desde PowerShell”, simplemente aclarar que en el parámetro -Body concatenamos el array y lo juntamos con retornos de carro puesto que esta variable espera un string.
Últimos retoques
Lo último que queda para dar por finalizado nuestro script es programar su ejecución. No voy a explicar al detalle cómo hacerlo puesto que ya se ha tratado en anteriores entradas, aquí os dejo las referencias:
- Necesitaremos automatizar la conexión a nuestro VCSA, por lo que es intesante que gestionemos el password de forma segura y no lo pongamos en texto plano en el script. Podéis encontrar más información en “Cómo gestionar las credenciales de un script de PowerShell”.
- Con el anterior punto resuelto solo nos queda programar la ejecución automatizada del script. Podéis encontrar más información en: “Ejecutar un script de PowerShell como tarea programada”.
Por último decir que con este método si eliminamos una máquina de backup va a seguir reportándose como máquina dentro de backup puesto que el Custom attribute no se borra al quitar la máquina de Veeam. Es por ello que os recomiendo periódicamente eliminar el contenido del Custom Attribute mediante Set-Annotation sobre todas las máquinas virtuales del entorno.
Poniéndolo todo junto
Después de seguir el proceso de las dos partes de esta entrada debería quedar un script parecido a este:
|
|
¡Espero que esta doble entrada os sirva para ahorraros disgustos de cara a futuro!