VMware ESXi and vSphere Cluster Management
Create a vApp in VMware vSphere
Learn how to create a vApp in vCenter Server, select its host or cluster, configure CPU and memory allocation, and add virtual machines.
A vApp is a logical application container in vSphere. It groups related virtual infrastructure objects so they can be organized and managed as an application unit. A vApp can contain virtual machines, resource pools, and nested vApps.
For example, a multi-tier service might place its web, application, and database virtual machines in one vApp. The vApp then provides an application-oriented hierarchy and a place to configure shared CPU and memory allocation policies.
Requirements for creating a vApp
Creating and managing a vApp requires vCenter Server, the centralized management component for vSphere. A standalone ESXi host, accessed without vCenter Server, does not provide this vApp creation workflow.
The account used for the operation also needs suitable vSphere permissions. These normally include privileges to create inventory objects, select the target host or cluster, place the vApp in the intended inventory location, and allocate or modify compute resources. Exact privilege names and required permissions depend on the vSphere version and assigned role.
Where vApps fit in the vSphere inventory
A datacenter is a top-level vSphere inventory container. It can contain folders, clusters, hosts, virtual machines, resource pools, and vApps. An inventory folder is used to organize objects, while a cluster is a logical group of ESXi hosts that provides shared compute capacity. An ESXi host is the physical virtualization server on which virtual workloads run.
When creating a vApp, distinguish between two locations:
- Execution location: the host or cluster that supplies compute resources for the vApp and its contents.
- Inventory location: the datacenter or folder in which the vApp object is displayed and organized.
These choices are related but are not the same. A vApp may be organized in one inventory folder while using a cluster as its execution resource.
Create a vApp with the vSphere Web Client
The vSphere Web Client is the browser-based interface used to manage vCenter Server inventory and resources. The exact labels can vary slightly between vSphere releases, but the workflow follows these stages.
- Sign in to the vSphere Web Client through vCenter Server.
- Open the vCenter inventory and navigate to the vApps area or to the inventory location where the new object should be created.
- Select the create-vApp control or the equivalent command for creating a vApp. This starts the New vApp wizard.
- Choose the option to create a new vApp, rather than selecting or using an existing object.
- Select the ESXi host or cluster where the vApp will run. Choose a resource with sufficient capacity and with which your account has permission to work.
- Enter a descriptive vApp name. Use a naming convention that identifies the application, environment, or service tier.
- Choose the datacenter or inventory folder where the vApp should appear.
- Configure CPU and memory resource allocation. Review shares or priority, reservations, and limits before accepting the defaults.
- Review the wizard summary. Confirm the name, execution location, inventory location, and resource settings.
- Finish the wizard.
- Return to the inventory and verify that the vApp appears in the expected location.
| Wizard stage | Administrator action | Purpose | Key consideration |
|---|---|---|---|
| Create new vApp selection | Choose the option to create a new vApp. | Starts an empty application container. | Make sure the operation is being performed in vCenter Server. |
| Host or cluster selection | Select the target ESXi host or cluster. | Defines the compute resource associated with the vApp. | Check capacity, permissions, and placement relationships. |
| Name and inventory location | Enter the vApp name and choose a datacenter or folder. | Identifies and organizes the object. | Use a clear name and the intended inventory hierarchy. |
| CPU and memory resource allocation | Set shares or priority, reservations, and limits. | Controls scheduling and resource boundaries. | Match settings to application requirements and available capacity. |
| Review and completion | Check the summary and finish the wizard. | Creates the vApp. | Verify the object in inventory after completion. |
Configure vApp resource allocation
Resource allocation controls how CPU and memory are scheduled for the vApp. The main controls are shares, reservation, and limit.
- Shares: A relative priority used when competing objects need the same CPU or memory. Shares do not reserve a fixed quantity. An object with more shares receives a larger relative portion during contention.
- Reservation: A guaranteed minimum amount of CPU or memory for the vApp, subject to available capacity and the applicable resource hierarchy.
- Limit: A maximum amount of CPU or memory that the vApp may consume, even if additional capacity is available.
The default configuration described for a new vApp is normal priority, no CPU reservation, no memory reservation, no CPU limit, and no memory limit. Defaults are often appropriate for an ordinary application grouping, but they should be reviewed rather than accepted automatically.
| Setting | Applies to | Effect | Default described configuration |
|---|---|---|---|
| Shares or priority | CPU and memory | Sets relative access during contention. | Normal priority |
| Reservation | CPU and memory | Protects a minimum amount of the selected resource. | No reservation |
| Limit | CPU and memory | Caps the maximum amount the vApp may consume. | No limit |
| CPU | Processor capacity | Uses shares, reservations, and limits to control CPU scheduling. | No CPU reservation or limit |
| Memory | Guest memory capacity | Uses shares, reservations, and limits to control memory scheduling. | No memory reservation or limit |
Use reservations when an important application must retain a minimum resource level during contention. Use limits carefully because an unnecessarily low limit can restrict an otherwise healthy workload. Adjust shares when the vApp must receive a different relative priority from competing workloads. Always compare the planned allocation with the capacity of the selected host or cluster.
Add virtual machines and other objects
Creating an empty vApp is only the first step. Add the workloads and resource objects that belong to the application after the container is created.
| Object type | How it is used | Resulting relationship |
|---|---|---|
| Virtual machine | Move or place an existing VM into the vApp through the inventory interface, such as by dragging it onto the vApp when supported. | The VM becomes a member beneath the vApp. |
| Resource pool | Add a resource pool when a workload group needs a separate logical resource partition. | The resource pool is nested within or associated with the vApp hierarchy. |
| vApp | Add another vApp when a larger application needs a structured subgroup. | The second vApp becomes a nested application container. |
To group an existing application VM, locate the VM in the inventory, move it into the target vApp using the available inventory command or drag-and-drop operation, and confirm any placement prompt. Then expand the vApp and confirm that the VM is displayed beneath it.
A multi-tier design could use one vApp for web, application, and database VMs. Resource pools or nested vApps can create additional structure when separate tiers need their own organization or resource policy.
Validate the completed vApp
After the wizard completes, perform these checks:
- Confirm that the vApp is visible in the expected datacenter or inventory folder.
- Confirm that it is associated with the intended ESXi host or cluster.
- Open the vApp settings and verify CPU and memory shares or priority, reservations, and limits.
- Expand the vApp and confirm that each intended virtual machine, resource pool, or nested vApp appears beneath it.
- Check that the resulting hierarchy matches the application design and naming convention.
Practical examples
Create an empty application container
Create a vApp named for a new service, select the appropriate datacenter or folder, choose its target host or cluster, retain normal priority with no reservations or limits when that matches the design, and verify the object in inventory.
Group an existing application VM
After creating the vApp, move the application VM into it through the inventory interface. The VM then appears as a member of the application container rather than as an unrelated inventory object.
Protect a critical workload
For a critical application, configure CPU or memory reservations when the workload must retain a minimum resource level during contention. Confirm that the host or cluster has enough capacity to honor the reservation.
Troubleshooting
The option to create a vApp is unavailable
- Confirm that the environment is being accessed through vCenter Server rather than directly through an ESXi host.
- Confirm that the session is viewing the vCenter inventory.
- Review the assigned vSphere role and its inventory-creation and resource-management privileges.
The desired host or cluster cannot be selected
- Verify the relationships among the selected datacenter, folder, cluster, and host.
- Check permissions on the target host or cluster.
- Select an eligible compute resource within the correct vCenter inventory scope.
The vApp was created but contains no workloads
- An empty vApp is expected until objects are added.
- Locate the vApp and move the intended virtual machine, resource pool, or nested vApp into it.
- Expand the vApp and confirm that the object appears as a member.
An application has insufficient resources
- Review whether the vApp has a CPU or memory reservation during contention.
- Check whether a configured CPU or memory limit is restricting consumption.
- Compare shares or priority with competing workloads.
For continued practice, review vApp creation and organization alongside vCenter inventory, permissions, and CPU and memory resource-management concepts.