puppet/backuppc/manifests/init.pp

242 lines
7.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/${name}.pl",
"puppet:///files/backuppc/${operatingsystem}.pl",
"puppet:///files/backuppc/default.pl",
"puppet:///modules/backuppc/default.pl", ],
mode => "0640",
owner => root,
group => backuppc,
tag => "backuppc",
require => File["/etc/BackupPC/pc"],
notify => Exec["generate-backuppc-hosts"],
}
}
# Install host into BackupPC server as client.
#
class backuppc::client {
backuppc::manualclient { $homename:
ensure => present,
operatingsystem => $operatingsystem,
}
include rsync
Ssh_authorized_key <<| tag == "backuppc" |>>
}
# Install BackupPC server and add defined clients.
#
class backuppc::server {
include rsync
include user::system
realize(User["backuppc"], Group["backuppc"])
package { "BackupPC":
ensure => installed,
require => [ User["backuppc"],
Group["backuppc"], ],
}
if $backuppc_datadir {
file { $backuppc_datadir:
ensure => directory,
mode => "0750",
owner => "backuppc",
group => "root",
require => Package["BackupPC"],
}
file { "/var/lib/BackupPC":
ensure => $backuppc_datadir,
force => true,
backup => ".orig",
require => File[$backuppc_datadir],
before => File["/var/lib/BackupPC/.ssh"],
}
}
apache::configfile { "BackupPC.conf":
http => false,
source => "puppet:///modules/backuppc/backuppc-httpd.conf",
require => Package["BackupPC"],
}
file { "/usr/share/BackupPC/sbin/.htaccess":
ensure => present,
mode => "0644",
owner => "root",
group => "root",
source => [ "puppet:///files/backuppc/htaccess",
"puppet:///modules/backuppc/htaccess", ],
require => Package["BackupPC"],
}
file { "/usr/share/BackupPC/sbin/BackupPC_Admin":
ensure => present,
mode => "4750",
owner => "backuppc",
group => $apache::sslserver::group,
require => Package["BackupPC"],
}
if $operatingsystem == "CentOS" and $operatingsystemrelease >= 6 {
if "${selinux}" == "true" {
selinux::manage_fcontext { "/etc/BackupPC(/.*)?":
type => "httpd_sys_rw_content_t",
}
}
}
file { "/etc/BackupPC/apache.users":
ensure => present,
mode => "0640",
owner => "root",
group => $apache::sslserver::group,
seltype => $operatingsystem ? {
"centos" => $operatingsystemrelease ? {
/^5/ => "httpd_sys_script_rw_t",
default => "httpd_sys_rw_content_t",
},
default => "httpd_sys_rw_content_t",
},
require => Package["BackupPC"],
}
file { "/etc/BackupPC/config.pl":
ensure => present,
source => "puppet:///files/backuppc/config.pl",
mode => "0440",
owner => "backuppc",
group => "backuppc",
seltype => $operatingsystem ? {
"centos" => $operatingsystemrelease ? {
/^5/ => "httpd_sys_script_rw_t",
default => "httpd_sys_rw_content_t",
},
default => "httpd_sys_rw_content_t",
},
require => Package["BackupPC"],
notify => Service["backuppc"],
}
file { "/etc/BackupPC/hosts.in":
ensure => present,
source => [ "puppet:///files/backuppc/hosts.in",
"puppet:///modules/backuppc/hosts.in", ],
mode => "0644",
owner => "root",
group => "backuppc",
seltype => $operatingsystem ? {
"centos" => $operatingsystemrelease ? {
/^5/ => "httpd_sys_script_rw_t",
default => "httpd_sys_rw_content_t",
},
default => "httpd_sys_rw_content_t",
},
require => Package["BackupPC"],
notify => Exec["generate-backuppc-hosts"],
}
file { "/etc/BackupPC/pc":
ensure => directory,
purge => true,
force => true,
recurse => true,
mode => "0640",
owner => "root",
group => "backuppc",
seltype => $operatingsystem ? {
"centos" => $operatingsystemrelease ? {
/^5/ => "httpd_sys_script_rw_t",
default => "httpd_sys_rw_content_t",
},
default => "httpd_sys_rw_content_t",
},
source => "puppet:///modules/custom/empty",
require => Package["BackupPC"],
notify => Exec["generate-backuppc-hosts"],
}
exec { "generate-backuppc-hosts":
command => "/bin/sh -c '(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" |>> {
seltype => $operatingsystem ? {
"centos" => $operatingsystemrelease ? {
/^5/ => "httpd_sys_script_rw_t",
default => "httpd_sys_rw_content_t",
},
default => "httpd_sys_rw_content_t",
},
}
service { "backuppc":
ensure => running,
enable => true,
require => Package["BackupPC"],
}
file { "/var/lib/BackupPC/.ssh":
ensure => directory,
mode => "0750",
owner => "root",
group => "backuppc",
}
file { "/var/lib/BackupPC/.ssh/id_rsa":
ensure => present,
source => "/etc/ssh/ssh_host_rsa_key",
mode => "0640",
owner => "root",
group => "backuppc",
require => File["/var/lib/BackupPC/.ssh"],
before => Service["backuppc"],
}
file { "/var/lib/BackupPC/.ssh/id_rsa.pub":
ensure => present,
source => "/etc/ssh/ssh_host_rsa_key.pub",
mode => "0640",
owner => "root",
group => "backuppc",
require => File["/var/lib/BackupPC/.ssh"],
before => Service["backuppc"],
}
@@ssh_authorized_key { "backuppc":
ensure => present,
key => $sshrsakey,
type => "ssh-rsa",
user => "root",
target => "/root/.ssh/authorized_keys",
tag => "backuppc",
}
}