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 с cloud-init через CBSD

			% cbsd bconstruct-tui
			% cbsd cloudinit
			% cbsd bcreate
		

Описание:

FYI: Cloud-init было продемонстрировано в демо:

Команда bconfig, bconstruct-tui, cloudinit

Использование cloud-init в настоящее время является методом де-факто по быстрому разворачиванию виртуальных инстансов в различных облачных окружениях (OpenNebula, OpenStack, Amazon AWS, Microsoft Azure, Digital Ocean ..)

Начиная с версии 12.0.6, CBSD поддерживает конфигурирование cloud-образов посредством функциональности cloud-init.

Как это работает:

На данный момент CBSD способна конфигурировать инстанс cloud-init методом NoCloud data source. Это означает, что виртуальная машина получает все настройки через файловую систему fat32/msdos_fs или cd9660 подключенного локального носителя. Задача CBSD - сгенерировать и подключить образ к виртуальной машине в момент ее старта.

В качестве признака, что CBSD должна активировать функции cloud-init является факт наличия каталога cloud-init в системном каталоге индивидуальной виртуальной машины: ${jailsysdir}/${jname}/cloud-init/. Помимо признака активации cloud-init, этот каталог выступает хранилищем конфигурации в формате и иерархии cloud-init, которое будет предоставлено виртуальной машине. Т.е, если рабочий каталог CBSD (cbsd_workdir) инициализирован в /usr/jails каталог, для виртуальной машины с именем vm1 признак включения и настройки для конфигурирования cloud-init должны быть расположены в каталоге /usr/jails/jails-system/vm1/cloud-init.

За форматом конфигурации и возможностями конфигуририрования cloud-init обратитесь к соответствующей официальной информацией проекта.

Кроме этого, в дистрибутив CBSD входит пример простой конфигурации, которую вы можете посмотреть в каталоге /usr/local/cbsd/share/examples/cloud-init и использовать в качестве старта к построению своих облачных инсталляций.

Внимание! Несмотря на отсутствие привязки к ZFS, для использования cloud-init рекомендуется инсталляция с использованием файловой системы ZFS. В этом случае, CBSD использует технологию COW в виде zfs clone для создания виртуальной машины на базе cloud образа. В противном случае, CBSDкаждый раз будет вынуждена проводить длительную операцию по стандартному копированию cloud образа в диск виртуальной машины. Впрочем, это все равно намного эффективнее установки через ISO с использованием инсталлятора каждый раз.


Внимание! В некоторых случаях вам может потребоваться runtime конфигурация, например при использовании network-config версии 1. В отличии от версии 2, где в качестве сетевого интерфейса вы можете использовать параметр match и wildcard, первая версия требует указать строгое имя интерфейса. Которое может изменяться в зависимости от нумерации PCI Bus. В этом случае, вам может понадобиться возможность pre/post start/stop hooks в CBSD, которая поможет вам создавать динамические конфигурации для cloud-init.

Дополнительно, в конфигуратор виртуальной машины CBSD через bconstruct-tui добавлен хелпер для cloud-init, реализующий конфигурирование минимально необходимой конфигурации для получения рабочей виртуальной машины из cloud образа. Для этого, можете использовать несколько преднастроенных профилей с префиксом cloud-

Их количество со временем будет увеличиваться. Кроме этого, вы можете самостоятельно собрать и выслать профиль через публичный GitHub репозиторий: https://github.com/cbsd/cbsd-vmprofile. Это профили, которые использует CBSD.

Кроме этого, если вы заметили что скорость получения образов медленная (CBSD использует свои собственные зеркала для дублирования образов, на которые ссылаются профили CBSD) и вы имеете желание помочь проекту, ознакомьтесь с информацией как поднять свое собственное зеркало: fetch_iso. Вы можете прислать нам ссылку на ваше зеркало (или добавить его самостоятельно через https://github.com/cbsd/cbsd-vmprofile и вы повысите качество для своего региона.


Примечение: в CBSD версии 12.0.8, параметр ci_user_pubkey_user может принимать не только сам ssh pubkey, но и путь к authorized_keys. Кроме этого, если он установлен в значение .ssh/authorized_keys (значение по-умолчанию с 12.0.8+), это означает что будет использоваться ssh ключ вашей ноды ( ~cbsd/.ssh ). Обратите внимание на то, как выглядит blogin.conf: если виртуальная машина создана через cloud-init, при команде cbsd blogin будет использоваться кастомная команда с использованием ключа ноды и пользователя, который вы укажете в качестве ci_user_add. Таким образом, запуская виртуальную машину из cloud-init, вы можете сразу же заходить в нее через ssh используя команду cbsd blogin.


bcreate from args

Если вы не любите диалоговые окна, запустить виртуальную машину из cloud-образа можно максимально быстрым способом через bcreate, указав соответствующие параметры конфигурации, например:

		cbsd bcreate jname=centos1 imgsize=20g vm_cpus=1 vm_ram=4g vm_os_type=linux vm_os_profile=cloud-CentOS-7-x86_64 ci_jname=centos1 ci_fqdn=centos1.my.domain ci_ip4_addr=DHCP ci_gw4=10.0.0.1 runasap=1

		cbsd bcreate jname=centos2 imgsize=40g vm_cpus=4 vm_ram=8g vm_os_type=linux vm_os_profile=cloud-CentOS-8-x86_64 ci_jname=centos2 ci_fqdn=centos2.my.domain ci_ip4_addr=192.168.0.10/24 ci_gw4=192.168.0.1 runasap=1
		

обратите внимание на ci_ip4_addr и ci_gw4 - при использовании значения DHCP, убедитесь что вы выбрали корректный nodeippool диапазон адресов, а также что ci_gw4 указывает на рабочий IP шлюза в этой подсети.


Пример использования


Профили cloud-образов находятся в меню vm_os_profile. Выберете этот пункт в основном меню:



Внизу списка вы увидите область с Cloud images, если эти профили созданы в CBSD для выбранного семейства ОС:



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




Дальнейшая настройка и запуск cloud-based виртуальной машины ничем не отличается от основного метода. Желаем удачи!