Создание jail из командной строки

Синтаксис

cbsd jcreate key=value [key=value ...]

Минимальный вызов:

cbsd jcreate jname=myjail

Создаст jail myjail с автоматическими параметрами: IP через DHCP, hostname myjail.my.domain, версия FreeBSD наследуется от хоста. Jail будет создан и сконфигурирован, но не запущен.

Для запуска сразу после создания добавляют runasap=1:

cbsd jcreate jname=myjail runasap=1

Обязательные параметры

Единственный строго обязательный параметр:

Параметр Описание
jname Уникальное имя jail. Не может содержать пробелы, спецсимволы. Должно быть уникально среди всех существующих jail на хосте.

Все остальные параметры имеют значения по умолчанию.

Приоритет настройки

Параметр получает значение в порядке убывания приоритета:

  1. Явный аргумент командной строки: cbsd jcreate ip4_addr="10.0.0.5"
  2. Пользовательский оверлей: ~cbsd/etc/jail-freebsd-default.conf (если существует)
  3. Профиль jprofile=N, если задан (файл ~cbsd/etc/defaults/jail-freebsd-N.conf)
  4. Системный дефолт: ~cbsd/etc/defaults/jail-freebsd-default.conf

Формат всех .conf файлов: key="value" (одна пара на строку).

Группы параметров

Полный список параметров доступен через cbsd jcreate --args. Параметры сгруппированы по назначению.

Базовые параметры

Параметр Дефолт Описание
jname (обязателен) Имя jail
host_hostname ${jname}.${default_domain} FQDN jail. По умолчанию my.domain
ver native Версияrelease: native (наследовать хост), или конкретная, например 14.2
arch native Архитектура: native (наследовать хост), x86_64, aarch64, riscv64
path ${jaildir}/${jname} Корневой каталог jail
astart 1 Автостарт jail при загрузке хоста (0 — отключить)
runasap 0 Запустить jail сразу после создания (1 — запустить)
baserw 0 writable базовая система внутри jail (1 — разрешает писать в /usr/bin и т.д.)
basename `` Имя существующего базового release для клонов
tags `` Пользовательские метки, строка
quiet 0 Тихий режим, подавление вывода

Сетевые параметры

Параметр Дефолт Описание
ip4_addr DHCP IPv4 адрес: конкретный (10.0.0.5), DHCP, или empty
interface auto Сетевой интерфейс хоста: auto (автоопределение), vnet0, em0 и т.д.
vnet 0 Изолированное сетевое пространство (1 — включить VNET)
interface2 `` Второй сетевой интерфейс
ip4_addr2 `` Второй IPv4 адрес

При vnet=1 используются расширенные параметры VNET (ci_*):

Параметр Дефолт Описание
ci_ip4_addr DHCP IP адрес внутри VNET
ci_gw4 0 Шлюз внутри VNET
ci_interface_mtu 1500 MTU виртуального интерфейса
ci_user_pubkey `` SSH публичный ключ для cloud-init

Разрешения (allow_*)

