Deploying the Cloudforms appliance template in vCloud Director

Red Hat provides the Cloudforms software nicely packaged as a Vmware OVA template; unfortunately this means that some manual work is required to deploy it under vCloud Director. Note that this blog post only talks about getting the template in vCloud Director; managing a vCloud Director provider is outside the supported list of Cloud providers for Cloudforms.

Once we have downloaded the Cloudforms software, the first thing is converting the template from OVA to OVF formats - the only supported format for vCloud Director.

# ovftool cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ova cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf
Opening OVA source: cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ova
Opening OVF target: cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf
Writing OVF package: cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf
Transfer Completed                    
Warning:
 - Wrong file size specified in OVF descriptor for 'disk.vmdk' (specified: 42949672960, actual 707240448).
 - No manifest entry found for: 'disk.vmdk'.
 - No manifest file found.
Completed successfully

Note there is a warning message regarding the disk.vmdk file; this is due the template being in Thin format. In order to vCloud to accept the OVF file, it is necessary we modify the produced cfme-vsphere-*.ova with the right size:

sed -i 's#42949672960#707240448#g' cfme-vsphere-*.ovf

Once we have done that, we need to ammend the Manifest file with the right sha1sum:

# sha1sum  cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf
17df197d9ef7859414aac0f6703808a9a8b99286  cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf

# cat cfme-vsphere-5.7.1.3-1.x86_64.vsphere.mf
SHA1(cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf)= 17df197d9ef7859414aac0f6703808a9a8b99286
SHA1(cfme-vsphere-5.7.1.3-1.x86_64.vsphere-disk1.vmdk)= 696baa7f8803beca7be2ad21cde2b6cc975c6c57

Finally, we can import the Template into vCloud Director itself, using again the ovftool software:

# ovftool --vCloudTemplate cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf  "vcloud://myuser@myvcloud.example.org:443?org=myorg&vappTemplate=CFME42-Template&catalog=MyCatalog&vdc=MyVDC"
Opening OVF source: cfme-vsphere-5.7.1.3-1.x86_64.vsphere.ovf
The manifest validates
Enter login information for target vcloud://myvcloud.example.org/myorg
Username: myuser
Password: *******
Opening vCloud target: vcloud://myuser@myvcloud.example.org/
Deploying to vCloud vApp template: vcloud://myuser@myvcloud.example.org/
Transfer Completed
Completed successfully

Once we complete that step, the template is available to start deploying a new Cloudforms VM.

Happy hacking!