# 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", } }