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 версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.

Создание виртуальной машины bhyve

Команда bcreate, bconstruct-tui

		% cbsd bconstruct-tui
		
		% cbsd bcreate jconf=/path/to/conf.jconf
		
Описание:

Виртуальная машина создается по заранее сформированному конфигурационному файлу через cbsd bcreate jconf=path_to_cfg.

Для формирования конфигурации можно воспользоваться скриптом cbsd bconstruct-tui, либо WEB интерфейсом.

Для создания через DIALOG:

		% cbsd bconstruct-tui
		

Это же меню для создания jail доступно при конфигурировании CBSD через bsdconfig

Если bconstruct-tui отработала корректно, по окончанию будет задан вопрос о создании виртуальной машины. В случае положительно ответа, bcreate будет выполнен на новую конфигурацию автоматически. В противном случае, скрипт выведет путь к конфигурационному файлу (в $workdir/tmp), по которой можно создать виртуальную.

Профили виртуальных машин

Профили, которые поставляются в комплекте с CBSD и по которым системы определяют URL откуда скачивается ISO образ, находятся в каталоге ~workdir/etc/defaults/ и начинаются с префикса vm-

. Например, увидеть список можно по команде:

% ls -1 ~cbsd/etc/defaults | grep ^vm-
vm-dflybsd-x86-5.conf
vm-freebsd-FreeBSD-x64-11.1.conf
vm-freebsd-FreeBSD-x64-12.0-LATEST.conf
vm-freebsd-FreeNAS-x64-11.conf
vm-freebsd-pfSense-2-RELEASE-amd64.conf
vm-linux-CentOS-7.4-x86_64.conf
vm-linux-Debian-x86-9.conf
vm-linux-fedora-server-26-x86_64.conf
	

Поскольку релизы CBSD выходят гораздо реже, чем версии различных дистрибутивов, эти профили могут свойство устаревать достаточно быстро и как следствие - тот или иной образ становится недоступным по старым ссылкам.

Для того, чтобы не попадать в подобные ситуации и получать новые профили, вы можете обновлять их отдельно от CBSD через Makefile в каталоге ~workdir/etc. В Makefile есть две команды (вы их увидете, если напишете просто make в этом каталоге):

  • make profiles-create - делается единоразово, запуская инициализируя git репозиторий из GitHub: https://github.com/cbsd/cbsd-vmprofiles
  • make profiles-update - делается каждый раз (после profiles-create), когда вы хотите обновить профили

Поскольку эти операции используется git, вам необходимо его предварительно установить в систему: pkg install devel/git (или из портов: make -C /usr/ports/devel/git install)

Например:

% cd ~cbsd/etc
% make profiles-create
% make profiles-update
	

Если вы заметите, что какая-то версия профиля устарела и в репозиторий https://github.com/cbsd/cbsd-vmprofiles никто не выслал исправление, вы можете законтрибьютить CBSD, выслав изменения (в старом профиле или создав новый) самостоятельно через Pull Request, имея эккаунт на github.com

Создание собственных профилей виртуальных машин

Если необходимый вам профиль ОС отсутствует в базовой поставке CBSD, или по каким-то причинам вас неудовлетворяет, вы можете создать свой профиль по аналогии с уже существующими

Собственные профили должны располагаться в каталоге ~cbsd/etc ( например /usr/jails/etc ), тогда как профили CBSD находятся в каталоге ~cbsd/etc/defaults ( например /usr/jails/etc/defaults)

Если вы будете редактировать файлы в каталоге ~cbsd/etc/defaults, все ваши изменения будут удалятся каждый раз при обновлении CBSD

Если вы хотите перезаписать базовый профиль, просто сделайте его копию в каталог ~cbsd/etc и редактируйте его. В этом случае, при одинаковых именах профилей, система всегда будет предпочитать профиль из каталога ~cbsd/etc, не смотря на его наличие в каталоге ~cbsd/etc/defaults.

