martes, 9 de julio de 2013

Parar todos los snapmirrors en destino (DR test) con PowerShell

Este scritp lo utilizo para parar todos los snapmirror de destino y ponerlos en modo lectura/escritura en las pruebas de desastre. Básicamente lo que hace es un listado de los volúmenes que tienen relación de snapmirror creada y esta información la utiliza para ponerlos todos primero en 'quiesce' y luego hacer el 'break'. Se pueden añadir los volúmenes que no queramos romper en una variable de cadena (muy práctico en los primeros tests). Sé que se puede mejorar y se admiten sugerencias y modificaciones.
Observaréis que he puesto contraseña ofuscada con el script que publiqué recientemente. Espero que lo encontréis práctico. Para generar vuestro própio script de contraseña ofuscada os tocará leer el post anterios ;-)

#Inicio del script

$allNetAPP = @("NetappDR01", "NetappDR02" ) # <--- br="" controlador="" del="" el="" introducir="" ip="" nombre="" o=""> $volUnused = @("vol0", "vol_test") # <--- br="" cortar="" los="" menes="" no="" poner="" que="" queramos="" vol=""> ########################################################################################################################
$password = "76492d1116743f0423413b16050a5345MgB8AGgAbwA2AEwAWgBBAGIAcABQADEALwAyADYAbABuAEgAOQBGADYAcwBqAFEAPQA9AHwAOQBmADUANwAyADkAOABmAGEANgA5AGYAZAA1ADcANAA5ADkANQAzADEAMABkAGYANwA0AGEAYwBkADIAMAA5AGUAYQA2ADMANgBiAGYAYwA0AGIANwA0ADkAZAA3ADgANgA4AGUAZABiADIAYwBhADAAZgBiAGEAMwA5AGMAZQA="
$key = "155 43 100 117 110 219 64 220 246 113 218 12 7 233 143 111 25 241 206 16 209 132 60 235 108 215 245 140 103 215 23 210"
$passwordSecure = ConvertTo-SecureString -String $password -Key ([Byte[]]$key.Split(" "))
$cred = New-Object system.Management.Automation.PSCredential("root", $passwordSecure)
########################################################################################################################
Import-module DataONTAP

Write-Host "#########################################################################"
Write-Host "#########################################################################"
Write-Host "##                                                                                                                   ##"
Write-Host "## Este proceso va a parar todas las relaciones de los SnapMirrors ##"
Write-Host "##                                                                                                                  ##"
Write-Host "## Pulsa + C para abortar la ejecución ##"
Write-Host "##                                                                                                                  ##"
Write-Host "#########################################################################"
Write-Host "#########################################################################"
Start-Sleep -s 10

foreach ($thisNetAPP in $allNetAPP)

{
Connect-NaController $thisNetAPP -Credential $cred |Out-null
$AllSnapMirrors = Get-NaSnapMirror

foreach ($ThisSnapMirror in $AllSnapMirrors)
{
$Destination = $ThisSnapMirror.destination.split(":")
$DestinationVolName = $Destination[1]
# Si el volumen no está en la lista negra...
if ($volUnused -NotContains $DetinationVolName)
{
Write-Host "Stopping .... " $DestinationVolName
Invoke-NaSnapmirrorQuiesce $DestinationVolName -Confirm:$false
Invoke-NaSnapmirrorBreak $DestinationVolName -Confirm:$false
Start-Sleep -s 1
}
}
}

Write-Host "###################################################"
Write-Host "## ##"
Write-Host "## Todos los SnapMirrors se han parado ##"
Write-Host "## ##"
Write-Host "###################################################"

$SnapMirror = Get-NaSnapmirror
$SnapMirror | format-table |Out-Default

Start-Sleep -s 20

#Final del script

No hay comentarios: