Importar/Exportar configuración SRM [Script]

El pasado 17 de Abril, VMware anunció el lanzamiento de sus nuevas versiones vSphere 6.7 y VMware SRM 8.1. Entre las numerosas mejoras que traen ambas, yo me quedé con las que trae SRM 8.1, el cuál ya presenta una tool para Import/Export de la configuración de SRM (Protection Group, Recovery Plan, Mappings,etc). Pues bien, todo es muy bonito, pero si tienes que migrar de una versión 5.5 a una versión 6.X, el Import/Export que ofrece SRM 8.1 no nos vale. Creo que este problema, nos lo hemos encontrado más de uno ;).

En este post vamos a ver como exportar e importar la configuración de SRM. Si alguno habéis tenido que realizar un Upgrade de vuestra infraestructura virtual, os habréis encontrado con este problema. Si tuviéramos que realizar una instalación de cero de VMware Site Recovery Manager, como importamos la configuración de los Protection Group o los Recovery Plan. Pues bien, ante la necesidad de ello, me encontré con la necesidad de realizar una migración de los Protection Groups y Recovery Plan a una instalación nueva de SRM.

Pues bien, me puse manos a la obra!!! Lo primero, como ya vimos en un post anterior, tenemos que tener instalado el Módulo “Meadowcroft.SRM” para poder atacar a la API de SRM. Podemos descargarnos el módulo a través del siguiente link Meadowcroft.SRM.

srm2

Vale una vez tengamos instalado el módulo, podemos empezar a “trastear” con la API de SRM. Para ello ejecutaremos lo siguiente:

srm1

Bueno, ahora llega el momento de empezar a ponerse en marcha. Primero debemos de tener en cuenta que necesitamos y que queremos conseguir. Que necesitamos? Necesitamos sacar un listado de los Protection Groups que tenemos configurados en nuestro SRM actual. Que esperamos conseguir? Poder recoger los datos necesarios de cada Protection Group para poder importarlos en la nueva instalación de SRM.

Bien, pues aquí os dejo mi script para Exportar los Protection Groups.

#############################################################################################
####################################### www.cloudvm.es ######################################
####################################################################################################                                                                               #######
###### Nombre Script : export_config_SRM_PG.ps1                                       #######
###### Version : 1.0                                                                  #######
###### Author: Mario Gómez (CloudVM)                                                  #######
###### Twitter : @mariogg85                                                           #######
###### Mail : mariogomezgallego85@gmail.com                                           #######
###### Objetivo:Realizar un Export de la configuración de los Protection Group de SRM.#######
###### Ejemplo: export_config_SRM_PG.ps1                                              #######
######                                                                                #######
##########################################################################################################################################################################################

# START SCRIPT

# Functions

# Determinar ubicación Script para ubicar el fichero csv a Exportar con la configuración
$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path

# Credenciales con permisos en vCenter y SRM
 
$USER = 'cloudvm'
$PASS = 'script'

# Información de Conexión

$EXPORT_VCENTER = 'FQDN_vCenter_Activo'
$EXPORT_VCENTER2 = 'FQDN_vCenter_Pasivo'
$SRMSERVER = 'FQDN_SRM_Activo'

# Declaración de variables principales

$Protection_Group_List = @()
$Protection_Group_List += 'Name' + "," + 'Type'+ "," + 'Datastores' + "," + 'State'

# *************** CONNECTION PRE-EXPORT ********************************************************************

# Conexión a vCenter Site Principal y Site Secundario

Write-Host "Connect Virtual Center : $EXPORT_VCENTER ..." -fo Green
Connect-VIServer -Server $EXPORT_VCENTER -User $USER -Password $PASS -WarningAction 0 | Out-Null
Write-Host "Connect Virtual Center : $EXPORT_VCENTER2 ..." -fo Green
Connect-VIServer -Server $EXPORT_VCENTER2 -User $USER -Password $PASS -WarningAction 0 | Out-Null

