WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
  • VKS
  • Homelab
    • Resources
    • Nested Virtualization
  • VMware Nostalgia
  • Apple
You are here: Home / Uncategorized / Flexible OVF deployments using Deployment Options (e.g. small, medium, large)

Flexible OVF deployments using Deployment Options (e.g. small, medium, large)

08.19.2013 by William Lam // 28 Comments

It is pretty common these days to see a vendor distribute their applications as a virtual appliance which pre-bundles both an operating system and their application instead of a stand alone installer and provides that as an OVF/OVA download. This makes it extremely easy for customers to deploy a vendors application with very minimal effort.

One potential challenge with providing a virtual appliance is that the virtual hardware configuration such as CPU and Memory is pre-configured during deployment and usually optimized for the lowest common denominator such as a small environment or even home lab for that matter. Of course, it is trivial to increase these resources after deployment but would it not be nice if the vendor could provide a "sizing recommendation" option during the deployment of their virtual appliance?

It turns out the OVF format actually supports such a functionality called Deployment Options and this is probably something that is not very well known. I personally have only seen this feature get used in one of VMware's virtual appliances which is vCenter Operations. When going through the deployment wizard of vCenter Operations appliance, you will notice one of the steps is to select your deployment configuration which in this case is based on the number of virtual machines you have in your vCenter Server environment.

The deployment option in this example translates to the number of vCPU and vMemory that the virtual appliances will be deployed with. Of course this information can also be used within the guestOS as part of the initial boot to configure the application based on the resources allocated to the virtual appliance. If you are interested in learning more about Deployment Options and its capabilities, you can find more details on the DMFT website for the OVF standards document starting on page 35.

I recently became interested in this as there was an internal thread asking how to leverage this feature and I initially thought this would be a capability provided by VMware Studio which is a product that helps you build virtual appliances. After deploying VMware Studio, I was unable to find a way to enable this feature as part of the build. Currently it looks like you would need to manually edit the OVF file which is XML based (not ideal) to add in this extra capability. You can also take an existing virtual machine and export using the vSphere Web/C# Client to an OVF/OVA and then add in the Deployment Option as a quick and dirty way of leveraging this feature within your organization.

I took a look at vCenter Operations OVA file to see how Deployment Options work and it actually looks pretty straight forward and requires the following three sections:

  1. Deployment Option Definitions
  2. Virtual Hardware Configurations
  3. Deployment Option Text

I have also provided a sample OVF called MyApp.ovf that you can download to see how these options work.

Deployment Option Definitions

The first section describes your Deployment Options, in the example below we use the words small, medium and large. You can change this text to be anything such as bronze, silver and gold. The only thing to note is the id and msgid which will need to be maped to section #2 and #3

<DeploymentOptionSection>   
 <Info>The list of deployment options</Info>   
  <Configuration ovf:id="small">     
      <Label ovf:msgid="config.small.label"/>     
      <Description ovf:msgid="config.small.description"/>   
  </Configuration>   
  <Configuration ovf:id="medium">     
      <Label ovf:msgid="config.medium.label"/>     
      <Description ovf:msgid="config.medium.description"/>   
  </Configuration>   
  <Configuration ovf:id="large">     
      <Label ovf:msgid="config.large.label"/>     
      <Description ovf:msgid="config.large.description"/>   
  </Configuration>  
</DeploymentOptionSection>

Virtual Hardware Configurations

The second section describes the virtual hardware configuration and uses a configuration parameter id that maps back to the original definition. In the example here, we are looking at the number of vCPU's the virtual appliance can be assigned with. For the initial default, you do not need to specify an entry, but for the others you will need to. Here I have a definition for medium and large and their respective vCPU configuration.

<Item>
  <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
  <rasd:Description>Number of Virtual CPUs</rasd:Description>
  <rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
  <rasd:InstanceID>1</rasd:InstanceID>
  <rasd:ResourceType>3</rasd:ResourceType>
  <rasd:VirtualQuantity>1</rasd:VirtualQuantity>
</Item>
<Item ovf:configuration="medium">
  <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
  <rasd:Description>Number of Virtual CPUs</rasd:Description>
  <rasd:ElementName>2 virtual CPU(s)</rasd:ElementName>
  <rasd:InstanceID>1</rasd:InstanceID>
  <rasd:ResourceType>3</rasd:ResourceType>
  <rasd:VirtualQuantity>2</rasd:VirtualQuantity>
</Item>
<Item ovf:configuration="large">
  <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
  <rasd:Description>Number of Virtual CPUs</rasd:Description>
  <rasd:ElementName>4 virtual CPU(s)</rasd:ElementName>
  <rasd:InstanceID>1</rasd:InstanceID>
  <rasd:ResourceType>3</rasd:ResourceType>
  <rasd:VirtualQuantity>4</rasd:VirtualQuantity>
</Item>

Deployment Option Text

The final section contains the actual text you wish to display for each of your Deployment Configurations. You will see the msgid maps back to your definitions, so if you choose to change the wording, make sure these match up.

