FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

О проекте

CBSD — это обёртка из sh-скриптов (преимущественно) вокруг подсистемы jail(8), гипервизоров bhyve, QEMU / NVMM и Xen для BSD операционных систем ( FreeBSD, DragonFlyBSD ). Проект позиционируется как единый инструмент комплексного решения при построении серверов приложений, использующее заранее подготовленные образы виртуальных окружений с типовым набором ПО и требующие минимальной настройки.

Какого-либо нового функционала в ОС на данном этапе не внесено — всё, что могут делать скрипты CBSD, можно сделать командой (командами, десятками, сотнями команд) в CLI через соответствующие утилиты. Проект делается как для облегчения нужд по администрированию виртуальных сред на FreeBSD, так и «just for fun».


  • jail demo
  •  
  • bhyve demo

Особенности…

Цели проекта

  • Предоставить пользователям FreeBSD возможность удобного менеджмента виртуальных окружений
  • Продемонстрировать возможности FreeBSD как Cloud-хостинг платформы;
  • автоматизация типовых операций;
  • создание (своих собственных/персональных) платформ для приложений по-требованию (PaaS);
  • и не только…
  • Дорожная карта

FAQ

Q: «Почему FreeBSD:

  • По мнению авторов проекта, Linux давно не принадлежит обычным людям, влияние на нее оказывают большие и коммерческие организации, тогда как FreeBSD по большей части разрабатывается обычными энтузиастами. Сегодня Linux - это коммерческая ОС для зарабатывания денег - то, чем был Microsoft Windows в 90 годах и против чего боролись когда-то апологеты Linux в то время (автор CBSD один из них). Да, FreeBSD по этим причинам значительно отстает по некоторым характеристикам. Достаточно посмотреть на обилие таких решений как OpenVZ, Docker, Rancher, Kubernetes, LXD, Ceph, GlusterFS, OpenNebula, OpenStack, Proxmox, ISPPanel и десяток других - все это создано коммерческими компаниями под Linux и сделано это очень хорошо. Однако Linux перенасыщен подобными решениями. Поэтому, гораздо более интересно создать это на FreeBSD, где ничего похожего нет. Это - отличный challenge, чтобы что-то улучшить и исправить в FreeBSD. Мы все любим независимость и свободу и FreeBSD сегодня - это независимая и свободная ОС, находящаяся в руках обычных людей.

Q: «Почему CBSD написан на sh:

  • Большая часть кода написана на sh по той причине, что подобные задачи не требуют большой математической логики (подробнее) - ядро CBSD нужно рассматривать как backend к shell-командам, которыми достигается необходимое и в случае проблем, любой системный инженер всегда может локализовать и исправить проблему в коде.

    Проблемы сложности сопровождения "большого кода на sh" изначально решены модульной структурой проекта, где каждый скрипт делает только свою задачу. Остальные, более сложные компоненты CBSD (например, Frontend, который реализует RestAPI для работы интерфейсов) пишется с использованием языка go, nodejs, php и не является частью CBSD Core.

Q: CBSD готова к использованию в production?

  • Это зависит только от вас и ваших требований. CBSD существует с 2013 и на данный момент является одной из старейших систем по управлению виртуальными окружениями FreeBSD, при этом она находится в актуальном состоянии и продолжает совершенствоваться. Таким образом, это прошло проверку временем. За этот огромный период по меркам 3rd-party проектов FreeBSD было собрано и обработано большое количество ошибок и пожеланий, отправленных большим количеством пользователей. Ряд пользователей успешно применяет CBSD в больших production инсталляциях.

    Кроме этого, проект сотрудничает с некоторыми поставщиками услуг на базе FreeBSD/jail/bhyve, которые используют CBSD в продакшене. Это является дополнительным показателем долгосрочных перспектив.

    Нам также интересно узнать больше о применении CBSD и ClonOS, мы создали отдельную страничку, где коллекционируем статьи и обзоры от разных пользователей

