Veeam Free – Agendando backups de VMs no ESXi

 

Olá, pessoal!

Ano passado fiz um vídeo sobre os recursos disponíveis na versão free do Veeam para o vBrownBag. O vídeo pode ser visto abaixo:

 

 

Durante o vídeo eu disse que existe a possibilidade de agendar um backup do VeeamZip através do Powershell, já que não existe o agendamento pela console na versão gratuita. Demorou um pouco, mas consegui um tempo para escrever sobre isso e disponibilizar o script para download.
O script não foi criado por mim, eu apenas traduzi os comentários do script e adaptei um pouco para o meu ambiente de teste. O criador do script é o Vladimir Eremin que é Product Manager da Veeam. O post e script original podem ser encontrados AQUI em um post do Rick Vanover no blog da Veeam.

Para baixar o script CLIQUE AQUI.

Antes de começar a explicar como utilizar o script e como agendá-lo, é necessário ter o Powershell 3.0 instalado no servidor do Veeam Free. Caso não possua instalado, você pode baixar diretamente no site da Microsoft.

No meu ambiente eu tenho uma VM chamada WKS01 no meu vCenter (vcsa01.itpl.local). Farei o backup dessa VM usando o VeeamZip do Veeam Free para o caminho \\veeam02\repositorio que é um share no servidor onde está instalado a versão gratuita do Veeam.

O script é composto por diversas variáveis que devem ser alteradas de acordo com o seu ambiente. A primeira variável a ser definida é “VMNames”. Nela devemos colocar o nome de exibição de cada VM que devemos fazer o backup separada por vírgulas. Infelizmente é necessário colocar uma a uma porque não conseguimos fazer uma busca de todas as VMs no vCenter ou host ESXi.

 

# Nome das VMs que farão parte do backup separado por vírgula.
$VMNames = "WKS01"

 

A próxima variável que devemos definir é “HostName”. Essa variável defini o nome do nosso vCenter ou host ESXi onde as VMs que queremos efetuar o backup estão hospedadas. No meu caso utilizei meu vCenter, mas poderia ser apenas um host ESXi standalone.

 

# Nome do vCenter ou host standalone onde as VMs estão.
$HostName = "vcsa01.itpl.local"

 

A próxima variável que devemos definir é “Directory”. Essa variável é utilizada para definir onde nosso backup será gravado. Eu escolhi colocar em uma pasta compartilhada, mas você poderia escolher um local físico como “D:\backups”.

 

# Diretório que o backup será gravado. Pode ser um caminho de rede.
$Directory = "\\VEEAM02\Repositorio"

 

A próxima variável que devemos definir é “CompressionLevel”. Essa variável é utilizada para definir o nível de compressão do backup. Os valores possíveis para essa variável são:

  • 0 – None
  • 4 – Dedupe-friendly
  • 5 – Optimal
  • 6 – High
  • 9 – Extreme

Para maiores detalhes sobre os níveis de compressão do Veeam CLIQUE AQUI. Escolha a opção que melhor se adeque a sua necessidade. No meu caso escolhi “Optimal” pois é o padrão do Veeam.

 

# Nível da compreesão do backup. Valores possíveis: 
# 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme).
$CompressionLevel = "5"

 

A próxima variável que devemos definir é “EnableQuiescence”. Defina em true ou false se deseja utilizar a opção de Quiesce guest file system durante a execução do snapshot. Eu fiz um post sobre snapshots onde explico melhor essa opção do snapshot. Para utilizar essa opção é necessário que o VMware Tools esteja instalado na VM.

 

# Utilização da opção Quiesce durante o snapshot. 
# Necessário VMware Tools instalado na VM.
$EnableQuiescence = $False

 

A próxima variável que devemos definir é “EnableEncryption”. Defina em true ou false se deseja encriptar o seu backup. é interessante habilitar essa opção porque nunca sabemos o que pode acontecer com os arquivos.

 

# Encriptar o backup.
$EnableEncryption = $True

 

A próxima variável que devemos definir é “EncryptionKey”. Se você escolheu usar o backup encriptado precisamos definir uma chave para descriptografar o arquivo.

 

# Senha para criptografar os arquivos.
$EncryptionKey = "D:\encrypt.txt"

 

Você pode definí-la diretamente no script, mas não é nada seguro porque estará em texto puro. Para evitar isso podemos criar um arquivo .txt com nossa chave criptografada pelo Powershell. No Powershell digite o seguinte comando:

 

$SecurePassword = Read-Host -Prompt "Enter password" -AsSecureString

 

Será solicitado digitar sua chave de criptografia dos arquivos de backup. Após digita digite o seguinte comando:

 

$SecurePassword | ConvertFrom-SecureString > D:\encrypt.txt

 

Com isso teremos nosso arquivo .txt com a chave criptografada e mais segura para definir na variável “EncryptionKey”.

A última configuração que devemos fazer é referente a notificação do resultado do backup. O script pode enviar um e-mail para um administrador com o resultado do último backup para acompanhar dia a dia. Defina as variáveis conforme o seu ambiente. O restante do arquivo não deve ser alterado.

 

# Habilitar notificação (Variável opcional)
$EnableNotification = $True

# Defina o nome do servidor SMTP
$SMTPServer = "exc01.itpl.local"

# Email De
$EmailFrom = "veeamzip@itpl.local"

# Email Para
$EmailTo = "veeamzip@itpl.local"

# Assunto
$EmailSubject = "Resultado backup VeeamZip"

 

Com o script pronto podemos criar um task do Windows para rodar todo dia no melhor horário para seu ambiente. Para rodar um script powershell pelo task scheduler, na action da task, coloque da seguinte forma:

 

 

No meu ambiente coloquei para rodar todos os dias às 22h.

 

 

Após a conclusão do job você receberá um e-mail com a confirmação de que o job rodou com sucesso.

 

 

O arquivo estará gravado em seu repositório.

 

 

Duas considerações muito importantes:

  • Todos os backups serão full da VM. O Veeam Free não faz backup incremental, apenas a versão paga.
  • Nenhuma versão do Veeam funciona com a versão Free do ESXi.

É isso, pessoal! Espero que o script ajude para quem tem um ambiente um pouco mais limitado.

 

2 Comments