Deploy VMware VCSA 6.5 onto bare metal Oracle Ravello

Background.

Let’s start with Oracle Ravello, what is it and why am I bothered about it? There is an overview of the service here but let me show you the headline blurb.

Enterprise VMware workloads on leading public clouds

Seamlessly deploy your existing VMware or KVM based data center workloads on Oracle Cloud Infrastructure, AWS, or GCP as-is, without any modification to the VMs, network, or storage. Get data-center-like network services with enterprise-grade performance for production workloads, and on-demand and cost-effective scale for agile dev/test processes.

Quite the promise isn’t it, and largely the claim is true. You can import OVA/OVF exports from a VMware environment and they will in large, just run on the Ravello infrastructure.

So why am I interested in Ravello? As a vExpert, Ravello very kindly offers a free service that entitles you to 1000 CPU hours per month. Nice! With this in mind, I wanted to build my lab here rather than spending money on tin. The cloud is the future don’t you know!

So, if it is so easy to run VMware workloads in Ravello, why am I writing an article on deploying a VCSA (vCenter Server Appliance) in Ravello? From vSphere 6.0, VCSA has been distributed as an ISO file with a deployment wizard built in rather than an OVA file. If you are familiar with installing the VCSA, you will know the wizard asks for a vCenter or ESXi host to deploy the appliance onto, Ravello is neither.

My adventures in VCSA deployment drew a lot of inspiration from this blog post by Emad Younis but my methods for successful deployment ended up being a little different.

Let’s make this thing work.

Now I do make some assumptions at this point. I already have a Windows domain controller deployed in Ravello that serves DNS requests. I dare say you could take advantage of Ravellos own native DNS for this, but I stuck with Windows. This is important as the VCSA deployment absolutely needs fully functioning DNS for this procedure to work correctly. I failed many times trying to get this to work because of DNS.

Very high level on the process, I deploy a temporary ESXi host on Ravello to deploy the VCSA too before exporting the VCSA to an OVF file.

Step 1 – Create the temporary ESXi host.

So you logged into Ravello, created an application and already have a Windows Domain Controller running.

Click on the + symbol to add the Empty ESX VM. This should already be available for you in Ravello.

Ravello41

Give the VM a name. This can be whatever you want.

Ravello42

Increase the memory and CPU so that it has enough resources to run a nested VCSA appliance. 8GB shown below is not enough. 16GB or more should do.

Ravello43

Click on the browse button to attach an ISO image.

Ravello44

Ensure that the ESXi ISO has been uploaded to Ravello. If not you can upload it using the Ravello upload tool. 

Ravello45

Add an additional disk which will become the datastore the VCSA is installed onto. I went with 750GB.

Ravello46

Ravello47

Both NICS are fine on DHCP for this exercise. The DHCP server in the Ravello application will issue an IP address.

Ravello48

Click the services tab. Now click the add button shown below and choose to add supplied service.

Ravello50

You can add the HTTPS service to allow access to the host from public facing IP address. This is not a necessity for this exercise, however. SSH will already be available

Ravello51

Click save and then update. Youl will now have an empty VM published in the Ravello application.

Ravello52

Power on the VM, run through the installation of ESXi and provision the datastore. In my case, I ended up with an out of the box ESXi host, with a DHCP address of 10.0.0.4 and a 750GB local datastore. You do not need to customise this host any further than that.

Step 2 – Prepare the environment prior to deploying VCSA.

I mentioned at the beginning of this post that DNS was killing me when trying to deploy the VCSA. Mainly because I was deploying the VCSA appliance and then exporting it prior to running stage 2 setup, which is the customisation steps.

Ok, first things first, I want to exclude an IP address from the Ravello DHCP server range for this VCSA appliance. 10.0.0.100 in my case.

Ravello00

I also want to make an entry for this in Windows DNS. You could probably do this in Ravello DNS and forgo the domain controller, but I have not tried it.

Open up DNS and create a new A record with associated PTR record.

Ravello23

My VCSA appliance will have Fully Qualified Domain Name of snurfvcsa01.snurf.local. Also, forward lookup zones on Windows DNS points to the DNS server provided in the Ravello application.

 

Step 3 – Install VCSA.

I used my domain controller as the jump box for these steps. You will need some kind of VM running in the application to perfrom these steps.

Download the VCSA ISO and mount it. Browse to the installer and run it.

Ravello03

Choose to install.

Ravello04

Choose deploy appliance.

Ravello05

Accept the Eula.

Ravello06

Choose deployment type. I went for VCSA with integrated Platform Services Controller. This is ok for my needs in a lab environment.

Ravello07

Type in the details for the temporary ESXi host we deployed earlier.

Ravello53

Type a name for the VM and a ROOT password.

Ravello54

Choose deployment size, tiny is good for me. Its not all about the size, its how you use it.

Ravello12

Choose the temp datastore created earlier on the temp ESXi host. I deployed the disks as Thin.

Ravello55

Fill in the system name details for the VCSA. See my reserved IP and FQDN we configured earlier.

Ravello56

Click Finish to complete setup.

Ravello57

Wait for stage 1 deployment to complete.

Ravello58

Step through the stage 2 setup which consists of configuring the vSphere SSO domain and appliance config.

Ravello38

Once stage 2 is complete, log in to the VCSA appliance from a web browser to ensure it works as expected. So for me this https://snurfvcsa01.snurf.local. If you are happy with this, power down the appliance.

 

Step 4 – Prepare appliance for export and upload.