Q: AppJail, bastillebsd, bhyve-rc, bsdploy, bvm, chyves, cloudbsd, crate, ezjail, finch, focker, fubarnetes, ioc, iocage: ( in shell, in python ), iocell, iohyve, jadm, jail-primer, jailadmin, jailctl, jailer, jailutils, jocker, jest, mkjail, pot, pyvm-bhyve, quickjail, qjail, quBSD, runj, rvmadm, tredly, vessel, virt-manager vm-bhyve, warden, zjail, и прочее: Какого черта так много проектов, какая разница между всеми?

  • Большинство из них родилось и уже умерло. Некоторые проекты рождаются по причине NIH-синдрома. Некоторые умирают из-за отстутствия долгосрочных целей и отсутствия поддержки. Провести сравнение с CBSD достаточно сложно. Короткий ответ: каждый проект имеет свой особенный вектор развития и цели по сравнению с другими; Вы имеете выбор между различными вариантами технологий и реализаций. Основное отличие между CBSD и другими в том, что CBSD позиционируется как комплексное решение с по возможности простым (когда это возможно) интерфейсом управления. CBSD по этой причине значительно крупнее и больше и не всем это подходит. Но мы преследуем разные цели по сравнению с другими и сфокусированы на комплексных кластерных решениях.

Q: Any child project?

    Некоторые люди экономят свое время и используют CBSD для решения более комплексных задач, некоторые из них:

  • 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
  • MyBee: FreeBSD based distro with pre-installed CBSD and API service.

Q: jail, bhyve, xen... Как насчет Docker, планируется ли поддерка Docker в CBSD?

  • Нет. Мы ориентируемся на большие production-ready и FreeBSD-based инсталляции. Docker прекрасен, но у него нет официальной поддержки FreeBSD, поэтому нет смысла использовать в серъезной работе неподходящие инструменты.

    Вы можете использовать Docker также, как это сделано в MacOS или FreeNAS - через промежуточную прослойку из гипервизора [x/b]hyve. Но это годится больше для забавы и игр, нежели серъезного применения в рабочей инфраструктуре. Но если очень хочется, все это: Docker with FreeBSD легко можно сделать и без CBSD ;-)

Q: «Что означает буква C в названии проекта?»

  • По оригинальной идее, CBSD означает «кластер BSD», поскольку одна из целей проекта - получение одноранговой фермы серверов, обслуживающих большое количество клеток в одном пространстве, что позволяет клеткам мигрировать между нодами и делить между собой общий пул ресурсов.

Q: «В чем заключается кластеризация?»

  • В качестве транспорта при общении одной ноды с другой используется SSH протокол, что обеспечивает шифрованный канал связи. При добавлении нод и обмене ключами, нода начинает реплицировать локальный реестр CBSD (SQlite3 база) на соседей. Например, если на Node1 погасить клетку jail2, то выполнив SQL запрос на Node2 по состоянию клетки jail2, данное изменение в статусе будет отражено.
  • Добавленные друг на друга ноды представляют из себя одноранговую сеть. Другими словами, каждая нода может выполнить CBSD-команды на удаленной ноде с одинаковыми правами. Таким образом, имеется множественные точки входа для управления фермой - вы в состоянии зайти на одну ноду и с нее управлять состоянием и параметрами клеток, расположенные на соседних системах. При этом роль ACL и прав доступа - на совести front-end-ов.
  • Через демон taskd (очередь задач через SQLite3 базу), ноды могут ставить друг на друга долгие или отложенные задачи, при создании получая ID задачи и далее, контроллирующие по нему отработку и результат.
  • Соединение SSH между участниками держится постоянно (опционально), выступая в роли некого heartbeat-а между нодами и мультиплексированием ssh для ускоренного вызова команд (те, является SSH ControlMaster-соединением, что исключает долгую handshake-стадию при удаленных командах)

CBSD-related поддержка, чат и юзергруппа

Мы запустили Telegram канал для дискуссий вокруг использования и разработки CBSD

Пожалуйста, присоединяйтесь к нам в @cbsdofficial (на английском языке)

Пожалуйста, присоединяйтесь к нам в @cbsdofficial_ru (на русском языке)

Поддержать проект!

Если вы хотите помочь, поблагодарить или угостить авторов CBSD пивом, воспользуйтесь ссылкой ниже:

Поддержать CBSD/ClonOS проект

Кроме этого, вы можете распространить информацию о проекте или написать статью об использовании. Кроме этого вы можете лайкнуть проект на странице Github CBSD, нажав Star. Мелочь, а приятно ;-)