Назад | Перейти на главную страницу

Используйте марионетку для развертывания bareos (bacula-fork) на моих узлах

Я не уверен, что это подходящее место, чтобы спросить, но мне бы очень хотелось использовать 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

У меня около тысячи клиентов, у меня это очень хорошо работает.