Ravello only supports 7 disk per SCSI disk controller for its virtual machines. The VCSA has 12 disks. We need to move disks 8 – 12 to a second SCSI disk controller.

Open up the web client for the ESXi host. In my case this is https://10.0.0.4

Find the VCSA appliance and edit the settings.

Ravello59

My VCSA already had 2 SCSI disk controllers, don’t know why, but it did. If yours does not, add a second SCSI disk controller.

Ravello60

Move disks 8 – 12 onto controller 1. So disk 8 will move from location 0:8 to 1:0. Disk 9 will move from 0:9 to 1:1 and so on. Power up the VCSA to ensure that it is still working at this point. Once you are happy, power it back down again.

Ravello61

Save the config and export the VM to OVF.

Ravello62

There will be a total of 13 files to export. The OVF config and the 12 VMDK disks. Only download 1 file at a time. I found I had issues when trying to allow all files to export simultaneously.

Ravello63

Now, as per Emads blog that I referenced at the start of this post, the disks need to be converted to non-stream optimised. To do this, you need to grab a copy of QEMU from here.

The command to convert a disk looks a little something like this

Add the full directory paths as appropriate.

Ravello24

Perform the above step for all disks. Copy the OVF file to the converted folder.

 

Step 5 – Importing VCSA to Ravello.

Start the Ravello upload tool again and choose to upload a OVF.

Ravello27

Browse to the OVF file.

Ravello28

Wait for the upload to complete.

Ravello29

It should now appear in the Library section. The VM needs to be verified before it can be deployed.

Ravello30

Ensure the disks are in order of 1 – 12. If they are not, you will run into problems.

Ravello93

Save the config once complete.

 

Step 6 – Deploy the VCSA.

Add the VCSA virtual machine to the existing application.

Ravello94

As we did earlier on the ESXi host, we need to add services to the VCSA but also change it to a static IP address. Edit the virtual machine and change the NIC to a static IP.

Ravello95

Add the following services:

  • HTTP – Port 80
  • HTTPS – Port 443
  • SSH – Port 22
  • Web UI – Port 5480
  • Web Client – Port 9443
  • Remote Console – Port 7374

Ravello32

Enable Ravello OCI bare metal for better performance.

Ravello96

Set prefer physical to true

Ravello97

Click save, click publish and then power on the VM.

That should be it! I know it’s a bit of a faf, but who wants a Windows vCenter server anyways? 🙂

 

Update – Troubleshooting.

If it turns out that in fact that this is not it and you run into issues booting the appliance, follow the steps below to resolve.

The issue a few folk have ran into is that the mount for the boot volume has changed. This can be changed but we need to boot into the shell on the VCSA.

Look Familiar?

Ravello98

Reboot the appliance from the Ravello console by pressing the CTRL ALT DEL button 7 times.

Ravello100

Press the ‘E’ key when the Photon OS screen appears.

Ravello105

Add the following to the end of the linux boot command.

Ravello106

Press F10 to boot into bash.

Once in bash run following command to list the volumes. Notice SDG is mounted and not SDA

Ravello110

Once in bash shell run the following commands to make the file system writable and to make a copy of the fstab file. Then run VI to edit fstab.

Ravello107

Locate the 3 lines with SDA1, SDA2 and SDA3. Press the INSERT key to edit the document.

Ravello108

Change SDA to SDG (or other appropriate mount)

Ravello109

Press the ESC key followed by :x and then carriage return to save and exit. You can run cat /etc/fstab to verify the changes have been made.

Reboot the appliance and hopefully, the VCSA should now boot as expected.

 

Ian

You may also like...

8 Responses

  1. Joe says:

    Great write up. I am having one problem. The first disk of my export disk-0.vmdk is failing the conversion with qemu-img

    qemu-img: Could not open ‘disk-0.vmdk’ : Invalid Footer

    The same command syntax on disk-1 through disk-12 works just fine.

    • Ian says:

      Hi Joe,

      I have found that sometimes on the VM export that Disk 0 can time out and fail. It is the largest disk, so seems to be more prone to failure. For me, ensuring that each disk has downloaded before proceeding with the next disk seemed to work.

      If you can, try and export the VCSA VM again and then try the QEMU process again.

      Cheers,

      Ian

      • Joe says:

        Bizzare, I tried file by file and it’s always disk-0.vmdk that gives the invalid footer message. I believe it is downloading ok because it’s always been the same file size on each try.

        Thanks for the suggestion to go file by file.

        Joe

        • Joe says:

          Ok, here is an update. I was able to use the ovftool to export the VCSA. It created the vcsa.vmx and 13 vmdk files. Then I used qemu-img utility to update all the VMDK files.

          After that I re-ran the ovftool to package the vmx and vmdk files into a single OVA. Uploaded that and deployed to Ravello as per the remainder of your instructions and it’s booted and working now 🙂

          Thanks for the help
          Joe

          • Ian says:

            Great stuff Joe, glad you figured it out and thanks for Sharing. It may help some one else 🙂

            Ian

  1. 20th March 2018

    […] following the great post by Ian Sanderson explaining how to deploy VCSA out of a vSphere cluster, I decided to do the same […]

  2. 24th March 2018

    […] We start creating a brand new App, let’s call it VSAN_LAB (original, isn’t it?), where I’ll deploy 3 ESXi images – already installed, saved from a previous lab – and a VCSA, thanks to Ian Sanderson‘s  great post. […]

  3. 1st April 2018

    […] Deploy VMware VCSA 6.5 onto bare metal Oracle Ravello […]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.