<Strings>
 <Msg ovf:msgid="config.small.label">Small</Msg>  
 <Msg ovf:msgid="config.small.description">Use this configuration for small deployments. This deployment will need 1 vCPUs and 1024 Memory for the vApp.</Msg>  
 <Msg ovf:msgid="config.medium.label">Medium</Msg>  
 <Msg ovf:msgid="config.medium.description">Use this configuration for small deployments. This deployment will need 2 vCPUs and 2048 Memory for the vApp.</Msg>  
 <Msg ovf:msgid="config.large.label">Large</Msg>
 <Msg ovf:msgid="config.large.description">Use this configuration for small deployments. This deployment will need 4 vCPUs and 4096 Memory for the vApp.</Msg>
</Strings>

Though I have experienced Deployment Options while deploying vCenter Operations in the past, thinking about it more now, it is definitely something that can be useful for folks building virtual appliances. The really nice thing about this feature is it works when deploying to both a vCenter Server as well as a standalone ESXi host.  Hopefully we will see more virtual appliances leveraging this neat feature of the OVF standard.

More from my site

  • Deploy a truly dynamic OVF using Deployment Option based on the 4 Computes (CPU, Memory, Storage & Network)
  • Programmatically accessing the Broadcom Compatibility Guide (BCG)
  • Quick Tip - Dynamic OVF input properties using DeploymentOptions
  • Intel NUC 9 Pro & Extreme - First "Modular" NUC
  • Supermicro E300-9D (SYS-E300-9D-8CN8TP) is a nice ESXi & vSAN kit

Categories // Uncategorized Tags // deployment options, DeploymentOptionSection, ESXi, ovf, vSphere

Comments

  1. *protected*protected email* says

    08/20/2013 at 5:15 am

    Just from curiousity... have you tried deploying to Fusion or Workstation to see if they support OVF Deployment Options? I'm pretty sure Fusion doesn't support OVF Properties, but Deployment Options are more basic, as they only affect hardware choices and don't interact with the software inside a VM, so it might be 'in there'.

    Reply
  2. *protectedRomain DECKER says

    08/20/2013 at 9:00 am

    Nice post William (as usual) ! 🙂

    I think that you are missing some XML in the section "Virtual Hardware Configurations", between " < Item ; " and " < rasd : AllocationUnits > hertz * 10^6 < / rasd : AllocationUnits > ".

    Reply
    • *protectedWilliam Lam says

      08/20/2013 at 2:22 pm

      Thanks for the catch! I've fixed the XML by adding ">"

      Reply
  3. *protectedFaisal says

    03/02/2014 at 7:20 pm

    It's a really good reference to create flexible OVAs. But, I how one can add custom disk configuration i-e different disk size with differently sized OVA(small, medium, large)?

    Thanks.

    Reply
    • *protectedTazeen Hasan says

      09/02/2015 at 8:28 am

      Still in IT? *protected email*

      Reply
  4. *protectedHaim Daniel says

    04/28/2015 at 3:39 pm

    Hi William,
    great post!

    Please note that some of the basic links for ovf/ova, virtual appliance etc are dead.

    Reply
    • William Lam says

      04/28/2015 at 3:42 pm

      Which links?

      Reply
  5. *protectedGary says

    08/21/2015 at 7:44 am

    Hi William,

    What tags do we use to support multiple IP protocols i.e IPv4 and IPv6, i want to dynamically change property names and validations depending upon user selection ?

    Just trying to leverage some of the features VMware already provides.

    Nice Blog !

    Thanks

    Reply
  6. *protectedDevi says

    05/07/2017 at 10:14 am

    Hi
    I am looking to deploy the OVF that you have provided here (MyApp.OVF), tried using vSphere web client, Right click Datacenter > Deploy OVF Template but it is giving me an error.
    How can i deploy this template?

    Thanks
    Devi

    Reply
    • *protectedDevi says

      05/07/2017 at 10:16 am

      The error is that it is not able to find the VMDK file MyApp-disk1.vmd
      Do you need VMDF files using OVF template? Is there an option to deploy OVF file without a VMDK file?

      -Devi

      Reply
      • *protectedDevi says

        05/07/2017 at 10:20 am

        Hi Lam

        How were you able to achieve such a small size VMDK files. I am getting VMDK files which are about 1. 5 GB

        Thanks
        Devi

        Reply
  7. *protectedSaleem says

    10/07/2017 at 9:47 am

    Hi Lam,

    Thanks for the great post.

    I have created an ova with flexible deployment using "DeploymentOptionSection". It is working with ESXi 6.0.0.
    But the ova is not working with my upgraded ESXi 6.5.0 host managed by vCenter 6.5 web client. version.

    I am getting "Unable to process template" error when I try with vCenter web client.

    Any idea on this ?

    Thanks

    Reply
  8. *protectedWalter says

    10/31/2017 at 11:38 am

    It seems that DeploymentOptionSection is not working on ESXi 6.5 host.

    Reply
  9. *protectedGury says

    11/09/2017 at 4:17 am

    Regarding "DeploymentOptionSection is not working on ESXi 6.5" is that your self conclusion or you get this info from official vmWare?

    Reply
  10. *protectedWalter says

    11/09/2017 at 6:16 pm

    Gury, I have an ovf that contains a DeploymentOptionSection. I use that to allow a user to deploy one of several "sizes" of VMs. Each size has a different combination of vCPUs and memory. This works on vCenter deployments. And it works on standalone ESXi hosts, but only if I use the ovftool or thick client. For 6.5 hosts, the thick client is not supported, so I have to use the webclient. When I use the webclient to deploy on the standalone 6.5 host, the DeploymentOptionSection is ignored and the VM is deployed with the smallest size (1 vCPU, 1 GB memory). When I use ovftool on this same host, I can choose the DeploymentOption and it works fine. It's only the webclient that doesn't work. I think that this part of the webclient hasn't worked in quite a while, but my users only noticed when the thick client was no longer available.

    Reply
    • *protectedgury says

      11/11/2017 at 10:56 pm

      Thank you for your detail response. we are also use the DeploymentOptionSection for the same purpose, and it's worked OK until i try it on the webclient for 6.5. good to know that this is a known problem.
      i will try also to connect this host to a vCenter and hope it will work. Did you got the opportunity to test it via a vCenter? doe's it worked OK?

      Reply
  11. *protectedWalter says

    11/14/2017 at 2:07 pm

    Updating the webclient to version 1.24.0 fixes the problem. DeploymentOptions now work on a standalone 6.5 host.

    Reply
    • *protectedSundeep says

      05/28/2018 at 12:17 am

      Hi Walter ,

      we have similar problem in our environment where post VCSA 6.5 upgrade when we deploy OVF template using vsphere web client with larger size like 4 GB / 4CPU it throws "unable to process template" and we could not move further after this screen . Need to cancle the wizard and select smaller sizes like 2 GB /2 CPU and deploy .

      In previous message you said "Updating the webclient to version 1.24.0 fixes the problem" what is this version for ?

      Reply
  12. *protectedsenthilvason says

    07/13/2018 at 4:19 am

    can we have more than one deployment option in ovf template. Need to one more user configuration to deploy VM

    Reply
  13. *protectedBoaz Barda says

    09/04/2018 at 6:06 am

    after upgrading to webui 1.31 DeploymentOptions are available but does not work as expected. I get {"msgid":"config.Standard.description"} instead of the message itself. while it worked ok in 5.x . anybody else have this issue?

    Reply
    • *protectedBoaz Barda says

      09/04/2018 at 6:24 am

      BTW, Same happen with the example in this post.

      Reply
  14. *protectedNitin Mathur says

    12/19/2018 at 3:54 pm

    Is it possible to have multiple DeploymentOptionSection in the same ovf file and depending upon combination of those we can decide what to do. Or can if hierarchy is supported?

    For example, something like this.
    Option 1.

    The list of deployment options

    The list of deployment options

    Option 2.

    The list of deployment options

    The list of deployment options

    The list of deployment options

    Reply
    • *protectedNitin Mathur says

      12/19/2018 at 4:00 pm

      It won't let me post my xml example here. because of the tags. So can't provide it. but basically want to know if hierarchy is allowed or multiple DeploymentOptionSection in same file is allowed.

      Reply

