Chef Bcpc

Bloomberg Clustered Private Cloud distribution
Alternatives To Chef Bcpc
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
8 days ago144agpl-3.0Jinja
Set up a personal VPN in the cloud
12 days agogpl-3.0Shell
Ansible-based solution for rapidly deploying a Docker containerized cloud media server.
Vps Comparison1,316
5 years ago17mitPython
A comparison between some VPS providers. It uses Ansible to perform a series of automated benchmark tests over the VPS servers that you specify. It allows the reproducibility of those tests by anyone that wanted to compare these results to their own. All the tests results are available in order to provide independence and transparency.
3 days ago329apache-2.0Ruby
ManageIQ Open-Source Management Platform
Awesome Hcloud691
22 days ago2March 12, 20212
A curated list of awesome libraries, tools, and integrations for Hetzner Cloud
3 months ago2apache-2.0HCL
Cloudblock deploys secure ad-blocking and VPN for all devices. Text and video guides included! 6 supported cloud providers, plus Ubuntu and Raspberry Pi. Cloudblock deploys Wireguard VPN, Pi-Hole DNS Ad-blocking, and DNS over HTTPS in a cloud provider - or locally - using Terraform and Ansible.
5 hours ago82gpl-3.0Jinja
AgnosticD - Ansible Deployer for multiple Cloud Deployers
Terraform Provider Ibm321812 hours ago115November 17, 2022413mpl-2.0Go
3a year ago12October 22, 2014180gpl-3.0Python
Create clusters of VMs on the cloud and configure them with Ansible.
13 hours ago8June 06, 202241apache-2.0Python
A CNCF Project to Bootstrap & Maintain Trust on the Edge / Cloud and IoT
Alternatives To Chef Bcpc
Select To Compare

Alternative Project Comparisons


chef-bcpc is a set of Chef cookbooks that build a highly-available OpenStack cloud.

The cloud consists of head nodes (OpenStack controller services, Ceph Mons, etc.) and work nodes (hypervisors).

Each head node runs all of the core services in a highly-available manner. Each work node runs the relevant services (nova-compute, Ceph OSDs, etc.).

Getting Started

The following instructions will get chef-bcpc up and running on your local machine for development and testing purposes.


  • OS X or Linux
  • Quad-core CPU that supports VT-x or AMD-V virtualization extensions
  • 32 GB of memory
  • 128 GB of free disk space
  • Vagrant 2.1+
  • VirtualBox 5.2+ or KVM + libvirtd
  • Packer 1.4+
  • git, curl, rsync, ssh, jq, make, ansible

NOTE: It is likely possible to build an environment with 16GB of RAM or less if one is willing to make slight modifications to the virtual topology and/or change some of the build settings and overrides. However, we've opted to spec the minimum requirements slightly more aggressively and target hosts with 32GB RAM or more to provide the best out-of-the-box experience.