# Conexión a SRM

Write-Host "Connect SRM Server..." -fo Green
$Srm = Connect-SrmServer -Server $EXPORT_VCENTER -User $USER -Password $PASS -WarningAction 0

# Cargamos la API de SRM

$SrmApi = $Srm.ExtensionData

# Obtenemos un listado de los Protection Groups

$List_PG = $SrmApi.Protection.ListProtectionGroups()

# Por cada Protection Group obtendremos el Nombre,Tipo,Estado y Datastore/s

foreach ($PG in $List_PG)
{

 # Obtenemos el Nombre y el Tipo (ABR/VR)

 $Name_PGroup = ($PG.GetInfo()).Name
 $Type_PGroup = ($PG.GetInfo()).Type
 

# Obtenemos el Nombre del Datastore o Datastores que componen el Protection Group
 
 # En este punto debemos tener en cuenta si vamos a realizar una migración de vCenter o una instalación de cero.
 # Si es una migración los ID Object de los Datastore se mantienen, si el vCenter es diferente el ID Object cambia,
 # por lo que el ID que exportamos, no nos valdrá para el Import.
 
 # Caso: Migración vCenter, nos vale un listado de los ID
 $DDS_PGroup = ($PG.ListProtectedDatastores()).Moref
 
 # Caso instalación de cero, pasaremos los nombres de los DS, que entendemos que no se cambiarán en el nuevo vCenter
 
 $DDS_PGroup = (Get-Datastore -Id ($PG.ListProtectedDatastores().MoRef)).Name

 # Obtenemos el Estado del Protection Group (Shadowing or Ready)

 $State_PGroup = ($PG.GetPeer()).State
 
 ###############################################################################################################
 
 Write-Host "Exportando el PG: $Name_PGroup" -ForegroundColor Yellow

 # Incluimos una linea con los datos obtenidos en el Array String de la Lista de Protection Groups
 
 $Array_PG = $Name_PGroup + ',' + $Type_PGroup + ',' + $DDS_PGroup + ',' + $State_PGroup
 $Protection_Group_List += $Array_PG

}

$Protection_Group_List | Out-File -FilePath "$ScriptDir\export_pg_$EXPORT_VCENTER.csv"
Write-Host "Protection Groups exportados a fichero export_pg_$EXPORT_VCENTER.csv" -ForegroundColor Magenta

# *************** DESCONEXIÓN POST-EXPORT **********************

# Desconexión SRM Server

Write-Host "Disconnect SRM Server" -fo Red
Disconnect-SrmServer -Server $SRMSERVER -Confirm:$false

# Desconexión Virtual Center Server

Write-Host "Disconnect Virtual Center : $EXPORT_VCENTER" -fo Red
Disconnect-VIServer -Server $EXPORT_VCENTER -Confirm:$false
Write-Host "Disconnect Virtual Center : $EXPORT_VCENTER" -fo Red
Disconnect-VIServer -Server $EXPORT_VCENTER2 -Confirm:$false

Por último os dejo mi script para Exportar los Recovery Plan.


#############################################################################################
################################ www.cloudvm.es  ############################################
####################################################################################################                                                                           ###########
######                                                                                #######
###### Nombre Script : export_config_SRM_RP.ps1                                       #######
###### Version : 1.0                                                                  #######
###### Author: Mario Gómez (CloudVM)                                                  #######
###### Twitter : @mariogg85                                                           #######
###### Mail : mariogomezgallego85@gmail.com                                           #######
###### Objetivo: Realizar un Export de la configuración de los Recovery Plan de SRM.  #######
###### Ejemplo: export_config_SRM_RP.ps1                                              #######
######                                                                                #######
#############################################################################################
#############################################################################################

# START SCRIPT

# Functions

# Determinar ubicación Script para ubicar el fichero csv a Exportar con la configuración
$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path

