puppet/backuppc/manifests/init.pp

132 lines
3.1 KiB
Puppet

# Add client into BackupPC server
#
# === Parameters
#
# $name:
# Client hostname
#
# $ensure:
# If set to present client will be added and if absent
# it will be removed from server.
#
# $operatingsystem:
# Operatingsystem of client. Used to find correct client
# configuration. Defaults to "default".
#
define backuppc::manualclient($ensure = "present", $operatingsystem = "default") {
@@file { "/etc/BackupPC/pc/${name}.pl":
ensure => "${ensure}",
source => [ "puppet:///files/backuppc/${fqdn}.pl",
"puppet:///files/backuppc/${operatingsystem}.pl",
"puppet:///files/backuppc/default.pl",
"puppet:///backuppc/default.pl", ],
mode => 0640,
owner => root,
group => backuppc,
tag => "backuppc",
require => File["/etc/BackupPC/pc"],
notify => Exec["generate-backuppc-hosts"],
}
if $backuppc_sshkey {
ssh_authorized_key { "backuppc":
ensure => present,
key => "${backuppc_sshkey}",
type => "ssh-rsa",
user => root,
target => "/root/.ssh/authorized_keys",
tag => "backuppc",
}
}
}
# Install host into BackupPC server as client.
#
class backuppc::client {
backuppc::manualclient { "${fqdn}":
ensure => present,
operatingsystem => "${operatingsystem}",
}
}
# Install BackupPC server and add defined clients.
#
class backuppc::server {
package { "BackupPC":
ensure => installed,
}
file { [ "/export/backuppc",
"/export/backuppc/cpool",
"/export/backuppc/pc",
"/export/backuppc/pool",
"/export/backuppc/trash", ]:
ensure => directory,
mode => 0750,
owner => backuppc,
group => root,
require => Package["BackupPC"],
}
file { "/srv/backuppc":
ensure => "/export/backuppc",
require => File["/export/backuppc"],
}
file { "/var/lib/BackupPC":
ensure => "/srv/backuppc",
force => true,
require => File["/srv/backuppc"],
}
file { "/etc/BackupPC/config.pl":
ensure => present,
source => "puppet:///files/backuppc/config.pl",
mode => 0640,
owner => root,
group => backuppc,
require => Package["BackupPC"],
notify => Service["backuppc"],
}
file { "/etc/BackupPC/hosts.in":
ensure => present,
source => [ "puppet:///files/backuppc/hosts.in",
"puppet:///backuppc/hosts.in", ],
mode => 0644,
owner => root,
group => backuppc,
require => Package["BackupPC"],
notify => Exec["generate-backuppc-hosts"],
}
file { "/etc/BackupPC/pc":
ensure => directory,
purge => true,
mode => 0750,
owner => root,
group => backuppc,
require => Package["BackupPC"],
}
exec { "generate-backuppc-hosts":
command => '(cat /etc/BackupPC/hosts.in ; find /etc/BackupPC/pc/ -name \*.pl -exec basename {} .pl \; | sed -e "s/$/ 0 adm/") > /etc/BackupPC/hosts',
path => "/bin:/usr/bin:/sbin:/usr/sbin",
refreshonly => true,
require => File["/etc/BackupPC/hosts.in"],
notify => Service["backuppc"],
}
File <<| tag == "backuppc" |>>
service { "backuppc":
ensure => running,
enable => true,
require => Package["BackupPC"],
}
}