2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !
About the project
CBSD is a management layer written for the FreeBSD jail(8) subsystem, bhyve and Xen. The project is positioned as a single integrated tool of comprehensive solution for building and deploying virtual environments quickly with pre-defined software sets with minimal configuration.
No extra OS functionality has been exposed yet, and everything that CBSD can do, you could also run manually with tens or hundreds of commands in the CLI using the underlying utilities (Not that you would want to!)
- jail demo
- bhyve demo
- Easy to start
- do you like Vagrant style ? no problem!
- WEB-interfaces for manage virtual environment (see Installation on FreeBSD articles)
- support for ZFS feature system: ZFS quotes, ZFS send, ZFS snapshots and so on;
- lack of binding to ZFS: CBSD works transparently on the UFS, HammerFS or any other FS: some of people use jail and bhyve on cluster filesystem such NFS, GlusterFS and Ceph which is typical for DC and Failover
- pre/post start/stop hooks for integration with external DevOPS stuff ( DDNS, DNSmasq, Consul, etc ..)
- exporting metrics for jail and bhyve resources usage (Export and display jail and bhyve statistic metrics with CBSD, Grafana and Prometheus)
- bsdconfig-style dialog TUI with which you do not need to learn a large number of commands and arguments
- modular structure - each command is a separate file and it makes a CBSD project easy to maintain. Also, there are number of complex external modules ( Kubernetes for CBSD, vncterm, noVNC, WS/WSS notification, Puppet helpers )
- quick creation of the deployment of virtual environments from scratch by manifest file;
- Profiles for jail creation
- import and export of environments into image;
- cloning virtual environments (including remote node cloning);
- cold migration of environment between nodes;
- resource limit control (prioritization, quotes);
- replication and/or backup to remote nodes;
- distribution of popular environments with a specific set of software and services
- Startup order control;
- Ready to use repository with environment template
- Puppet support and Puppet CBSD module for mass management;
- bhyve: cloud-init support. Full modern OSes stack: (Windows,CentOS,NetBSD,OpenBSD, Debian, Ubuntu and FreeBSD )
- bhyve: live migration support;
- bhyve: support for jailed bhyve;
- bhyve: support for ZVOL and MD-backend;
- bhyve: VNC support
- bhyve: PCI Passthrough and SR-IOV
- bhyve: Shared folders for bhyve vm (via virtio-p9)
- bhyve: UEFI PXE boot support (with unattended install);
- bhyve: virtual disc management;
- bhyve: VALE support: the fast NETMAP-based virtual switch;
- jail: Parallel mass/multiple command execution: jexec
- jail: Full or partial jail data encryption (via GELI);
- jail: XJails (Xorg in jail);
- jail: support for no native architectures via qemu user mode (for example jail on arm and mips64 on x86-64 nodes);
- jail: A ready repository for kernels and world that does not require buildworld/installworld;
- Catalog can stored on memory disks, in ram or on tmpfs with a RO mounted base;
- jail: NAT support (pf, ipfw, ipfilter);
- jail: VIMAGE support;
- jail: CARP support;
- jail: RACCT/RCTL support;
- jail: Per-jail Traffic Accounting;
- jail: port expose - network port forwarding into jail;
- jail: Jail Conversion to PXE/ISO/Memstick-image;
- jail: VNC jail support;
- Provide FreeBSD users easy management for virtual environments
- Show features of FreeBSD as a Cloud-hosting platform;
- Environment deployment automation;
- Creation of ( your own/personal ) application platform with services on demand (PaaS);
- Environment (Image) library for rapid provisioning;
Q: «Why FreeBSD?:
According to the authors of the project, Linux is no longer a member of the common people, it is fully controlled by big commercial organization. while FreeBSD is developed mostly by enthusiasts. Today, Linux - it is a commercial machine for making money - is that it was Microsoft Windows in 90 years. While many Linux users have struggled against the Windows monopoly (CBSD author of one of them). Yes, FreeBSD very far behind in their characteristics in comparing to Linux. Just look at the abundance of such powerfull decisions as the OpenVZ, Docker, Rancher, Kubernetes, LXD, Ceph, GlusterFS, OpenNebula, OpenStack, Proxmox, ISPPanel and a dozen others. All this is created by commercial companies for Linux and this is done very well. However, Linux is oversaturated with similar solutions. Therefore, it's much more interesting to create it on FreeBSD, where nothing like that exists. This is an excellent challenge to improve and fix in FreeBSD. We all love independence and freedom and FreeBSD today - an independent and free operating system, which is in the hands of ordinary people.
Q: «Why CBSD written on sh:
Most of the code has been written in sh, since there are no demands for complex logic (details) - CBSD core should be considered as shell-command backend, which is achieved is necessary and in case of problems, any system engineer can always locate and correct the problem in the code.
The problems of the complexity of maintaining "large sh code" were originally solved by the modular structure of the project, where each script does only its task. The rest, more complex CBSD components (eg, a Frontend, which implements RestAPI for interfaces) written in a language go, nodejs, php, and is not part of CBSD Core.
Q: CBSD is FreeBSD only? How about porting to another platform?
In most cases porting will be tantamount to writing from scratch since the project is based on the FreeBSD-only features. We are interested in porting to platforms derived from FreeBSD. For example we support the HardenedBSD platform.
Another fantastic idea is porting CBSD to DragonFly BSD. If the developers of DFLYBSD can synchronize jail framework (libjail) and be able to port bhyve (see: Port bhyve - The BSD Hypervisor), moving CBSD will be an easy task, and we can get an incredible bundle of DFLY / HammerFS / jail / bhyve / CBSD
Q: CBSD production ready?
It depends only on you and your requirements. CBSD exists since 2013 and at the moment is one of the oldest systems for managing virtual environments on FreeBSD, while it is in the current state and continues to improve. A number of users successfully use CBSD in large production installations.
We are also interested in learning more about the using of CBSD and ClonOS, so we created a separate page where we collect articles and reviews from different users
Q: bastillebsd, bsdploy, bvm, chyves, ezjail, finch, focker, ioc, iocage: ( in shell, in python ), iocell, iohyve, jadm, jail-primer, jailadmin, jailctl, jailutils, pot, quickjail, qjail, rvmadm, tredly, virt-manager vm-bhyve, warden, zjail, and other: What the hell is so many projects, what is the difference between all of them? Any comparison?
Most of them were born and already died. Some projects are born because of NIH syndrome. Some die for lack of long-term goals and support. Comparison with CBSD is quite difficult. Short answer: each project has a very special developmental vector and goals in comparison with other tools; You have a choice between several different implementation options. The main difference between CBSD and others is that CBSD is positioned as a complete solution with as simple (where is possible) management interface. CBSD for this reason is much larger and bigger and not all of this is suitable. But we have different goals in comparison with others and focused on complex cluster solutions.
Q: Any child project?
- Reggae: DevOps tool for CBSD
- BITBSD and BitCloud.sh: CBSD-based programmable VPS platform for blockchain
- ClonOS: FreeBSD based distro for virtual hosting platform and appliance
- bhyve cloud: Bhyve cloud
- k8s-bhyve project: FreeBSD/bhyve-based K8S clusters
Some people save their time and use CBSD to solve more complex tasks, some of them:
Q: jail, bhyve, xen... What about Docker, any plan to support Docker in CBSD?
No. We focus on large production-ready and FreeBSD-based installations. Docker is great, but it does not have official FreeBSD support, so it makes no sense to use inappropriate tools in the serious work.
You can use the Docker as it is in MacOS or FreeNAS - through an intermediate layer with [x/b]hyve hypervisor. But it suits more for fun and games than for serious application in the production infrastructure. But if you really want, all this: Docker with FreeBSD easy to make by yourself
We have Telegram channel for discussion about using and CBSD development.
Please join us in @cbsdofficial (In english language only)
If you want to help, make donations to the project or buy beer for CBSD developers, use link below:
Additionally, you can disseminate information about the project or to write an article about how to use. Besides, you can like the project on Github CBSD, by pressing Star. Trifle small, but nice ;-)