vRealize Orchestrator Workflow: shutdownVSANCluster
My vSphere lab is split into two halves – a low power management cluster, powered by 3 Intel NUCs, and a more hefty workload cluster powered by a Dell C6100 chassis with 3 nodes. The workload servers are noisy and power hungry so they tend to be powered off when I am not using them, and since they live in my garage, I power them on and off remotely.
To automate the process, I wanted to write an Orchestrator workflow (vRO sits on my management cluster and is therefore always on) that could safely and robustly shut down the workload cluster. There were some design considerations:
- Something to do with the C6100 IPMI implementation and the ESXi driver does not like being woken from standby mode. It’s annoying, but not the end of the world – I can use impitool to power the hosts on from shutdown. If you want to use host standby, there’s a hostStandby and hostExitStandby workflow in the package on github.
- I run VSAN on the cluster, so I need to enter maintenance mode without evacuating the data (which would take a long time and be pointless).
- All the running VMs on the cluster should be shut down before the hosts attempt to go into maintenance mode.
- I want a “what if” option, to see what the workflow would do if I ran it, without actually executing the shutdown – it’s largely for development purposes, but the power down/power on cycle takes a good half hour and I don’t want to waste time on a typo!
Increasing the Java Heap size for vRealize Orchestrator Client (7.x)
Back in January 2015 I wrote an article on how to modify the Java heap settings for the vCenter Orchestrator client when working with very large workflows. Since vRealize Orchestrator 7.x has been released, we no longer have an installable client, just a Java WebStart file (.jnlp) that you run, or a package that you can download – but nothing that installs.
Note that none of this is official or supported by VMware as far as I know – it’s the results of my experimentation which has shown some performance improvement by increasing the configured memory pool. Use it at your own risk! (more…)
Adding a vCloud Air (PAYG/Gen2) instance to vRealize Orchestrator as a vCloud Director host
Big thanks to Jose Luis Gomez for this solution, his response to my tweet was spot on and invaluable!
I’ve been trying to configure vCloud Air as a vCloud Director host in vRealize Orchestrator in order to create some custom resource actions for Day 2 operations in vRealize Automation. What I found was that there’s *very* little information out there on how to do this, and I ended up writing my own custom resource mapping for the virtual machines to VCAC:VirtualMachine objects – at least that way I could add my resource action. But this still didn’t expose the vCloud Director functionality for those machines. To do this I needed vCloud Air added as a vCloud Director host.
As per Jose’s advice, I duplicated the “com.vmware.library.vCloud.Host/addHost” action, named it “addHost_vCA_G2”:
I then modified the following line to include “/api/compute”:
newHost.url = "https://" + host + ":" + port;
newHost.url = "https://" + host + ":" + port + "/api/compute";
I then duplicated the “Add a connection” workflow to create “Add a connection (vCloud Air Gen2)” and swapped the old action for the new action:
Now I can add vCloud Air (PAYG/Gen2) as an endpoint in the normal way:
The out-of-the-box “IaaS vCD VM” Resource Mapping now works in vRA and I can create custom Resource Actions against the vCloud:VM object type.
Once again, big thanks to Jose for this solution!
— Jose Luis Gomez (@pipoe2h) April 19, 2016
vRealize Orchestrator REST API – "Connection pool shut down"
If you use the in-built vRealize Orchestrator instance shipped with the vRealize Automation appliance then you might run into this issue when working with the REST client:
Connection pool shut down (Workflow:Get-IdentityToken / Scripting (item3)#14)
The vRA appliance version I have (6.2 – note to self, need to update lab!) includes the plugin version 1.0.4 for REST. According to the release notes, this was fixed in 1.0.5 – typical!
So the solution is to upgrade the REST API plugin 🙂
vSphere 6 Lab Upgrade – vCenter Orchestrator to vRealize Orchestrator
I tested vSphere 6 quite intensively when it was in beta, but I didn’t ever upgrade my lab – basically because I need a stable environment to work on and I wasn’t sure that I could maintain that with the beta.
Now 6 has been GA a while and I have a little bit of time, I have begun the lab upgrade process. You can see a bit more about my lab hardware over on my lab page.
Upgrading the vCenter Orchestrator Appliance
Upgrading the vCenter Orchestrator Appliance is child’s play – just log onto the admin interface at https://vco.fqdn.com:5480 using the root credentials.
Select the update tab, then click “Check Updates”. You should see appliance version 6.0.1 available, then click Install Updates (more…)
vRealize Orchestrator (vRO/vCO) – Troubleshooting SOAP operations
Recently, I’ve had a bit of a SOAP baptism of fire – the project I am working on makes hundreds of SOAP calls to multiple SOAP APIs on multiple hosts. During this time I’ve encountered some common and rare problems and troubleshooting them seems to be a bit of a black art, if the number of results in Google is any measure.
To demonstrate some of these troubleshooting methods I will use a global weather SOAP service, http://www.webservicex.com/globalweather.asmx?WSDL. I’ve added the web service to vRO using the “Add a SOAP host” workflow, and then used the “Generate a new workflow from a SOAP operation” workflow to create a new workflow: GetWeather. This simple workflow runs successfully:
vRealize Orchestrator (vRO/vCO) and vCloud Director – fixing bugs in "Add a vDC"
When you are using a VMware orchestration platform with an official VMware plugin to manage a VMware product, you don’t really expect to have to fix the out-of-the-box workflows. However, during some testing of some workflows with a client the other day we ran into a couple of issues with the vCloud Director plugin workflows.
Software versions used
- vCloud Director 5.5.1 (appliance for development) and 5.5.2 (production deployment)
- vRealize Orchestrator Appliance 220.127.116.11
- vCloud Director plugin 18.104.22.168
CPU allocations are incorrect for both "Add a VDC"
When you provide the CPU allocation model properties for the Allocation Pool model the first problem is decrypting the naming – it doesn’t match the names in the vCloud Director interface!
The "CPU (GHz)" value is the vCPU speed, and the "CPU Quota (GHz)" value is the CPU allocation
Performance tweak – increasing Max Heap Size for the vRealize Orchestrator (vRO/vCO) Client
[Update Dec 2016: An updated article for vRO 7.x is available here]
I’m developing some very large, very complicated workflows for vRealize Orchestrator (vRO/vCO), and as it’s a Java based application it will probably come as no surprise to many that the performance of the client drops off sharply as the client’s RAM usage creeps up.
When working on some of the larger workflows, or after long sessions and heavy clipboard use, the client would become (even more) sluggish and in some cases would freeze entirely. This is particularly annoying because the vRO client has a habit of forcing itself on top of other applications – for instance Task Manager.
Exhibit 1 – a large workflow!
3DES Password Based Encryption with vRealize Orchestrator (vRO/vCO)
A requirement that often arises in large, complex orchestration projects is the need to encrypt and decrypt information. One such requirement recently specified triple DES password based encryption as the standard, which led me through a lot of Google searches to CryptoJS.
Importantly for me, the collection includes a 3DES library. Unfortunately, this is where I stalled for a long time – I could not manage to get the CryptoJS library to work, and it became clear that it was likely to be beyond my skill set. Falling back on Google with a vengeance, I found this VMware Communities post – CryptoJS Hashers and Cyphers, and in it a package created by Dan Linsley (@danlinsley) which contained an encrypt and decrypt action for 3DES, based on CryptoJS. The package also contains actions for generating random initialisation vectors and base64 encoding. In short, exactly what I needed!
Based on this excellent work, I created two workflows, Encrypt-3DESPassword and Decrypt-3DESPassword. (more…)