# Credenciales con permisos en vCenter y SRM
 
$USER = 'cloudvm'
$PASS = 'script'

# Información de Conexión

$EXPORT_VCENTER = 'FQDN_vCenter_Activo'
$EXPORT_VCENTER2 = 'FQDN_vCenter_Pasivo'
$SRMSERVER = 'FQDN_SRM_Activo'

# Declaración de variables principales

$Recovery_Plan_List = @()
$Recovery_Plan_List += 'Name' + "," + 'ProtectionGroups'+ "," + 'State'

# *************** CONNECTION PRE-EXPORT ********************************************************************

# Conexión a vCenter Site Principal y Site Secundario

Write-Host "Connect Virtual Center : $EXPORT_VCENTER ..." -fo Green
Connect-VIServer -Server $EXPORT_VCENTER -User $USER -Password $PASS -WarningAction 0 | Out-Null
Write-Host "Connect Virtual Center : $EXPORT_VCENTER2 ..." -fo Green
Connect-VIServer -Server $EXPORT_VCENTER2 -User $USER -Password $PASS -WarningAction 0 | Out-Null

# Conexión a SRM

Write-Host "Connect SRM Server..." -fo Green
$Srm = Connect-SrmServer -Server $EXPORT_VCENTER -User $USER -Password $PASS -WarningAction 0

# Cargamos la API de SRM

$SrmApi = $Srm.ExtensionData

# Obtenemos un listado de los Recovery Plan

$List_RP = $SrmApi.Recovery.ListPlans()

# Recorremos el listado de los Recovery Plan recogidos e iremos recogiendo la información    # necesaria

foreach ($RP in $List_RP)
{

 # Obtenemos el Nombre de cada Recovery Plan.

 $Name_RP = ($RP.GetInfo()).Name
 

 # Obtenemos el Listado de los Protection Group que componen el Recovery Plan
 
 $PGroup = $RP.GetInfo().ProtectionGroups.MoRef

 # Obtenemos el estado de los Recovery Plan
 # Protecting - Origen
 # Ready - Destino

 $State_RP = ($RP.GetInfo()).State
 
 # Realizamos un output sobre el Recovery Plan que estamos exportando
 
 Write-Host "Exportando el Recovery Plan: $Name_RP" -ForegroundColor Yellow

 # Añadiremos una linea del Recovery Plan que estamos exportando

 $List_RP = $Name_RP + ',' + $PGroup + ',' + $State_RP
 $Recovery_Plan_List += $List_RP

}

$Recovery_Plan_List | Out-File -FilePath "$ScriptDir\export_rp_$EXPORT_VCENTER.csv"
Write-Host "Recovery Plans exportados a fichero export_rp_$EXPORT_VCENTER.csv" -ForegroundColor Magenta

# *************** DESCONEXIÓN POST-EXPORT *******************************

# Desconexión SRM Server

Write-Host "Disconnect SRM Server" -fo Red
Disconnect-SrmServer -Server $SRMSERVER -Confirm:$false

# Desconexión Virtual Center Server

Write-Host "Disconnect Virtual Center : $EXPORT_VCENTER" -fo Red
Disconnect-VIServer -Server $EXPORT_VCENTER -Confirm:$false
Write-Host "Disconnect Virtual Center : $EXPORT_VCENTER" -fo Red
Disconnect-VIServer -Server $EXPORT_VCENTER2 -Confirm:$false

Espero que os haya sido de utilidad ;).

Faltaría lo más importante, los script para importar la configuración de los Protection Groups y Recovery Plan. Si quieres obtener los scripts para importar la configuración tendrás que realizar una donación de 60 euros al blog. Recuerda que este script es difícil de implementar y ha llevado su tiempo, por lo que creo que se merece una aportación. Para ello hacer click en el siguiente botón y recuerda dejar el correo electrónico para mandarte los scripts que están totalmente documentados. Muchas gracias 😉

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *