Я не уверен, что это подходящее место, чтобы спросить, но мне бы очень хотелось использовать puppet
развернуть bareos
на моих серверах.
Bareos - это ответвление Bacula, которое используется для резервного копирования удаленных систем.
Для этого bareos использует экземпляр сервера и разные экземпляры клиента (на каждом сервере, который я хочу сделать резервную копию).
Экземпляр сервера подключается к каждому клиенту, которого он может найти в файле конфигурации. Вдобавок Bareos будет запускать резервные копии, когда найдет Job-Ressource в конфигурационном файле.
Набор конфигурационных файлов выглядит так:
├── bareos-dir.conf
├── bareos-dir.conf.dist
├── bareos-dir.d
│ ├── webui-consoles.conf
│ └── webui-profiles.conf
├── bareos-fd.conf
├── bareos-sd.conf
├── bareos-sd.conf.dist
├── bareos-sd.d
├── bconsole.conf
├── bconsole.conf.dist
├── clients.d
├── director.d
├── storage.d
│ └── device-device.conf
└── tray-monitor.conf
По умолчанию клиенты определены в bareos-dir.conf
но также возможно включить файлы конфигурации из других каталогов.
Определение клиента с Job и FileRessource выглядит так:
Client {
Name = test-fd
Address = test.example.com # the name has to be resolvable through DNS.
Password = "password which is defined in the file-daemon (client) of server test.example.com"
}
Кроме того, должен быть ресурс Job-Ressource, подобный этому:
Job {
Name="test"
JobDefs="DefaultJob"
Client="test-fd"
Pool = Incremental
FileSet="pleskbackup"
}
и FileSet-Ressource вроде этого:
FileSet {
Name = "pleskbackup"
Include {
Options {
Signature = MD5 # calculate md5 checksum per file
}
File = /var/www
File = /var/backup
File = /var/qmail
}
# Things that usually have to be excluded
# You have to exclude /var/lib/bareos/storage
# on your bareos server
Exclude {
}
}
Было бы здорово, если бы я мог справиться со всем этим с помощью марионетки. Для этого я использую сетевые менеджеры / bareos. Было бы здорово, если бы я мог просто добавить profile::backup::client
в узел XY, и он автоматически устанавливает bareos-fd (client file-daemon)
и соединяет его с моим bareos-сервером.
Я использую этот профиль для установки Bareos своим клиентам:
class profile::backup::client {
## Install bareos client ##
class {
'bareos':
manage_client => 'true',
}
}
Этот профиль используется для установки bareos на мой сервер bareos:
class profile::backup::server {
## Install bareos server ##
class {
'bareos':
manage_client => 'true',
manage_storage => 'true',
manage_director => 'true',
manage_console => 'true',
}
bareos::storage::device {
'device':
media_type => 'File',
archive_device => '/var/bareos/backup',
}
}
Хорошо - теперь я могу развернуть bareos-клиентов на своих клиентах и сервер на моем сервере - это уже работает (это волшебство ;-)).
Что я хочу сделать дальше: я хочу настроить систему автоматически. Таким образом, сервер должен быть настроен для связи с клиентом (для этого серверу необходимо знать полное доменное имя и заданный пароль клиента. Клиент должен применить server-dir как разрешенный директор.
Как я могу это сделать?
Я подошел к этому иначе. Я считаю, что изобретать директивы конфигурации Bareos в коде Puppet (что с тремя ленточными накопителями, роботом, буферизацией и т. Д.) - пустая трата времени, поэтому я только что поместил основную конфигурацию Bareos (bareos-dir.conf, bareos -sd.conf и т. д.) в отдельном репозитории Git, который извлекается как / etc / bareos. (Очевидно, я мог бы использовать Puppet и для дословного копирования файлов, но в то время для доступа к фиксации для конфигурации Puppet и Bareos были другие требования.)
Для настройки заданий и клиентов я использую свой собственный модуль Puppet, который можно включить на всех клиентах, и все будет просто работать;)
Посмотри:
https://github.com/kjetilho/rl-bareos
У меня около тысячи клиентов, у меня это очень хорошо работает.