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. Если вы используете более раннюю версию, рекомендуется сначала обновиться.
Работа с CBSD через Puppet
Когда вы эксплуатируете большое количество нод и контейнеров, ручная работа по управлению контейнерами становится малоэффективна.
Существует огромное количество популярных сегодня систем управлениями конфигурации: Ansible, Chef, Saltstack, Puppet и тд, написанные на разных языках и имеющие разные концепции и принципы работы.
На данный момент мы поддерживаем модуль CBSD для Puppet и здесь дана краткая информация по его использованию.
Страница проекта на Puppet Forge: CBSD puppet
Описание - для чего этот модуль
Puppet CBSD
модуль позволят писать конфигурации серверов, используя декларативное программирование (Ruby DSL, domain-specific language).Другими словами, вы создаете манифест с описанием, какие контейнера и с какими параметрами и характеристиками должны быть на том или ином сервере.
Дальнейшую работу по выполнению этих требований Puppet берет на себя.
Примеры использования модуля
Для установки CBSD на сервер, достаточно объявить класс cbsd:
class { 'cbsd': }
Если вы устанавливаете CBSD вручную (например не через pkg/порты, а имеете Git версию, вы можете запретить модулю устанавливать модуль самостоятельно:
class { 'cbsd':
manage_repo => false,
}
В классе могут быть определены все параметры initenv. Например, для инициализации CBSD с рабочим каталогом /usr/jails и включенным функционалом NAT:
class { 'cbsd':
jnameserver => "8.8.8.8",
nat_enable => '1',
defaults => {
'workdir' => '/usr/jails',
}
}
Вы можете заставить CBSD заранее скачать те или иные версии базы:
class { "cbsd::freebsd_bases":
ver => [ '12' ],
stable => 1,
}
Cоздания jail:
cbsd::jail { 'myjail0':
pkg_bootstrap => '0',
host_hostname => 'myjail0.my.domain',
}
Если вы предпочитаете работать с параметрами через Yaml, в Hierra это может выглядеть так:
cbsd::jails:
myjail0:
host_hostname: 'myjail0.my.domain'