Quick PowerCLI script to assist in Dell Equallogic to Nimble Storage migrations

I’ve had to do a few quick SAN migrations recently that involved setting up new SAN array’s and performing the necessary steps to evacuate data from one device to another. These migrations generally involve –

  • Documentation of current LUN layout on legacy SAN
  • Documentation of current datastore layout within vSphere
  • Creating new LUN’s on the destination device
  • Creating new Datastores within vSphere to for the existing VMDK’s

The following script will automate the above steps. This script assumes that you are using these specific vendors, as well as a functional vCenter environment

Find the script here on my github

#The EQL Powershell Extension is required - https://eqlsupport.dell.com/support/download_file.aspx?id=3336
#The Nimble Powershell Module is required  - https://infosight.nimblestorage.com/InfoSight/media/software/active/15/49/Nimble_PowerShell_ToolKit_1.0.0.zip
#Nick Shores 8-1-17
 
#Change paramaters below to match your enviornment  
$vcenter = 192.168.0.46
$vcenteruser = yourusername
$vcenterpass = your vcenter password
$EqlCred = Get-Credential
$NimbleCred = Get-Credential
$nimblemgmt = 192.168.0.66
$eqlmgmt = 192.168.0.81
 
#Import Modules
Import-Module -Name 'C:\Program Files\EqualLogic\bin\EqlPSTools.dll'
import-module -Name 'NimblePowerShellToolKit'
 
#Connect to dependencies
connect-viserver -server $vcenter -User $vcenteruser -Password $vcenterpass
Connect-Eqlgroup -GroupAddress $eqlmgmt -Credential $EqlCred
Connect-NSGroup -group $nimblemgmt -credential $NimbleCred
 
 
#Get list of EQL Volumes to create
 
write-host 'Getting EQL Volumes...'
$eqlvolume = Get-EqlVolume
 
 
$volumestats = $eqlvolume | select VolumeName,VolumeSize
write-host "$volumestats"
 
Write-Host "Creating $eqlvolume.count New Volumes - Continue? "
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
 
 
 
#On nimble, create each volume
#TODO - Figure out how to set chap / initator access
foreach ($volume in $eqlvolume) {
    new-nsvolume -name $volume.VolumeName -size $volume.VolumeSizeMB -multi_initiator $true
    }
    
Get-NSVolume | select name-size
 
write-host "Creating Datastores"
 
#Find nimble LUN's / create new datastores
$id = Get-ScsiLun -vmhost * | Get-ScsiLunPath | ? {($_.Sanid -like '*nimble*') -and ($_.State -eq 'Active')}
foreach ($lun in $id){
  $name = $lun.sanid -replace '.*?:(.+?)-.*','$1'  
  new-datastore -Name $name -path $lun.ScsiCanonicalName -vmhost *
  }
 
  
#Rescan Hosts
Get-VMHostStorage -VMHost * -RescanAllHBA | Out-Null
 
 
write-host "Complete!"

 

Share this content:

Leave a Comment

Your email address will not be published. Required fields are marked *