In our most recent software releases, we have added a whole slew of new features to The SovLabs Property Toolkit to assist our customers in modifying a special type of vRealize Automation (vRA) Custom Property often referred to as “runtime properties.” Runtime properties in vRA can be modified only at the time of request submission (“runtime”), or as part of an approval policy that is tied to the entitlement for the item that is being requested. Our customer base has requested a way to dynamically set these runtime properties using the Property Toolkit and the SovLabs Template Engine in the same manner that they are able to address their other Custom Property requirements in a data-driven approach to machine provisioning. To meet this need, we developed the “Manage Property Toolkit Approval Policies” Catalog Item for vRA.
Manage Property Toolkit Approval Policies Catalog Item for vRA
This Catalog Item can create a new approval policy or modify an existing policy to enable the dynamic rendering of runtime properties using the Property Toolkit and Template Engine syntax. Below are links to three blog posts that cover the setup of the approval policies and execution for each of the runtime properties that are available today:
- Automate Renaming your vRA Deployments (_deploymentName)
- Network Profiles On the Fly (VirtualMachine.NetworkN.NetworkProfileName)
- SovLabs Property Toolkit - Add Disks Approval Policy (VirtualMachine.DiskN…)
What you may notice in reading through each of these articles is that the Deployment Name is set at the Catalog Item Request level and the other properties are set at the Virtual Machine level. At first blush, it appears that vRA is incapable of applying multiple approval policies through entitlements. Each entitled item only has the capability of having a single Approval Policy applied, right? The purpose of this blog post is to show you how to set your entitlements appropriately so that both approval policies are utilized simultaneously, enabling you to leverage both the Catalog Item Request (or Deployment level) approval policies as well as the policies tht are set at the Virtual Machine level.
Setup and Use Case
With the above referenced articles already covering the basic setup for each of the runtime properties, I will not be covering basic setup in this post. You’ll note in the screenshot below that I already have two Property Toolkit approval policies created in my lab environment. The SovLabsApprovalPolicy is of the type “Service Catalog - Catalog Item Request” and assists with the dynamic application of deployment names in my lab environment.
The Add_Disks_Or_Network policy is of the type “Service Catalog - Catalog Item Request” and is used for dynamically adding disks. For this specific example I will be applying a SovLabs Naming Policy to the Deployment name, and then dynamically adding additional disks to the machine as a result of user input.
I also already have the required SovLabs_vRADeployment_NamingStandard property assigned to my Blueprint.
I take a slightly different approach when selecting the additional disks to be applied. I have a Property Group created which is called SVL_App_Sql where I have added values for SovLabs_VM_Disk1-Size, SovLabs_VM_Disk2-Size, and SovLabs_VM_Disk3-Size. What this allows me to do is to select the number and size of disk in response to the application requirements. During request, I will prompt the user to select their application from a dropdown, and as a result of their selection, we can dynamically apply a SovLabs Property Toolkit property group that has all of the configuration necessary to deploy that application. The property group has custom properties that cover template selection, customization spec, CPU, and memory resources required for the application to execute provisioning appropriately.
In this example, for SQL Server, I opt to add 3 disks to cover a data drive, a drive for tempdb, and a drive for SQL logs. I could even prompt the user for a primary data drive size and then dynamically size my tempdb and log drives in accordance with SQL Server recommended best practices, but for the sake of this blog post, we’re going to keep things simple, and stick with 5GB per drive.
Configure the Entitlements
By default in vRA, you can only select a single Approval Policy per catalog item or service. This default behavior is illustrated in the screenshot below, in which I cannot select an additional approval policy for my Single Tier Application Catalog Item.
However, we can apply a blanket approval policy covering a specific type of component. For this example, we want to apply the Add_Disks_Or_Network Approval Policy to the Virtual Machine Component.
Now we have an Approval Policy applied to the specific catalog item, as well as to any Virtual Machine Components that are provisioned as a result of this entitlement.
Once the request has been submitted, you can see that I have selected SQL as my Application, which will dynamically tell vRA that I need three additional 5GB disks added to the VM during provisioning.
In vRO, I can see both workflows execute for the two separate Approval Policies.
In vRA, I can see that the Deployment name was dynamically derived using a SovLabs Custom Naming Policy.
Under Managed Machines, I can see the three additional disks that were added:.
In addition, in vCenter I can see the 3 disks that were added to the VM.
With the new addition of being able to dynamically set a number of vRA runtime Custom Properties with multiple different Approval Policies, the SovLabs Property Toolkit is constantly providing additional features and value for our customers to better address the challenges that they face when deploying vRealize Automation. In addition to the runtime properties mentioned throughout this blog post, customers running SovLabs 2019.18.0 and newer also have access to be able to dynamically set vRA Reservation Policies during provisioning as well.