vRA + SPBM + VVols = Awesome

When I first joined SolidFire in June of 2014 I remember sitting in my first ‘deep dive’ on the product and hearing Dave Cahill (@dcahill8) say something along the lines of “SolidFire + an automation/orchestration tool = NGDC”. That sounded cool, but personally I’ve never done much with automation and orchestration tools. Frankly, I found them overly complex and intimidating. I always had a full plate anyways, so why invest the time?

Fast forward a couple years and it certainly has become apparent that the saying ‘evolve or die’ applies fairly well to your job skills 🙂 I’ve found the best way to learn something is find something you are passionate about and extend that. So in my case, that means ‘how do I use this with VVols/SPBM?’. 

I should note, this is a spiritual extension of the “Project Magic” work that Josh Atwell, Rawlinson Rivera and others developed back in 2015. While that was focused on VMFS implementations, this work is centered on VVols. I also wanted to give more details on how one would actually implement this since it was mostly PoC material. If you are interested, you can find an example of Project Magic + SolidFire here: 


Getting Started

I won’t lie, it took me a week of intermittent work to get vRA to the point it would deploy a VM.  That being said, it would have been longer if not for the excellent work by Erik Shanks at theithollow.com and Michael Rudloff at open902.com Both have very good guides on getting vRA 7.x off the ground the right way.  For my purposes, I’m setting up a configuration that aligns with the “Multi-tenant Example with Infrastructure  Configuration Only in Default Tenant” example from this webinar. More to follow on that in future posts.

vRealize Orchestrator vRA SPBM Integration Plug-in

vRA has no integrated support for SPBM yet, so this plugin gives us the next best thing. First step is to grab the plugin files from the Solutions Exchange. Getting the plugin working is pretty straightforward if you follow the installation guide, with a couple of exceptions. In my particular case, I had to make the following changes:
  • On page 14 “Enable the Set Storage Policy for Virtual Machine Provisioning” I had to make two changes:
    • Your endpoint should be the name of your actual vCenter endpoint, not named “endpoint”. 
    • The “bind” checkbox for your endpoint should not be checked. This resolved a “Unable to refresh request form from the server. Required field with ID: vCenter  missing” error I was getting when requesting a blueprint.  
  • On page 16, step 9c when creating the event subscription, I ended up removing the blueprint name conditional because I didn’t want to create a new subscription for each blueprint I created. This will make the plugin attempt to apply SPBM policies to all VMs stamped out through vRA which is what I wanted in my environment. 

I will be adding a couple of disks to some of my blueprints so I defined five property definitions under Administration -> Property Dictionary -> Property Definitions. 

Creating SPBM Policies

So what do SPBM policies buy you on SolidFire? Well there is only a single published capability and that is QoS. “Why only one” I hear you say? We don’t have to advertise things that the platform takes care of for us. So even though you are taking advantage of the deduplication, compression, data protection, QoS (and other) features, we don’t have to call them out specifically via an SPBM policy since they are always on and you get them automatically by simply using the platform. The below graphic helps tease that out a bit. 

That being the case, our SPBM policies are there simply to configure QoS on a per VMDK level. In this case there are five policies I’m going to leverage:
  • ServerOS-Base – Sets QoS to 1000/2500/10000 IOPS for Min/Max/Burst respectively
  • ServerOS-SQL – Sets QoS to 2000/4000/8000 IOPS for Min/Max/Burst respectively
  • SQL-Backup – Sets QoS to 2500/5000/10000 IOPS for Min/Max/Burst respectively
  • SQL-DB – Sets QoS to 2500/5000/10000 IOPS for Min/Max/Burst respectively
  • SQL-Logs – Sets QoS to 1000/4000/8000 IOPS for Min/Max/Burst respectively

Creating vRA Blueprints with a Single Disk/Policy

In my environment I have created three blueprints as shown below. The two datacenter blueprints have a single disk configured. These blueprints will assign a single SPBM policy shared by VMHome and “Hard Disk 1” of the VM. Pretty straightforward, even for me.

To configure the VM Home storage policy, open the blueprint and navigate to Properties -> Custom Properties and add “VMHomeStoragePolicy” and set the value to “Datastore Default”.  I also set the VMware.VirtualCenter.OperatingSystem and Hostname custom properties to aid in naming and getting the VM type right.


Next step is to configure disk0. To do that, head over to the storage tab and add a disk if you haven’t done so already. Then set any options you want, such as label and storage reservations. 

Now click the custom properties edit symbol and add a new property called “VirtualMachine.Disk0.DiskStoragePolicy” and set the value to “Use VM Home Storage Policy”. Note: If you have a 2nd disk that should get the same policy, then add the “VirtualMachine.Disk1.DiskStoragePolicy” custom property to the 2nd disk with the value “Use VM Home Storage Policy”. Repeat as needed if you have multiple disks that will share the same policy.


Now, publish the blueprint and publish it to the catalog (Administration -> Catalog Items). If you don’t see the blueprint make sure you have created a service under Administration -> Services and that your catalog item shows as being part of the service. 


Request the blueprint you just created. Under the “vSphere Machine” General tab you will see the particulars of your blueprint. If everything is set up right you will see a dropdown box listing the SPBM policies available for the “VM Home Storage Policy”.


Submit the request and assuming everything is good, a couple minutes later you will be the proud owner of a new VM with your specified SPBM policy applied to the VM Home and Hard Disk 1.


Did it work? Great! Have a drink and celebrate! Didn’t work? You are going to need more drinks.

As an aside, the timing of the SPBM policy application is a bit different if you are creating a VM from scratch vs cloning from a template. For newly created VMs, the SPBM policy is applied very quickly after the VM is created. For cloned VMs,  if you look at the VM right after it is created, it will still have whatever SPBM policy was applied to the template. This is because the vRO workflow that sets SPBM policy is executed as the last step before powering on the VM. If the policy is still wrong by the time the VM powers up, the SPBM policies didn’t get applied. 

Creating vRA Blueprints with Multiple Disks and Policies

Creating blueprints where multiple disks will have disparate policies starts off the same way. For each additional disk after ID 0, add the custom property “VirtualMachine.DiskN.DiskStoragePolicy”, where “N” is the number of the disk. 


Request the blueprint and you will see the request prompts for multiple policies to be applied to the VM.


Once the VM is deployed, check out all those policies! 😉

And what does that get us? Custom QoS for all our mount points 🙂 


Hopefully this is useful and you learned something along the way. I’m looking forward to posting more on vRO and vRA stuff in the near future. I’m just getting started, so if you have tips to share, I’m all ears.

Leave a Reply

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