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'