In addition to Python and NodeJS, vRealize Automation 8 also supports PowerShell as a scripting language for writing Action Based Extensibility (ABX). This will allow administrators who have already knowledge of PowerShell as a scripting language to use their skills to quickly develop automation for the lifecycle of their Deployments.
Here, in this post I will demonstrate how we can use PowerShell for Action Based Extensibility. To perform this complete task, we will follow the below steps.
1. Create a PowerShell Action
2. Create a Subscription
3. Create/Update your blueprint to use this PowerShellABX action.
1. Create a PowerShell Action
Login to vRA portal and go to Cloud Assembly > Extensibility > Library > Actions and click on +NEW ACTIONOn the New Action wizard, fill the Name and select Project and click Next
Select PowerShell in script language and write the code & in the right-hand pane choose On Prem in PaaS provider and delete all default entries & Save.
PowerShell code below takes a custom property from the Blueprint and uses it to rename the Virtual Machine before deployment.
function handler ($context, $payload) {
$oldVMName = $payload.resourceNames[0]
$newVMName = $payload.customProperties.userDefinedName
$returnObj = [PSCustomObject]@{
resourceNames = $payload.resourceNames
}
$returnObj.resourceNames[0] = $newVMName
Write-Host “Setting machine name from $($oldVMName) to $($newVMName)”
return $returnObj
}
Writing an ABX action in PowerShell is the same as with Python or NodeJS – we define a main handler function that receives a context and payload object. Context contains details of the execution of the action, while payload gives details about the deployment and event. The payload is a PSCustomObject whose properties match the event that is being subscribed to.
2. Create a Subscription
To create the subscription, navigate to Cloud Assemble > Extensibility > Subscription and +NEW SUBSCRIPTION
Fill all the details like, Name, Description, in the Event Topic click on +ADD and select Compute Allocation, toggle switch Condition and put the filter event as blueprint ID. In the Action/workflow click +ADD and select the Action created in earlier step “PowerShell ABX”, enable Blocking & in Subscription scope either choose Any Project or select a project from +ADD PROJECT and click Save.
3. Create/Update your blueprint to use this PowerShellABX action.
To create a blueprint, navigate to Cloud Assembly > Design > Select Blank canvas from NEW FROM tab in Cloud Template (Blueprint) and add below lines in your blueprint code.
Test your blueprint and deploy a vm to verify. When deploy a vm we can see option to give VM Name, give it a name and click on DEPLOY.
In the Deployment we can see the vm has renamed as RenameVM
Also in the vCenter we can see a vm name RenameVM deployed.
I hope you enjoyed reading this post as much as I enjoy writing it.