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 , QEMU / NVMM. 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
Features…
- Easy to start
- do you like Vagrant style? no problem!
- Ready to use repository with (managed) environment template
- API module: private cloud via API
- Want to deploy a Terraform/aws-cli/kubectl style virtual machine or container using a thin client (from Windows, MacOS, Linux) for the CBSD API? Try this!
- 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, phpIPAM,
monit (health-check)
- 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/bhyve/XEN 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;
- 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 and native ZFS encryption);
- 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 or bhyve VM;
- jail: VNC jail support;
- …
Goals
- 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;
- …
- Roadmap
FAQ
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, Kubernetis, 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. So it stand the test of time. During this huge period, by the standards of 3rd-party FreeBSD projects, a large number of bugs and feature requests submitted by a large number of users have been collected and processed. A number of users successfully use CBSD in large production installations.
In addition, the project has partnered with several FreeBSD/jail/bhyve based service providers who use CBSD in production. This is an additional indicator of long-term prospects.
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: AppJail , bastillebsd , bhyve-rc , bhyvemgr , bsdploy , bmd , bvm , chyves , cirrina , cloudbsd , crate , ezjail , finch , focker , fubarnetes , ioc , iocage: ( in shell , in python ), iocell , iohyve , jadm , jail-primer , jailadmin , jailctl , , jailer , jailutils jest , jocker , kjail , mkjail , pot , pyvm-bhyve , quickjail , qjail , quBSD , junj , rvmadm , tredly , vessel , virt-manager vm-bhyve , warden , weasel , 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
- Bitcloud.sh : open-source programmable cloud platform: rent short-lived virtual machines without registration, with hourly payment in cryptocurrency
- ClonOS : FreeBSD based distro for virtual hosting platform and appliance
- bhyve.cloud : runs dedicated bhyve servers to host VMs with almost any OS: *BSD, Linux, Windows
- k8s-bhyve project : build K8S on top of bhyve hypervisor
- MyBee : FreeBSD based distro with pre-installed CBSD and API service.
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 or Kubernetes with FreeBSD easy to make by yourself without CBSD. ;-)
CBSD-related support, talks and usergroup channel
We have Telegram channel for discussion about using and CBSD development.
Please join us in @cbsdofficial (In english language only)
Please join us in @cbsdofficial_ru (In russian language only)
Our official mailing list is hosted by Tilda Center . Send email to list+subscribe@cbsd.io to subscribe.
Support of the CBSD project!
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 ;-)