Параметры соответствуют свойствам jail(8). По умолчанию большинство разрешений отключены (0`), кроме базового набора:

Параметр Дефолт Описание
allow_mount 1 Mount файловых систем внутри jail
allow_nullfs 1 NULLFS mount
allow_fdescfs 1 Mount fdescfs
allow_devfs 1 Mount devfs
allow_dying 1 Jail может быть остановлен
allow_procfs 1 Доступ к procfs
allow_tmpfs 1 Mount tmpfs
allow_reserved_ports 1 Бинд на порты < 1024
allow_unprivileged_proc_debug 1 Debug для непривилегированных процессов
allow_suser 1 suser права для root в jail
allow_extattr 1 Extended attributes
allow_raw_sockets 0 Raw socket
allow_fusefs 0 FUSE файловая система
allow_linprocfs 0 Mount linux procfs
allow_linsysfs 0 Mount linux sysfs
allow_vmm 0 Доступ к vmm(4) для вложенных VM
allow_nfsd 0 NFS daemon
allow_zfs 0 ZFS внутри jail
allow_mlock 0 mlock/munlock
allow_read_msgbuf 0 Чтение kernel message buffer
allow_adjtime 0 Медленная корректировка времени (ntpd)
allow_settime 0 Установка даты/времени
allow_chflags 0 Manipulate file flags (chflags)
allow_sysvipc 0 System V IPC
allow_kmem 0 Доступ к /dev/kmem
allow_read_msgbuf 0 Чтение sysctl hw.machine_memsize

Mount параметры

Параметр Дефолт Описание
mount_devfs 1 Mount devfs в jail
mount_fdescfs 1 Mount fdescfs
mount_procfs 0 Mount procfs
mount_linprocfs 0 Mount linux procfs
mount_linsysfs 0 Mount linux sysfs
mount_fstab 0 Mount из fstab
mount_ports 1 Mount ports tree
mount_src 0 Mount source tree
mount_obj 0 Mount obj tree
mount_kernel 0 Mount kernel

Lifecycle скрипты (exec_*)

Параметр Дефолт Описание
exec_start /bin/sh /etc/rc Команда запуска внутри jail
exec_stop /bin/sh /etc/rc.shutdown Команда остановки
exec_timeout 180 Таймаут start/stop в секундах
exec_poststart 0 Скрипт после старта jail
exec_prestart 0 Скрипт перед стартом
exec_poststop 0 Скрипт после остановки
exec_prestop 0 Скрипт перед остановкой
exec_master_poststart 0 Скрипт на хосте после старта
exec_master_poststop 0 Скрипт на хосте после остановки
exec_master_prestart 0 Скрипт на хосте перед стартом
exec_master_prestop 0 Скрипт на хосте перед остановкой
exec_consolelog `` Путь к лог-файлу консоли

Параметры с префиксом exec_master_* выполняются на хост-системе. Без префикса — внутри jail.

SysV IPC

Параметр Дефолт Описание
sysvsem new Semaphore: new, host, 0
sysvshm new Shared memory: new, host, 0
sysvmsg new Message queues: new, host, 0

Пакеты и cloud-init

Параметр Дефолт Описание
pkglist `` Список пакетов для установки (пути к файлам, через запятую)
delpkglist 1 Удалить pkglist файл после установки
pkg_bootstrap 1 Инициализировать pkg в jail
ci_user_pubkey `` SSH ключ для cloud-init
ci_ip4_addr DHCP IP для cloud-init
ci_gw4 0 Gateway для cloud-init

Системные параметры jail

Параметр Дефолт Описание
devfs_ruleset 4 Правила devfs ruleset для jail
enforce_statfs 1 Ограничение stat(2): 0=нет, 1=строгое, 2=relaxed
persist 1 Перезапуск jail при аварийном выходе
protected 0 Protected mode
childrenmax 0 Максимум вложенных jail (0 = неограничен)
stop_timeout 900 Таймаут принудительной остановки
mdsize 0 Размер memory disk в MB
floatresolv 1 Автоматическое обновление resolv.conf
jnameserver 0 DNS сервер (0 = наследовать глобальный)
jdomain `` Domain для jail
autorestart 0 Автоматический рестарт при падении
hidden 0 Скрыть jail из cbsd jls
rcconf ${jailrcconfdir}/rc.conf_${jname} Путь к rc.conf jail
fstablocal `` Дополнительный fstab
zfs_snapsrc `` Источники ZFS для снапшотов
zfs_encryption `` ZFS encryption key
environment `` Переменные окружения для exec_*
environment_global `` Глобальные переменные окружения
mount_fstab 0 Enable fstab mounts
mnt_start 0 Скрипт mount data dir при старте
mnt_stop 0 Скрипт unmount data dir при остановке
sysdir_volume 0 Копировать jails-system в VOLUMES
etcupdate_init 1 Инициализировать etcupdate bootstrap
mkhostsfile 1 Создать /etc/hosts
applytpl 1 Применить шаблоны skel

Профили (jprofile)

Параметр Дефолт Описание
jprofile default Профиль конфигурации (см. список профилей ниже)
jconf `` Путь к jail.conf для записи
removejconf 1 Удалить jconf после создания

Встроенные профили

Системные профили в ~cbsd/etc/defaults/:

Профиль Файл Назначение
default jail-freebsd-default.conf Базовый, стандартный jail
vnet jail-freebsd-vnet.conf Jail с VNET изоляцией
trusted jail-freebsd-trusted.conf Повышенные привилегии
puppet jail-freebsd-puppet.conf С puppet агентом
cbsdpuppet jail-freebsd-cbsdpuppet.conf CBSD + puppet
rocky_9 jail-freebsd-rocky_9.conf Rocky Linux в jail
devuan_daedalus jail-freebsd-devuan_daedalus.conf Devuan в jail

Пользователь может создать свой профиль, добавив файл jail-freebsd-N.conf в ~cbsd/etc/defaults/ и указав jprofile=N.

Типовые примеры

Минимальный jail

cbsd jcreate jname=myjail runasap=1

Создаст jail с авто-настройками, запустит сразу.

Jail с фиксированным IP

cbsd jcreate jname=webserver ip4_addr="10.0.0.10" runasap=1

Jail с VNET

cbsd jcreate jname=firewall vnet=1 ci_ip4_addr="10.0.0.1" ci_gw4="10.0.0.254" runasap=1

Jail с другой версией FreeBSD

cbsd jcreate jname=legacy ver=13.5 runasap=1

Jail с пакетным списком

cbsd jcreate jname=app pkglist="nginx,php82,mysql80" runasap=1

Jail с профильной конфигурацией

cbsd jcreate jname=myjail jprofile=vnet runasap=1

Jail с кастомным rc.conf и переменными окружения

cbsd jcreate jname=service environment="NODE_ENV=production" runasap=1

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