Deploying Cloud Foundry on OpenStack with BOSH

June 16, 2026 ยท View on GitHub

Note about support: The Release Integration team does not maintain nor validate OpenStack deployments and OpenStack deployers must rely on the general CF community for support.

Prerequisites

You'll need to following to proceed:

  • An OpenStack project
  • A user able to create/delete resource in this project
  • Flavors with the following names and configuration:
NameCPUsRAM (MiB)Root Disk (GiB)Ephemeral Disk (GiB)
minimal13840310
small27680314
small-50GB-ephemeral-disk27680350
small-highmem431232310
small-highmem-100GB-ephemeral-disk4312323100

Prepare OpenStack resources for BOSH and Cloud Foundry via Terraform

BOSH

To setup an OpenStack project to install BOSH please use the following Terraform module (archived). Adapt terraform.tfvars.template to your needs.

Cloud Foundry

To setup the project to install Cloud Foundry please use the following Terraform module (archived). Adapt terraform.tfvars.template to your needs. Variable bosh_router_id is output of the previous BOSH terraform module.

Install BOSH

To install the BOSH director please follow the instructions on bosh.io.

Make sure the BOSH director is accessible through the BOSH cli, by following the instructions on bosh.io. Use this mechanism in all BOSH cli examples in this documentation.

Cloud Config

After the BOSH director has been installed, you can prepare and upload a cloud config based on the cloud-config.yml file.

Take the variables and outputs from the Terraform run of cf-deployment-tf to finalize the cloud config.

Use the following command to upload the cloud config.

bosh update-cloud-config \
     -v availability_zone1="<az-1>" \
     -v availability_zone2="<az-2>" \
     -v availability_zone3="<az-3>" \
     -v network_id1="<cf-network-id-1>" \
     -v network_id2="<cf-network-id-2>" \
     -v network_id3="<cf-network-id-3>" \
     cf-deployment/iaas-support/openstack/cloud-config.yml

Deploy Cloud Foundry

To deploy Cloud Foundry run the following command filling in the necessary variables. system_domain is the user facing domain name of your Cloud Foundry installation.

bosh -d cf deploy cf-deployment/cf-deployment.yml \
     -o cf-deployment/operations/use-compiled-releases.yml \
     -o cf-deployment/operations/openstack.yml \
     -v system_domain="<system-domain>"