При создании нового профиля, соблюдайте следующие правила:

  • Имя файла должно начинаться с vm-"категория"-XXX.conf, где категория - это тип ОС - freebsd, openbsd, linux, windows, other
  • Внутри профиля обязательными являются аргументы: long_description, vm_profile и vm_os_type
    • Где:

      • long_description содержит произвольное описание, например: long_description="Linux Debian 9.2.1"
      • vm_os_type - содержит тип ОС и должна быть также в имени файла. Так, если тип ОС - linux, пишите: vm_os_type="linux", а файл профиля будет начинатся с vm-linux-
      • vm_profile - имя профиля, который также составляет часть профиля. Например, если вы создали профиль для Debian 9.2.1, вы можете написать vm_profile="Debian-9.2.1", а полное имя файла профиля будет: vm-linux-Debian-9.2.1.conf

      Остальные параметры являются опциональны (как количество ядер, RAM, имя виртуальной машины по-умолчанию, различные настройки bhyve) и если они отсутствуют в профиле, будут использоваться общие значения из профиля etc/defaults/bhyve-default-default.conf, который вы также можете скопировать в файл etc/bhyve-default-default.conf, если глобальные параметры вас не устраивают и вы хотите их отредактировать

      Также, обратите внимание на параметры fetch, iso_img, register_iso_name и register_iso_as.

      Если вы создаете профиль виртуальной машины, которую можно получить по сети, скорее всего, они вам также понадобятся.

      fetch говорит CBSD, доступен ли образ ISO для скачивания (0 - нет, 1 -да)

      iso_img указывает на имя ISO образа, как он называется на источнике откуда его скачивать (например ubuntu-17.04-server-amd64.iso)

      Параметры register_iso_name и register_iso_as регулируют, под каким именем сохранить скачиваемый образ и под каким именем зарегистрировать в CBSD media, например:

      register_iso_name="cbsd-iso-ubuntu-17.04-server-amd64.iso"
      register_iso_as="iso-Ubuntu-Server-17.04"
      

      Если с сайта скачивается не ISO образ, а архив с ISO образом, например .tgz или .gz или .xz и тд. (например, таким является профиль vm-dflybsd-), через параметр iso_extract можно указать команду для разархивирования, например:

      iso_extract="bzip2 -d "
      	

      И конечно, всегда полезно предварительно посмотреть, как созданы базовые образы, профиль которых можно взять за основу.

      Если вы создали рабочий профиль ОС, вы можете выслать его в репозиторий https://github.com/cbsd/cbsd-vmprofiles имея эккаунт на GitHub, тем самым, осчастливив других пользователей CBSD. Также, этот профиль войдет в следующий релиз CBSD и вы станете участником проекта!

Описание настроек bhyve в меню bconstruct-tui

Опции и их краткое описание, которые фигурируют в диалоговой форме. В зависимости от выбранного типа OS и профиля, некоторые из них могут быть недоступны:

  • vm_os_type - тип ОС. В зависимости от типа гостевой ОС, будет предложен тот или иной набор профилей дистрибутивов
  • vm_os_profile - выбрать профиля дистрибутива. Профиль может содержать как предлагаемые по-умолчанию параметры описанные ниже, так и специфичные дистрибутиву настройки (URL для получения образа, параметры загрузки ядра и тд)
  • imgsize - Размер создаваемого первого диска. Если гостевая ОС - FreeBSD и профиль FreeBSD-from-jail (генерация образа через jail2iso), то этот параметр указывает на размер свободного места после копирования дистрибутива
  • jname - имя виртуальной машины, одним словом.
  • host_hostname - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: установить параметр hostname в /etc/rc.conf гостевой ОС в соответствующее значение
  • vm_ram - выделяемый объем оперативной памяти
  • vm_cpus - количество виртуальных ядер процессора
  • vm_hostbridge - host bridge гостевой ОС. Может быть hostbridge или amd_hostbridge (влияет на PCI vendor ID)
  • astart - признак автоматического запуска виртуальной машины вместе с загрузкой ноды
  • interface - аплинковый интерфейс для tap-интерфейса, первой сетевой карты виртуальной машины
  • pkglist - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: выбрать соответствующие пекеджи, которые будут предустановлены в создаваемую VM
  • ip4_addr - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: установить параметр ifconfig_NIC в /etc/rc.conf гостевой ОС в соответствующее значение - может быть IP адресом или 'DHCP'
  • gw4 - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: установить defaultrouter параметр в /etc/rc.conf гостевой ОС в соответствующее значение
  • ver - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: использовать базу и ядро указанной версии (например 10.1, 11.0, 12 )
  • applytpl - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: применить ли дополнительные настройки (/etc/hosts, /etc/make.conf)
  • floatresolv - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: установить в /etc/resolv.conf сервера, перечисленные в параметре jnameserver
  • arch - актуально только для гостевой ОС FreeBSD и профиля FreeBSD-from-jail: использовать базу и ядро указанной архитектуры (например i386, amd64)

Примеры создания виртуальной машины:

			% cbsd bconstruct-tui
		

Тип гостевой ОС:

Выбор профиля для гостя типа Linux:

Выбор имени виртуальной машины:

Выбор метода загрузки UEFI:

Выбор параметров bhyve VNC:

Выбор параметров bhyve: