Перейти к содержимому

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

Задача. Есть много машин vm на vSphere. Нужно что бы машины vm сами попадали в задание по бэкапу. Так как 3 разных домена будем делать три задания и три разных учетные записи.  Плюс еще отдельным заданием linux машины.

Буду назначать на VM разные tag  с помощью powercli . Так же должна быть возможность исключить из бэкапа vm через vSphere

В vSphere создаём категорию Backup

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

в ней TAgs

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

После этого написал скрипт для назначение tags виртуалкам по критериям.

$vcenter = "vcsa01"
Connect-VIServer $vcenter
$Datacenter_name = "Moscow*"
 
$FileContent= `
Get-Datacenter -Name $Datacenter_name | Get-Cluster | Where-Object {$_.Name -notlike 'L05' } | Get-VM   `
| Select name,powerstate,guest,@{Name="Tags";Expression={(Get-TagAssignment -Entity $_).Tag.Name}} `
|  Where-Object   {$_.Name -like "*Roga.ru" -and $_.powerstate -match "on" -and $_.Tags -notcontains "Roga Windows Backup" -and $_.guest -like "*windows*"  -and $_.Tags -notcontains "Exclude BackupVM"}
 
foreach($VMinFile in $FileContent)
{
Get-VM $VMinFile.name | New-TagAssignment -Tag "Roga Windows Backup"
}
 
$kopytovm= `
 
Get-Datacenter -Name $Datacenter_name | Get-Cluster | Where-Object {$_.Name -notlike 'CL05' } | Get-VM   `
| Select name,powerstate,guest,@{Name="Tags";Expression={(Get-TagAssignment -Entity $_).Tag.Name}} `
|  Where-Object   {$_.Name -like "*kopyto.ru" -and $_.powerstate -match "on" -and $_.Tags -notcontains "kopyto Windows Backup" -and $_.guest -like "*windows*"  -and $_.Tags -notcontains "Exclude BackupVM"}
foreach($kopytovms in $kopytovm)
{
Get-VM $kopytovms.name | New-TagAssignment -Tag "kopyto Windows Backup"
}
 
$teexvm= `
Get-Datacenter -Name $Datacenter_name | Get-Cluster | Where-Object {$_.Name -notlike 'CL05' } | Get-VM   `
| Select name,powerstate,guest,@{Name="Tags";Expression={(Get-TagAssignment -Entity $_).Tag.Name}} `
|  Where-Object   {$_.Name -like "*hvost.ru" -and $_.powerstate -match "on" -and $_.Tags -notcontains "hvost Windows Backup" -and $_.guest -like "*windows*"  -and $_.Tags -notcontains "Exclude BackupVM"}
 
foreach($teexvms in $teexvm)
{
Get-VM $teexvms.name | New-TagAssignment -Tag "hvost Windows Backup"
}
 
 
$linuxxvm= `
Get-Datacenter -Name $Datacenter_name | Get-Cluster | Where-Object {$_.Name -notlike 'CL05' } | Get-VM   `
| Select name,powerstate,guest,@{Name="Tags";Expression={(Get-TagAssignment -Entity $_).Tag.Name}} `
|  Where-Object   { $_.powerstate -match "on" -and $_.Tags -notcontains "Linux Backup" -and $_.guest -like "*Linux*"  -and $_.Tags -notcontains "Exclude BackupVM"}
foreach($linuxxvms in $linuxxvm)
{
Get-VM $linuxxvms.name | New-TagAssignment -Tag "Linux Backup"
}
     #Disconnect-VIServer vcsa

В скрипте для TAg “Roga Windows” Backup фильтрует  по fqdn, power on и Windows . Так как у нас множественно доменов все вирт идёт с fqdn.

В tag Linux Backup фильтрует  по Linux и power . Так же прописано исключение если указан tag Exclude BackupVM

Бонус. скрипт который переименовывает windows виртуалки так как они называются в dns

$vmms=Get-Datacenter -Name 'Moscow DataSpace' | Get-Cluster | Where-Object {$_.Name -notlike 'vSAN-CL05-Horizon' } | Get-VM |  where {$_.powerstate -match "on" -and $_.Guest -like '*windows*' } `
 | Select Name,@{N="DNS";E={$_.Guest.HostName}}|  where {$_.DNS -like '*beeper.ru*' -and $_.Name -notlike '*kopyto.ru*'}
 Write-Host
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Старое название"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
 $vmms
 
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Новое"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
 
 
#Раскоментить когда все проверишь.
 
<#
 
  Foreach ($vmm in $vmms) {
 $old=$vmm.name
 $new=$vmm.DNS
  Get-VM -Name $old |
  Set-vm -name $new -confirm:$false 
}
 
 
#>
 
# Запустить если в переменой пусто
 
#Clear-Variable -Name "vmms"

Так же нужен скрипт исключения . Если установить tag Exclude BackupVM на vm то все остальные tag будут сняты с этой машины и в задании veeam она пропадёт.

 $VMs=`

Get-Datacenter -Name $Datacenter_name | Get-Cluster | Where-Object {$_.Name -notlike 'CL05' } | Get-VM   `
| Select name,powerstate,guest,@{Name="Tags";Expression={(Get-TagAssignment -Entity $_).Tag.Name}} `
|  Where-Object  {$_.Tags -contains  "Exclude BackupVM" -and $_.Tags -like "*Backup" } 

$VMs

if ($VMs -eq $null -or $VMs.Count -eq 0) {
 return
}
else {
$VMs= get-vm -name $VMs.name

foreach ($VM in $VMs)

{

$VM | Get-TagAssignment -tag "Roga Windows Backup" | Remove-TagAssignment   -Confirm:$false
$VM | Get-TagAssignment -tag "kopyto Windows Backup" | Remove-TagAssignment  -Confirm:$false
$VM | Get-TagAssignment -tag "hvost  Windows Backup" | Remove-TagAssignment -Confirm:$false
$VM | Get-TagAssignment -tag "Linux Backup" | Remove-TagAssignment -Confirm:$false
}

  }

 

После скриптов делаем задание в task scheduler

Добавляем прав для уз от которой будет запускаться task

Start Menu > Administrative Tools > Local Security Policy >
Local Policies > User Rights Assignment > Log On As Batch Job

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

После сделал батик для запуска ps1

echo off
cd D:\Programs\Vmware tag
powershell -ExecutionPolicy ByPass -file "%~dp0\tag.ps1"

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

в tag1.ps1 оба скрипта по добавлению tag и исключение из бэкап.

В Task

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

Раз в день в 21-00

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

Задание в veeam

Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.

Все остальное в задании по желанию.

Similar Posts:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *