Создание окружений через 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 <имя> Удалить конкретное окружение

Связанные страницы