Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Algo | 26,988 | 8 days ago | 144 | agpl-3.0 | Jinja | |||||
Set up a personal VPN in the cloud | ||||||||||
Cloudbox | 2,149 | 12 days ago | gpl-3.0 | Shell | ||||||
Ansible-based solution for rapidly deploying a Docker containerized cloud media server. | ||||||||||
Vps Comparison | 1,316 | 5 years ago | 17 | mit | Python | |||||
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. | ||||||||||
Manageiq | 1,256 | 3 days ago | 329 | apache-2.0 | Ruby | |||||
ManageIQ Open-Source Management Platform | ||||||||||
Awesome Hcloud | 691 | 22 days ago | 2 | March 12, 2021 | 2 | |||||
A curated list of awesome libraries, tools, and integrations for Hetzner Cloud | ||||||||||
Cloudblock | 640 | 3 months ago | 2 | apache-2.0 | HCL | |||||
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. | ||||||||||
Agnosticd | 346 | 5 hours ago | 82 | gpl-3.0 | Jinja | |||||
AgnosticD - Ansible Deployer for multiple Cloud Deployers | ||||||||||
Terraform Provider Ibm | 321 | 8 | 12 hours ago | 115 | November 17, 2022 | 413 | mpl-2.0 | Go | ||
https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs | ||||||||||
Elasticluster | 317 | 3 | a year ago | 12 | October 22, 2014 | 180 | gpl-3.0 | Python | ||
Create clusters of VMs on the cloud and configure them with Ansible. | ||||||||||
Keylime | 310 | 13 hours ago | 8 | June 06, 2022 | 41 | apache-2.0 | Python | |||
A CNCF Project to Bootstrap & Maintain Trust on the Edge / Cloud and IoT |
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.).
The following instructions will get chef-bcpc up and running on your local machine for development and testing purposes.
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.
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.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.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.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.make create-packer-box
. This will create a Packer box and add it to Vagrant
with the name specified by output_packer_box_name
.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.make create all
would always use the Packer box, unless virtual/vagrantbox.json
is specified otherwise.make destroy
, and then
run make destroy-packer-box
to clean up the Packer box.hardware.overrides.yml
and topology.overrides.yml
, respectively, and make
changes to them instead.Download and install the latest version of Packer
wget https://releases.hashicorp.com/packer/1.6.6/packer_1.6.6_linux_amd64.zip -O ~/packer_1.6.6_linux.zip
sudo apt install unzip
sudo unzip ~/packer_1.6.6_linux.zip -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:
export VAGRANT_DEFAULT_PROVIDER=libvirt VAGRANT_VAGRANTFILE=Vagrantfile.libvirt
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
chef_environment:
name: virtual
override_attributes:
bcpc:
nova:
cpu_config:
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
TBD
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.
chef-bcpc is built with the following open source software:
Thanks to all of these communities for producing this software!