Создание окружений через CBSDfile
Команда
cbsd up
Команда cbsd up читает файл CBSDfile в текущем рабочем каталоге и создаёт все определённые в нём окружения. Это рекомендуемый и стандартный метод для регулярной работы.
Что такое CBSDfile
CBSDfile — это shell-скрипт, содержащий функции-конфигурации. Каждая функция описывает одно окружение. Команда cbsd up выполняет (source) этот скрипт и создаёт окружения согласно определениям.
Определение окружения задаётся именем функции в формате:
<тип>_<имя>()
{
# параметры
}
Тип определяет гипервизор:
- jail — FreeBSD jail контейнер
- bhyve — bhyve виртуальная машина
- qemu — QEMU виртуальная машина
- xen — Xen виртуальная машина
Базовая структура
Минимальный CBSDfile:
jail_web1()
{
ip4_addr="10.0.0.10"
host_hostname="web1.example.com"
ver="native"
}
Значение native — зарезервированное слово, означающее наследование версии FreeBSD от хоста. Вместо него можно задать конкретную версию, например ver="15.1".
Вызов cbsd up создаст jail web1 с указанными параметрами.
С несколькими окружениями:
jail_web1()
{
ip4_addr="10.0.0.10"
host_hostname="web1.example.com"
}
jail_web2()
{
ip4_addr="10.0.0.11"
host_hostname="web2.example.com"
}
Глобальные переменные
Функция globals() задаёт параметры, применяемые ко всем окружениям в файле:
globals()
{
default_domain="example.com"
bhyve_vnc_tcp_bind="0.0.0.0"
}
jail_web1()
{
ip4_addr="10.0.0.10"
}
Переменные из globals() подставляются для всех окружений, если конкретное окружение не переопределяет их.
Смешанные гипервизоры
Один CBSDfile может содержать окружения разных типов:
jail_web()
{
ip4_addr="10.0.0.10"
}
bhyve_vm1()
{
vm_ram="2g"
vm_cpus="2"
}
cbsd up обработает обе функции, создав jail и bhyve VM соответственно.
Переопределение через командную строку
CLI-аргументы cbsd up переопределяют значения из CBSDfile:
cbsd up web1 ver=native ip4_addr=DHCP
Для CBSDfile:
jail_web1()
{
ver="native"
ip4_addr="10.0.0.10"
}
Результат: web1 будет создан с ver=native и ip4_addr=DHCP, игнорируя значения из файла.
Это позволяет использовать один CBSDfile как шаблон для разных конфигураций.
Параллельное выполнение
Переменная PARALLEL контролирует количество окружений, создаваемых одновременно:
globals()
{
PARALLEL=4
}
По умолчанию PARALLEL=1 (последовательное выполнение).
Глобальные параметры окружения
Параметры из таблицы jcreate применимы в CBSDfile. Основные:
| Параметр | Дефолт | Описание |
|---|---|---|
ip4_addr |
DHCP |
IPv4 адрес |
host_hostname |
${jname}.${default_domain} |
FQDN |
ver |
native |
Версия FreeBSD release (native — наследуется от хоста; можно указать фиксированную, например 15.1) |
arch |
native |
Архитектура |
vnet |
0 |
VNET изоляция |
astart |
1 |
Автостарт при загрузке хоста |
runasap |
0 |
Запустить сразу после создания |
pkglist |
`` | Список пакетов для установки |
jprofile |
default |
Профиль конфигурации |
Команды управления
| Команда | Описание |
|---|---|
cbsd up |
Создать все окружения из CBSDfile |
cbsd up <имя> |
Создать конкретное окружение |
cbsd up <имя> param=value |
Создать окружение с переопределением параметров |
cbsd destroy |
Удалить все окружения из CBSDfile |
cbsd destroy <имя> |
Удалить конкретное окружение |