Local Build

  • Choose the topology and hardware configuration of your cluster. You can choose from existing configurations in virtual/topology, or build your own. hardware.yml and topology.yml are used by default. To view a list of tested topologies and hardware configurations please see virtual/README.
  • Set the variables in virtual/vagrantbox.json. The variable vagrant_box specifies the Vagrant box we use to build the virtual environment, and vagrant_box_version specifies the version of the Vagrant box.
  • If one would like to build a pre-provisioned custom Packer box and use it as the base box to create the virtual environment, the steps below should be followed:
    • Create virtual/packer/config/variables.json and set the variables. Depends on the virtual machine provider, an example can be found at variables.json.virtualbox.example or variables.json.libvirt.example. This step is essential for building a Packer box that's used as a base box image for building the virtual environment. The variables bcc_apt_key_url and bcc_apt_url are optional, while others must be set. The variable kernel_version specifies the Linux kernel version we'd like to have for the Packer box. While base_box, base_box_version, and base_box_provider specify an official Vagrant box we'd like to use as a baseline for the Packer box, upon which we make further modifications. Last but not least, the variable output_packer_box_name specifies the name we'd like to use when adding the output Packer box to Vagrant.
    • Alternatively, if one has S3 set up and would like to download/upload a packer box, virtual/packer/config/s3.json can be set up to leverage a pre-built packer box. An example can be found at s3.json.virtualbox.example or s3.json.libvirt.example. Run make target make download-packer-box and make upload-packer-box to download/upload a packer box.
    • Run make target make create-packer-box. This will create a Packer box and add it to Vagrant with the name specified by output_packer_box_name.
    • Set the variables in virtual/vagrantbox.json accordingly. When a local custom box built by Packer is used, the variable vagrant_box needs to be set to the name of the Packer box (aka, the same as output_packer_box_name in virtual/packer/config/variables.json), and vagrant_box_version should be set to 0.
    • After these steps, make create all would always use the Packer box, unless virtual/vagrantbox.json is specified otherwise.
    • If the Packer box needs to be updated, we recommend first clean up the old Packer box. To clean up a Packer box, one must first make sure there's no VM using the Packer box by running make destroy, and then run make destroy-packer-box to clean up the Packer box.
  • To make changes to the virtual topology without dirtying the tree, copy the hardware.yml and topology.yml to files named hardware.overrides.yml and topology.overrides.yml, respectively, and make changes to them instead.
  • If a proxy server is required for internet access, set the variables TBD
  • If additional CA certificates are required (e.g. for a proxy), set the variables TBD
  • From the root of the chef-bcpc git repository run the following command:

Download and install the latest version of Packer

wget -O ~/
sudo apt install unzip
sudo unzip ~/ -d /usr/local/bin

Create a Python virtual environment (virtualenv) and activate it

python3 -mvenv venv
source venv/bin/activate
pip install 'pip>=19.1.1' wheel
pip install PyYaml ansible netaddr pyOpenSSL 'cryptography>=3.0,<38.0.0'

To create a VirtualBox build (the default):

vagrant plugin install vagrant-vbguest
make generate-chef-databags
make create-packer-box
make create all

To create a libvirt build, first install the following packages and plugins:

sudo apt-get install build-essential dnsmasq libguestfs-tools libvirt-dev pkg-config qemu-utils
vagrant plugin install vagrant-libvirt vagrant-mutate
vagrant box add bento/ubuntu-20.04 --box-version 202206.03.0 --provider virtualbox
vagrant mutate bento/ubuntu-20.04 libvirt

After the base Bento box has been added for Vagrant, use the following commands to create a virtual build:

make generate-chef-databags
make create-packer-box
make create all

To clean up the build:

make destroy
make destroy-packer-box

You may also want to change cpu model from qemu64 to kvm64 in ansible/playbooks/roles/common/defaults/main/chef.yml

  name: virtual
           cpu_mode: custom
           cpu_model: kvm64

To revert to the default VirtualBox provider, as far as the build is concerned, you can just remove the mutated libvirt box and then unset VAGRANT_DEFAULT_PROVIDER and VAGRANT_VAGRANTFILE environment variables. However since you must also make sure that the different hypervisors don't both try to control the CPU virtualisation facilities, it is best to remove the mutated box and then simply reboot your development host (assuming no scripts reset the VAGRANT variables).

This would look something like this:

$ rm -rf ~/.vagrant.d/boxes/bento-VAGRANTSLASH-ubuntu-20.04/202206.03.0/libvirt/
$ sudo reboot

Hardware Deployment



Currently, most development is done by a team at Bloomberg L.P. but we would like to build a community around this project. PRs and issues are welcomed. If you are interested in joining the team at Bloomberg L.P. please see available opportunities at the Bloomberg L.P. careers site.


This project is licensed under the Apache 2.0 License - see the LICENSE.txt file for details.

Built With

chef-bcpc is built with the following open source software:

Thanks to all of these communities for producing this software!

Popular Cloud Computing Projects
Popular Ansible Projects
Popular Cloud Computing Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.