Backup, Configuración, vCenter

Script PowerCLI: Copia de seguridad de un vDS en VMware

VMware vCenter Server trae la posibilidad de exportar la configuración de un vSwitch Distribuido para poder restaurar en caso de que exista un error de configuración, el backup sólo está permitido hacerlo manualmente desde vSphere Web Client.

El siguiente script se puede programar como un servicio o tarea del sistema para que exporte la configuración de o los vCenters que tengamos en nuestro entorno.

Sin más rodeos, ¡vamos a ello!


## Script Export vDS ##
## El Script exporta la configuracion de todos los vDS y sus PG y lo guarda en una carpeta con el nombre del vDS+fecha ##
## Con la variable $limit establecemos el límite de carpetas vDS a guardar (lo últimos 7 días en este caso) ##

##Variables de conexión a vCenter##


$SERVER = 'FQDN o IP vCenter'
$USER = 'dominio\usuario'
$PASS = 'xxxxxxxxx'

#Nos conectamos a vCenter


Connect-VIServer $SERVER -user $USER -pass $PASS

#Listamos los vDS del entorno

$vDSNAMES = Get-VDSwitch
$date = Get-Date -uformat %Y-%m-%d

# Realizamos el backups

foreach ($vDSNAME in $vDSNAMES)


{


$Folder = "D:\Backups\vCenter\"+$vDSNAME.Name+"-$date"
mkdir $Folder -Force

# Backup de cada vNetwork Distributed Switch sin los port groups

export-vdswitch $vDSNAME -Withoutportgroups -Description "Backup de $vDSNAME sin port groups" -Destination "$Folder\without_portgroups.$date.zip" -Force

# Backup de cada vNetwork Distributed Switch incluyendo los port groups

export-vdswitch $vDSNAME -Description "Backup de $vDSNAME con port groups" -Destination "$Folder\with_portgroups.$date.zip" -Force

# Backup de cada port group individualmente

get-vdswitch $vDSNAME | Get-VDPortgroup | foreach { export-vdportgroup -vdportgroup $_ -Description "Backup de port group $($_.name)" -destination "$Folder\$($_.name).portgroup.$date.zip" -Force
}
}

# Establecemos el límite de copias a guardar en la variable $limit.


$limit = (Get-Date).AddDays(-7)
$path = "D:\Backups\vCenter\"

# Eliminamos ficheros según la fecha $limit.

Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force #-WhatIf

# Eliminamos cualquier directorio o fichero vacío después de eliminar los archivos antiguos y nos desconectamos del vCenter.

Get-ChildItem -Path $path -Recurse -Force | Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse


Disconnect-VIServer -server * -Confirm:$false

Esto ha sido todo, gracias por tomarse el tiempo de leer y compartirlo.

Leandro Ariel Leonhardt es experto en Virtualización de Sistemas especializado en Nutanix y VMware. Autor del curso online "Hiperconvergencia con Nutanix: aprende a instalar y configurar" desde cero: https://www.udemy.com/hiperconvergencia-con-nutanix-instalacion-y-configuracion/. Nutanix NCP & Nutanix Technology Champions (NTC) 2018/2017. Nombrado vExpert PRO y vExpert desde el año 2013, vExpert vSAN 2019/18/17/16 & vExpert Cloud 2017. Ex-VCI, VCAP-DCA, VCP-DCV & VCP-NV. Co-autor del libro https://www.vmwareporvexperts.com | Más información sobre su trayectoria en: https://www.leandroleonhardt.com y https://www.youracclaim.com/users/leandro-ariel-leonhardt/badges

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.