A set of use cases that I was really excited for when I first heard about ESXi-Arm a few years ago was around the topic of vSphere Automation and Development. I speak with many customers who are just starting out on their Automation journey whether that is using PowerCLI, one of our many vSphere Automation SDK or even directly to the new vCenter REST API which all new features are being exposed through these days.
One of the biggest challenge for new comers is simply getting access to hardware that they can start playing around with and although there are is plethora of vSphere Homelab choices, it does require some amount of investment, which is definitely worth it in the long run. However, if you are just getting started and maybe you want something that is a bit more lighter weight, there are not too many options outside of an Intel NUC. I know many consultants actually carry around an Intel NUC that contains several VM images that they use to with their clients, including demos.
With the small form factor, low cost and reduced power consumption of the Raspberry Pi, I think this really opens up the door for some interesting creative solutions:
- Basic vSphere footprint that can be used for work or learning purposes
- Easy way to learn and explore the vSphere API with an actual host and enabling real VM deployments
- Trying out Infrastructure-as-Code (IaC) tools such as Terraform and Ansible
- Quick way to run through basic demos in front of customers
- On-demand and self-contained lab environment for small Hackathon at your local VMUG or even at VMworld
Something I was really interested in early on was to be able to use ESXi-Arm with the Raspberry Pi to not only have a basic ESXi environment but also have PowerCLI environment up and running in an Arm VM. My first thought was to get this setup using Photon OS, which not only has Arm distribution but also has support for Powershell and PowerCLI. I was hoping with some tinkering, I could easily get Powershell for Arm to run on PhotonOS (which it did) but I then ran into issues installing PowerCLI itself.
I decided to give up for now and take a look at Ubuntu which also supports Powershell for Arm, but the Microsoft documentation only listed instructions for 32-bit and ESXi-Arm requires a 64-bit. Taking a look at the Powershell release files, I noticed there was 64-bit package and with a few minor adjustments to the commands, I got PowerCLI installed and connected back to my rPI which was attached to my x86 vCenter Server!
Step 1 - Download and Install latest Ubuntu Server for Arm as a VM on your ESXi-Arm host. In my setup, I am using Ubuntu 20.04 AARCH64
Step 2 - Update and install the following packages
sudo apt-get update
sudo apt-get install -y '^libssl1.0.[0-9]$' libunwind8
Step 3 - Download the latest Powershell Core for 64-bit Arm and extract the contents:
wget https://github.com/PowerShell/PowerShell/releases/download/v7.0.3/powershell-7.0.3-linux-arm64.tar.gz
mkdir powershell
tar -xvf ./powershell-7.0.3-linux-arm64.tar.gz -C ~/powershell
ln -s ~/powershell/pwsh /usr/bin/pwsh
Step 4 - Launch Powershell by running the following command:
pwsh
Step 5 - Install PowerCLI and setup the default PowerCLI configuration such as enabling/disabling CEIP and Invalid Certificate warnings for self-signed environments:
Install-Module VMware.PowerCLI
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP $false -Confirm:$false
The screenshot below demonstrates using PowerCLI on an Ubuntu 20.04 AARCH64 VM connected to an x86 vCenter Server managing an ESXi-Arm host running the latest ESXi-Arm Fling! 😀
Get-Vmhost 192.168.30.240 | select Name, Manufacturer, Model, ProcessorType
I had mentioned Terraform above and although I was able to successfully install Arm version of Terraform, I found that when using the vSphere Provider to deploy an OVA, it would cause Terraform itself to crash. I have already filed a bug which you can follow but hopefully other VMware/Terraform workflows will function while this issue is being looked at.
supersjimmie says
I'd like to make my first step into terraform with those pieces.
You mention that "I was able to successfully install Arm version of Terraform" but you ran into a bug, and on github I see a reply that says "I just downgraded the plugin version to v1.24.0. This seems to work like expected!".
Any change you can explain HOW you installed that ARM version of Terraform on your VM, and also how we can then work-around the bug by downgrading the vsphere plugin?