Saludos amigos, aún no he escrito mucho sobre Veeam Availability Orchestrator, y eso va ha cambiar en breve, hoy comienzo con una entrada avanzada y más tarde volveremos con lo básico.
Una de las cosas que Veeam Availability Orchestrator nos permite, es incluir pasos adicionales en nuestro plan de Disaster Recovery. Hablando con un cliente le comentaba que si le gustaría recibir notificaciones de Slack cuando un trabajo se ejecuta, y cuando acaba tener un breve resumen en Slack también, por supuesto la idea le encantí, hoy vamos a ver los pasos necesarios para conseguirlo.
Activar el Incoming WebHook en Slack para enviar notificaciones simples
Dependiendo de la cantidad de WebHooks que os queden disponibles en vuestros canales de Slack, esto os funcionará u os dará un error, para ello simplemente nos iremos hasta este link:
Y nos aparecerá algo similar a esto, seleccionaremos el canal donde queremos enviar alertas:
Esto nos dará un código único que usaremos en los Scripts de más adelante:
Preparando los Scripts Powershell para VAO
Tengo tres Scripts diferentes, uno cuando comienza el trabajo y otro para después, además tengo un script que se procesa con cada VM, son muy simples, vamos a ver ambos:
Slack-Plan-Start.ps1
param([string]$PlanName, [string]$PlanState)
Import-Module PSSlack
$Uri = "TUURICREADAANTERIORMENTEENELWEBHOOK"
$Channel = "vao-test"
[string]$Message = "+----------------------------------------------------------------------------+"
$Message += "" | Out-String
$Message += $PlanName + ' has been changed the status to ' + $PlanState
Send-SlackMessage -Uri $Uri `
-Channel $Channel `
-Parse full `
-Text $Message
Slack-Plan-End.ps1
param([string]$PlanSummary)
Import-Module PSSlack
$Uri = "TUURICREADAANTERIORMENTEENELWEBHOOK"
$Channel = "vao-test"
[string]$Message = $PlanSummary
$Message += "+----------------------------------------------------------------------------+"
Send-SlackMessage -Uri $Uri `
-Channel $Channel `
-Parse full `
-Text $Message
Slack-Plan-VM.ps1
param([string]$VMName, [string]$VMIP, [string]$VMIPReplica)
Import-Module PSSlack
$Uri = "TUURICREADAANTERIORMENTEENELWEBHOOK"
$Channel = "vao-test"
$Message = '' + $VMName + ' with IP ' + $VMIP + ' and Replica IP ' + $VMIPReplica + ' has started a DR'
Send-SlackMessage -Uri $Uri `
-Channel $Channel `
-Parse full `
-Text $Message
Muy sencillitos por ahora, ya los mejoraremos en el futuro.
Instalar el módulo de PSSlack en los servers de Veeam Availability Orchestrator y Veeam Backup & Replication
Abriremos una Powershell con permisos de Administrador y lanzaremos el siguiente comando para instalar el módulo de PowerShell to Slack:
Install-Module PSSlack
Es posible que no tengamos la última versión de NuGet que es necesaria, con lo que diremos Y aquí:
NuGet provider is required to continue PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or 'C:\Users\Administrator\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import the NuGet provider now? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
Y por último diremos A en esta pregunta de si confiamos en el módulo:
Untrusted repository You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
Ya tenemos nuestro VAO y nuestro VBR, listo para lanzar Scripts de PowerShell a Slack.
Creando los scripts personalizados en Veeam Availability Orchestrator
Ahora que tenemos todo casi listo, es el momento de irnos a Veeam Availability Orchestrator y crear los scripts personalizados, en mi caso son estos de Slacks, en los vuestros pueden ser:
- Configuraciones de Routers o Switches
- Configuración del DNS público, por ejemplo Amazon Route 53
- etc
Nos iremos hasta la configuración de Veeam Availability Orchestrator y sobre Plan Steps, podremos añadir los tres diferentes scripts personalizados:
Por ejemplo, el script personalizado para cuando comenzamos el trabajo, y seleccionamos el script en nuestro PC:
Le diremos que esté disponible para todos los Sitios:
Dentro del Script, en particular este de iniciar el trabajo, tenemos que tener dos parámetros, PlanName y PlanState, y estos deben tener como default Value %plan_name% y %plan_state% respectivamente:
El Script de Finish tiene que tener un nuevo parámetro llamado PlanSummary con valor %plan_summary%
El Script de las VMs, tiene que tener VMIP, VMIPReplica y VMName que tienen que tener %current_vm_ip%, %replica_vm_ip% y %source_vm_name% respectivamente:
En todos ellos tenemos el Common Parameters, a mí me gusta dejarlo de la siguiente manera:
Ya en nuestro Failover Plan añadiremos un nuevo paso en el pre-failover steps, con nuestro Script:
Similar para el post-failover, añadir un nuevo step con el script:
Y dentro de las VMs:
Lanzando un Failover Plan y visualizar las notificaciones en Slack
Con todo ya listo, podremos lanzar nuestro Failover, que nos mostrará algo similar a esto en los Scripts:
Desde Slack podremos ver las notificaciones por cada VM, además de que el proceso ha comenzado:
Y al finalizar veremos un resumen completo de todo el trabajo, en texto plano:
Siguientes pasos
Este proyecto es una v0.1 sin duda, funciona, pero las notificaciones pueden ser mejores, usando iconos y colores, aparte de tablas con información. Seguramente tenga tiempo antes de acabar el año para dejarlo todo de manera mucho más perfecta, pero al menos y por ahora ya podéis recibir notificaciones en Slack.




Jorge, muy buen paso, solo tengo la duda para crear notificaciones para el estado de los Job de Respaldo desde VeeamBackup, eso lo debiese aplicar en el servidor de veeam o en el de veeam one?
Saludos Claudio,
Ya tengo unos scripts para ello para Veeam ONE – https://github.com/jorgedlcruz/powershell/tree/master/VONE-Notifications
Pruebalo y dime
Saludos!