我不确定这是否是正确的地方,但我真的很喜欢用puppet在我的服务器上部署bareos 。
Bareos是Bacula的一个叉子,用于备份远程系统。
要做到这一点,bareos使用一个服务器实例和不同的客户端实例(在我想要备份的每个服务器上)。
服务器实例连接到他可以在configuration文件中find的每个客户端。 另外,Bareos在configuration文件中findJob-Ressource时将运行备份作业。
这组configuration文件如下所示:
├── 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中定义的,但也可以包含来自其他目录的configuration文件。
使用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 { 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 { } }
现在,如果我能用木偶来pipe理备份的东西,那就太好了。 要做到这一点,我使用netmanagers / bareos 。 如果我只是将profile::backup::client添加到节点XY,它会自动安装bareos-fd (client file-daemon)并将其与我的bareos-server连接。
我正在使用此configuration文件将bareos安装到我的客户端:
class profile::backup::client { ## Install bareos client ## class { 'bareos': manage_client => 'true', } }
这个configuration文件是用来安装bareos到我的bareos-server:
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-clients部署到我的客户端,将服务器部署到我的服务器上 – 这已经可以实现了(这是魔术;-))。
接下来我想要做的是:我想自动configuration系统。 所以服务器应该configuration为联系客户端(服务器需要知道客户端的FQDN和给定的密码,客户端必须将server-dir作为允许的主pipe。
我怎样才能做到这一点?
我已经以不同的方式处理了。 我认为在Puppet代码(三个磁带驱动器,机器人,后台处理等)中重新创buildBareosconfiguration指令是浪费时间,所以我只是把主Bareosconfiguration(bareos-dir.conf,bareos -sd.conf等)在一个单独的Git仓库中,这是作为/ etc / bareos检出的。 (显然我也可以使用Puppet逐字复制这些文件,但是对于Puppet vs. Bareosconfiguration的提交访问在当时有不同的要求。)
要configuration作业和客户端,我使用自己的Puppet模块,它可以包含在所有的客户端,一切都将正常工作;)
看一看:
https://github.com/kjetilho/rl-bareos
我有大约一千个客户,这对我来说非常好。