FreeBSD virtual environment management and repository

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!)

Features…

  • 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 ( 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 invironment 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: support for ZVOL and MD-backend;
  • bhyve: VNC support
  • bhyve: PCI Passthrough and SR-IOV
  • bhyve: UEFI PXE boot support (with unattended install);
  • bhyve: virtual disc management;
  • bhyve: VALE support: the 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;

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;

Why…

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 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: ezjail, qjail, zjail, warden, iocage, bsdploy, jailctl, and other: What the hell is so many projects, what is the difference between all of them?

    • 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: 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 easy to make by yourself without CBSD.

CBSD-related support, talks and usergroup channel

We are started Telegram channel for discussion about using and CBSD development.

Please join us in @cbsdofficial (In english language only)

Support of the CBSD project!

Work on the CBSD Project largely depends on the following factors:

  • The availability of free time outside the daily job (the project is not a commercial): working on CBSD, we sacrifice their time to rest and to communicate with family and friends;
  • On the demand for the project;
  • From the proposals relating to the using part of CBSD or the development and adaptation CBSD components for real / commercial projects;

If you want to help, make donations to the project or buy beer for CBSD developers, use the button below:

PayPal: Donate CBSD"

Via Yandex.Money, RUR:

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 ;-)