Trackbacks

  1. Deploy a truly dynamic OVF using Deployment Option based on the 4 Computes (CPU, Memory, Storage & Network) | virtuallyGhetto says:
    02/28/2014 at 4:10 pm

    […] learning about the Dynamic Disks feature in OVF, I decided to revisit OVF Deployment Options again and investigate whether it was possible to include all four computes (CPU, Memory, Storage […]

    Reply
  2. Did you know OVF supports a cool feature called Dynamic Disks? | virtuallyGhetto says:
    02/28/2014 at 4:11 pm

    […] One can easily increase the CPU/Memory of the appliance after provisioning or leverage OVF's Flexible Deployment Options during the deployment of an OVF. On the Storage front it is a bit more difficult since the maximum […]

    Reply
  3. The power of OVF Properties | SFlanders.net says:
    06/26/2014 at 5:50 pm

    […] Flexible OVF deployments using Deployment Options […]

    Reply
  4. Hidden OVF 2.0 capablity found in the vSphere Content Library | virtuallyGhetto says:
    01/12/2016 at 12:07 pm

    […] of a given Virtual Appliance to instantiate at deployment time by making use of pre-defined OVF Deployment Options which can also be overriden by […]

    Reply
  5. Quick Tip - Dynamic OVF input properties using DeploymentOptions says:
    07/23/2021 at 8:28 am

    […] first talked about OVF DeploymentOptions back in 2013, which enables an OVF/OVA author to define a set of deployment profiles (e.g. small, medium, large) […]

    Reply

Thanks for the comment!Cancel reply

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

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • VMware Flings is now available in Free Downloads of Broadcom Support Portal (BSP) 05/19/2025
  • VMUG Connect 2025 - Minimal VMware Cloud Foundation (VCF) 5.x in a Box  05/15/2025
  • Programmatically accessing the Broadcom Compatibility Guide (BCG) 05/06/2025
  • Quick Tip - Validating Broadcom Download Token  05/01/2025
  • Supported chipsets for the USB Network Native Driver for ESXi Fling 04/23/2025

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2025