FreeBSD virtual environment management and repository

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'