Agrega en automático una nueva VM a un Job de Respaldo de Veeam

En este post mostraré una opción para agregar de forma automática una máquina virtual recién creada a un trabajo de respaldo de Veeam, todo esto utilizando PowerCLI y los cmdlet’s de PowerShell que nos ofrece Veeam.

El primer paso es identificar el evento dentro de vCenter de creación de una nueva máquina virtual. Puede haber otros métodos mejores, pero encontré una buena forma con el cmdlet “Get-VIEvent”, ya que incluye un campo llamado “FullFormattedMessage” que lleva la información del evento, sólo debo de buscar que patrón sigue cuando se crea una máquina virtual nueva. Sin embargo, hay diferencias entre como se describe una VM que es creada desde cero o con un OVA/OVF y una que es clonada.

Ejemplo de mensaje cuando es VM nueva:

FullFormattedMessage : Created virtual machine nueva1 on host.infra.lab in Lab

Ejemplo de mensaje cuando es clonada una VM:

FullFormattedMessage : Cloning Kiwi on host host.infra.lab in Lab to clon-kiwi on host host.infra.lab

Ok, ahora ya sabemos que textos “clave” deberíamos de incluír en el script, y nos auxiliaremos del cmdlet “Where-Object” para identificarlos entre los eventos generados en vCenter.

El Script está escrito pensando en ejecutarse cada 24 horas, si por ejemplo nuestros respaldos los ejecutamos una vez al día podemos correr el script antes de que se ejecute para que se incluyan las nuevas VM en nuestro entorno virtual.

Como se vería el Script…

## vSphere 5.5 + Veeam 8

## Aqui y ahora =)
$tiempo = Get-Date

## Buscamos en las ultimas 24 horas todas las VM creadas u OVA/OVF "deployed"
$nuevasVM1 = Get-VIEvent -Start $tiempo.AddDays(-1) | where {$_.FullFormattedMessage -like "*created virtual machine*"}
$nuevas1 = $nuevasVM1.Vm.Name
## Agregamos al job de respaldo $MiJob las VMs encontradas
foreach ($vm1 in $nuevas1) {
Find-VBRViEntity -Name $vm1 | Add-VBRViJobObject -Job $MiJob
}

## Buscamos en las ultimas 24 horas todas las VMs clonadas
$nuevasVM2 = Get-VIEvent -Start $tiempo.AddDays(-1) | where {$_.FullFormattedMessage -like "*Cloning*"}
$nuevas2 = $nuevasVM2.DestName
## Agregamos al job de respaldo $MiJob las VMs encontradas
foreach ($vm2 in $nuevas2) {
Find-VBRViEntity -Name $vm2 | Add-VBRViJobObject -Job $MiJob
}

Este script considera todas las VMs que se encuentran administradas en un mismo vCenter server, sin embargo lo podríamos editar para que sólo ciertas VMs sean agregadas, ejemplo podría ser que tengan cierto prefijo, sufijo, Host, Datacenter o Cluster. Un caso podría ser que las VMs de un cluster vayan a un Job y las de otro Cluster a un Job distinto. Mil variantes.

Espero les sea de utilidad.

spotify:track:5c5a2Ptu8eyIpljhQHjIqk

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s