Thursday, November 10, 2022

PowerVMDSC - Intro and Overview

Background 

For the blog announcing the VMDSC Fling and more information on the intent you can check here:

https://octo.vmware.com/introducing-virtual-machine-desired-state-configuration/

The fling itself and documentation can be downloaded here :

https://flings.vmware.com/virtual-machine-desired-state-configuration

The elevator pitch is that VMDSC is a fling that allows you to set a desired configuration state (CPU, Memory, Cores-per-socket) and then have that state automatically realized at a future time when the virtual machine is rebooted, say for patching. So I as an infrastructure administrator can see that a VM is oversized, set a smaller future state, and then at some time in the future when the app owner reboots their VM for whatever reason that new CPU/Memory configuration is applied. The key use cases are rightsizing and NUMA alignment. 

PowerVMDSC

So what is PowerVMDSC? The only way to interact with VMDSC directly is via its API. When we were developing it and testing we primarily used PostMan to drive the API. Then Steve wrote a little vRO integration to pull recommendations from vROPs into VMDSC. I've been using PowerCLI for forever to interact with vSphere, so I decided go ahead and write a PowerShell module to interact with the VMDSC API. I ended up writing most of it in one night on Halloween 2021 while answering the door for trick or treaters. It was updated this spring to support the updated VMDSC API adding the cores per socket desired state. 

You can check out the PowerVMDSC module code on my Github : 
https://github.com/HeathReynolds/PowerVMDSC

How do I install PowerVMDSC?

The easiest way to install PowerVMDSC is by simply installing it from the PowerShell Gallery via the Install-Module cmdlet. Like this :  

Install-Module -Name PowerVMDSC

PowerVMDSC has been tested with both PowerShell and PowerShell Core (on Windows and Linux). The main caveat to the installation is that PowerShell uses the TLS versions of the host OS. So the host OS needs to support TLS versions that can negotiate a connection with the VMDSC appliance API. The appliance supports the following versions. 

Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253

Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253

Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253

Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253

Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253

The main issue caused by this is that some older operating systems won't work because they don't support any of the TLS secure ciphers supported by the appliance. I tested Windows 2012R2 and it didn't work, but both Windows 2016 and Windows 2019 worked fine. 

How do I use PowerVMDSC?

Use is pretty straightforward if you have any experience with PowerShell and PowerCLI. Like almost all VMware PowerShell modules the first step is to connect to the appliance. The Connect-VMDSC cmdlet will connect to the appliance and cache and authentication token to be used on subsequent commands.

Connect-VMDSC -vmdsc vmdsc.sfo.rainpole.io -vcenter

Once you have an authentication token you can use the PowerVMDSC cmdlets to add new configurations, update existing pending configurations, list pending configurations, and clear pending configurations. You should note that VMs are referenced by their UUID, but all VMDSC cmdlets accept VM UUID as a pipeline input. 

Here are a couple of examples of getting the UUID of a VM and passing it to a PowerVMDSC cmdlet :

PS C:\> Get-VM VMName | %{(Get-View $_.Id).config.uuid} | Clear-VMDSC PS 
C:\> Get-VM VMName | %{(Get-View $_.Id).config.uuid} | Add-VMDSC -mem 4096

Here is an example of setting a pending configuration using the Add-VMDSC cmdlet : 

PS C:\> Add-vmdsc -uuid 420377f7-bceb-d929-912b-6706e5debc71n -cpu 2 -mem 4096 -corespersocket 1 

All of the cmdlets are documented with examples in the PDF documentation downloadable from the VMware Flings site. I'll follow up on this overview with a couple of advanced use cases for PowerVMDSC like exporting all configurations and importing them into a new appliance.

Thursday, November 17, 2016

Links from Nov 17th vForum - Houston

Wednesday, February 24, 2016

Leveraging the Serengeti API with vSphere Big Data Extensions

I've been working with VMware Big Data Extensions more with a couple of customers as we look at providing Hadoop as a Service (HaaS) leveraging the Serengeti API. So what is Big Data Extensions (BDE), and what is the Serengeti API, and why would I use it?

What is it?

BDE is an orchestration layer for deploying and managing Hadoop clusters. It's deployed as an OVA and registered as a plug in in the vCenter web interface. What is unique about BDE is that it allows VMware administrators to manage Hadoop clusters as a single instance, and provides all of the under the hood orchestration. Is supports both deploying the cluster as well as scaling the cluster. BDE is available to all Enterprise + ESXi customers and supported by VMware. You can get it here:

http://www.vmware.com/go/download-bigdataextensions

While BDE is the commercially supported release it's built on a project that VMware released to the open source community call Serengeti. The open source Serengeti project can be found here:

https://github.com/vmware-serengeti

Why would I use it?

The BDE plugin is preconfigured to manage Hadoop clusters as a single instance, which is great if you are a VMware admin with access to vCenter. What happens when you need to offer HaaS to data scientists, and you don't really want to give them access to vCenter. That's where the Serengeti API comes in, we can use it to call out to BDE from another platform.

If you already leverage vRealize Automation you are in luck. VMware has pre-built a plugin pack for vRealize Automation and Orchestration to offer HaaS. You can get it from the solutions exchange here. But what happens if you use another portal? That's where the Serengeti API comes into play.

Dig into the API after the break


Monday, February 8, 2016

Installing a signed SSL cert for EMC ECS Object services

I was working thorough a proof of concept for a customer backing up Cassandra to an S3 object store this weekend. Since I already had the EMC ECS community edition running in the lab I had an S3 object store ready to go, but I needed to install a signed certificate on it to make my customers backup  of Cassandra data to object storage work.

If you are looking for an object store to play with EMC ECS is available free for non-production use. You can get it here, and the EMC CODE team has been nice enough to package up docker containers of the nodes.

Why do I need to do this?

You will want to leverage a signed cert any time your clients need secured access to the object store. You can use a cert from your internal certificate authority as long as it is added to the trusted root of your clients, or one from a public trusted certificate authority.

Let's dive into the technical details after the break.