Ok finally! I had this finished awhile ago, but I wrote it using our version 2.0 plugin–so I couldn’t post it until the plugin was certified by VMware. That plugin version is now certified and posted on the VMware Solution Exchange (see my post here).
Moving forward, we will likely be posting new workflows in various packages (working on an ActiveCluster one now), instead of including them directly in our plugin. This will make it easier to update them and add to them, without also having to generate an entire new plugin version.
So first, download and install the v2 FlashArray plugin for vRO and then install my workflow package for VVol on the VMware Solutions Exchange:
https://marketplace.vmware.com/vsx/solutions/flasharray-vvol-workflow-package-for-vro-1-0?ref=search
So whats in it? Well quite a lot. Writing all of this was a lot of fun–I learned a whole ton, especially when it comes to VVol replication. What is has to offer and how it works. I wanted to get this out sooner, but I kept writing more workflows. But I’m finally happy with it enough to release version 1.0.
Workflows:
Configuration:
- Register VASA Providers–this registers both FlashArray VASA providers to a vCenter.
- Unregister VASA Provider–this unregisters a selected VASA provider.
- Mount FlashArray VVol Datastore to Cluster–this takes in a FlashArray and a vCenter Cluster and mounts the VVol datastore to it. It will add a protocol endpoint to the hosts if it is not already presented.
- Unmount FlashArray VVol Datastore–this will remove the FlashArray VVol datastore from a given cluster (if there are no registered VMs on it).
Migration
- Convert RDM to a VVol–this takes in a VM, a RDM and a VVol datastore on the same array as that RDM. A new VVol is created and the RDM is copied to the VVol on the array (instant meta-data copy) and the RDM is removed and deleted on the FlashArray.
- VMFS Evacuation–this will take all of the VMs on a VMFS and Storage vMotion them to a VVol datastore. If the VMFS is empty at the end, it will unmount the VMFS and delete the underlying volume.
Cloning
- Clone RDM to New VVol Disk–if you have an existing RDM, it will clone it to a new VVol on the same FlashArray as the RDM and present it to a VM.
- Clone VVol disk to a new VVol disk–This will take any VVol and create a copy and present it to another (or the same) VM.
- Create Managed VVol snapshot--this creates a managed snapshot of the whole VVol VM. This will return the VM snapshot and the various FlashArray snapshot objects that were created.
- Create Unmanaged Snapshot--this will create a FlashArray snapshot of the volume that is the specific data VVol and return the FlashArray snapshot. This bypasses VMware so only the selected volume is snapshotted.
- Delete VM snapshot–deletes a VM snapshot
- Overwrite Existing VVol from another VVol--this takes in a VVol and another VVol on the same array and overwrites it. If the target VVol is a different size it will either resize it force (VMware requires this even though the FlashArray doesn’t). It will grow the target as needed, or if it is smaller, it will delete it and create one with the correct size (VMware doesn’t allow shrinking a VVol directly).
- Revert VM to a snapshot--reverts to a VM snapshot
Replication
- FlashArray VVol Test Failover–run a SRM-like VVol test failover for replicated VVol VMs. Includes clean up.
- FlashArray VVol Failover--run a planned migration or disaster recovery failover of replicated VVol VMs. Includes reprotect.
SPBM
- Assign Storage Policy to Multiple VMs--this will Storage vMotion the VMs to a compatible VVol datastore (if needed) and then assign and set the policy on the VMs.
- Assign Storage Policy to a VM--You can choose to assign a policy to the whole VM, the home directory (config VVol) or a single virtual disk (data VVol). This will then Storage vMotion the selected object to a compatible VVol datastore (if needed) and then assign and set the policy to it.
- Create a new VVol VM Storage Policy–this allows you to choose from a variety of capabilities to create a new customer policy. You can have it created in one or more vCenters at once.
- Create a VM storage policy from a FlashArray protection group. This takes in a FlashArray protection group policy and creates a VM Storage Policy in vCenter ( or more than one vCenter). This will import the local snapshot and/or replication policy as well as replication targets etc. and add them to the policy.
- Delete a VM storage policy.
Actions
Furthermore there are a ton of actions (I wrote 91 of them in this package). These workflows use actions to do a lot of this work, so if you want to build your own, you can use the actions. The actions come in a few categories:
- Basic–these are some fundamental actions used for VVols, like:
- Get the FlashArray snapshot object that corresponds to a data VVol snapshot ID
- Get the FlashArray Volume that is a data VVol (input being the FlashArray datastore and the VVol UUID)
- Get the FlashArray Volume that is a data VVol (input being the FlashArray object and the VVol UUID)
- Get all FlashArray volumes of a VM. This returns all of the FlashArray volumes that make up the data VVols of a VM
- Get FlashArray volume VVol type (config, data, swap, etc).
- Get FlashArray volume VVol UUID–this returns the string UUID of a input FlashArray volume (if it isn’t in use as a VVol this will be null)
- Helper. These are some basic actions I kept using to help the other workflows. If I do the same thing more than one, I make it an action instead of a scriptable object.
- Protocol endpoints.
- Add a PE to an ESXi host
- Add a PE to an ESXi cluster
- VVol replication. Getting replication groups, failure domains, matching replication groups to FlashArray protection groups, etc. There are a lot in here.
- Snapshots
- Create VVol snapshot
- Delete VM snapshot
- Get all FlashArray snapshots of all VM snapshots of a VM (parent and children)
- Get FlashArray snapshots of one VM snapshot
- Revert to VM snapshot
- Storage policies (retrieving policies)
- VVol datastores. This is about mounting, unmounting, getting the FlashArray object of a VVol datastore, etc.
- VASA. Translation of VASA providers to arrays, getting the active provider etc.
I will be updating this workflow package as needed and adding more actions, workflows and features. Please send along feedback!
Let’s look at some demos!
Configuration of VVols
Below is a demo of setting up VVols from scratch using the vRO plugin and my workflow package:
Test Failover
Failover
Lots more to come!
Can this package be used for workflows that simply batch attach RDM’s to multiple VMs? That is what I need.