In my last post, I took a deep dive on how to run commands
within the Recovery Plan, which would call out scripts on the recovered Virtual
Machines. I would highly recommend that you read that article before
reading this one. Here is the link - Using
scripts to automate VMware Site Recovery Manager workflows & recovery
steps!
Now is the time to take this one level up and see how SRM
can integrate with other powerful tools such as PowerShell and PowerCLI to
create a centralized script repository on the SRM server.
This repository can contain scripts which can be executed by the
PowerShell scripting engine with the help of PowerCLI installed on the SRM
Server.
I think a better approach would be to go ahead and take a
scenario which needs such kind of scripting and I will showcase step by step
configuration which would help use solve the problem through scripting.
Situation:-
An organization is using vSphere Replication to replicate
the virtual machines from Site A (Protected Site) to Site B (Recovery Site).
They have the SRM automation engine to perform Recovery or Test.
There are a few virtual machines protected at Site A with
an application which generates a lot of garbage logs. These garbage logs are a
part of the OS and the VM , hence this data is also replicated to the DR site
using vSphere Replication.
Since this data is not required at the recovery site, we
are simply wasting the replication bandwidth to send these logs which could be
in GB’s in some cases per virtual machine. The organization wants to
efficiently use the Network between sites and want to remove any replication
overheads which might not be required in the Recovery Site.
Solution:-
The solution to this issue is that we keep these logs on a separate
log partition (which is on a different VMDK). vSphere Replication allows us to
go to the granularity of choosing the VMDK’s which you want to replicate from a
Virtual machine.
Let’s say the name of the VM which we want to replicate
without the logs is called “vmsunny” which has 2 Virtual Disks.
Disk 1 – vmsunny.vmdk
Disk 2 – vmsunny_1.vmdk
The Disk 1 has the OS, Application and Data while the Disk
2 has the logs which are of no use in the DR site.
In this case, we will just replicate the Disk 2, once to
create a copy on the DR site and then when we configure vSphere Replication for
this VM, we would not replicate the Disk 2 to save the replication bandwidth
from next time onwards.
Now we will use the SRM scripting capabilities to add the
disk 2 on the DR virtual machine whenever we run a Test Recovery or a Disaster
Recovery. We would need to script this task so that it happens automatically
with the Recovery Workflow.
How to Implement
Here are the logical steps which I would follow in this
case:-
a)
Replicate the ‘vmsunny’
vm from Site A to Site B, replicate both Disk 1 and Disk 2
b)
Once both the disks
are created and the replication is complete, pause the replication, go the Site
B datastore where Disk 1 and Disk 2 are located and move the Disk 2 out of the
VM folder (This is to ensure that Disk 2 is preserved when you un-replicate the
Disk 2 in next step).
c)
Now go back to vSphere
Replication and configure replication for vmsunny once again. This time, DO NOT
replicate Disk 2 i.e. vmsunny_1.vmdk. This will remove this disk from
replicating from now on.
d)
Remove this disk from
the Protection group as well by using the Detach option.
e)
Now go back to the location
where you moved the Disk 2 in the DR site. Move the Disk 2 back to the VM folder
from where you moved it in Step 2.
f)
Resume the replication
which you paused in Step 2.
Now we would configure the Recovery Plan for ‘vmsunny’ VM
and add a command to call a script from the SRM Server. This script would add
the Disk 2 on the VM in the DR site as soon as the Test Recovery or Disaster
Recovery option is selected for that recovery plan. This would be a pre-power
on script which would add the disk and then the VM would power on.
Preparing the SRM server for running scripts & Creating the Recovery Plan
Before you could call scripts from the SRM server, you need
to configure Powershell and PowerCLI on the SRM server. This would allow the
SRM server to run powershell scripts using the VIX API and call the virtual
center to add a disk to a virtual machine.
Please follow the steps in the
following article written by Alan Renouf:-
Back
to Basics: Part 1 – Installing PowerCLI
This
will help you prepare your SRM Server for running PowerCli scripts which would
call the following script kept on a folder in the SRM server:-
++++++++++++++++++START OF SCRIPT++++++++++++++++++
add-pssnapin VMware.VimAutomation.Core
Connect-VIServer -Server <vCenter Server
Name> -WarningAction SilentlyContinue
New-HardDisk -VM "Virtual Machine Name" -Persistence
IndependentPersistent -DiskPath "PATH TO VMDK AT DR
SITE"
++++++++++++++++++END OF SCRIPT++++++++++++++++++
Sample Example:-
add-pssnapin VMware.VimAutomation.Core
Connect-VIServer -Server mylabvcenter.lab.com
-WarningAction SilentlyContinue
New-HardDisk -VM "vmsunny" -Persistence
IndependentPersistent -DiskPath "[EVA DISK1] vmsunny/vmsunny_1.vmdk"
This
script would be placed on a folder in the SRM Server, let’s say it is located
on the SRM server on c:\scripts
folder. In order to call this script we would add this to the SRM recovery plan
as a pre-power on script as shown in the screenshot below:-
Let us assume that the script which we need to call is located on C:\scripts with the name as sunnyvm.ps1. We will call this script as shown in the screenshot below:-
Here we are calling the powershell application which is calling sunnyvm.ps1 located on the SRM server.
sunnyvm.ps1 contains the following script as stated before:-
add-pssnapin VMware.VimAutomation.Core
Connect-VIServer -Server mylabvcenter.lab.com -WarningAction SilentlyContinue
New-HardDisk -VM "vmsunny" -Persistence IndependentPersistent -DiskPath "[EVA DISK1] vmsunny/vmsunny_1.vmdk"
This would add vmsunny_1.vmdk to the sunnyvm and we then the vm will boot up. Now all the logging can be done on this disk when the VM is either recovered at the DR site or is powered on in a Test Recovery Mode.
Using this engine, you can do other powerful things in your SRM environment, such as Re-sizing vCPU or Memory allocations, add/remove disks or any automation task which would make your recovery automatic and error free. Please feel free to share this article and your thoughts using the comment window.
No comments:
Post a Comment