My current customer is looking at using VMware Cloud Assembly Services (CAS) for their next generation SDDC. It looked like CAS would be able to address some of their Ansible and other OS customization use cases.
Ubuntu cloud ready OVA works great, but unfortunately a cloud ready CentoOS OVA was not available (they use RHEL and CentOS as their primary Linux Distro).
Well it took me a bit, but was able to build an OVA that worked. Here is how I did it.
First I built a clean CentOS 7.x image using the minimal install ISO. I’m not going through this step by step as its been well documented else where.
Secondly, make sure to change the CD ROM back to client after reboot. Do not leave it pointed at one on a datastore, even if it is not connected at power on. Why? Well a Cloud-Init ISO is mounted on the machine when it powers up. CI failed to run when I left the CD pointed at and ISO on a datastore.
After the initial reboot, I simply updated the machine, and installed open-vm-tools and cloud-init.
#yum update -y #yum install -y open-vm-tools cloud-init
Then cleaned up the machine.
#cloud-init clean --logs #sys-unconfig
This last command will return the machine to an uninstalled state, and shut it down.
Next, within vCenter I enabled the vApp Options.
Then gave the appliance a name and added a few properties.
And finally enable ISO as the environment transport.
After saving the settings, I converted it into a template and imported it into CAS.
From there I created a new Image Mapping, and gave it a try in CAS.
The blueprint and Ansible playbook can be found at this github repository.