summaryrefslogtreecommitdiff
path: root/manifests/client.pp
blob: 3239cde892e9c401029ec0213019634bef78c506 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class backupninja::client (
  $ensure_backupninja_version = 'installed',
  $configdir = '/etc/backup.d',
  $keystore = "${::fileserver}/keys/backupkeys",
  $keystorefspath = false,
  $keytype = 'rsa',
  $keydest = '/root/.ssh',
  $keyowner = 0,
  $keygroup = 0,
  $keymanage = true,
) {

  # install client dependencies
  ensure_resource('package', 'backupninja', {'ensure' => $ensure_backupninja_version})

  # set up backupninja config directory
  file { $configdir:
    ensure => directory,
    mode => 750, owner => 0, group => 0;
  }

  define key(
    $user = $name,
    $createkey = false,
    $keymanage = $backupninja::keymanage,
    $keyowner = $backupninja::keyowner,
    $keygroup = $backupninja::keygroup,
    $keystore= $backupninja::keystore,
    $keystorefspath = $backupninja::keystorefspath,
    $keytype = $backupninja::keytype,
    $keydest = $backupninja::keydest,
    $keydestname = "id_${backupninja::keytpe}" )
  {

    # generate the key
    if $createkey == true {
      if $keystorefspath == false {
        err("need to define a destination directory for sshkey creation!")
      }
      $ssh_keys = ssh_keygen("${keystorefspath}/${keydestname}")
    }

    # deploy/manage the key
    if $keymanage == true {
      $keydestfile = "${keydest}/${keydestname}"
      ensure_resource('file', $keydest, {
          'ensure' => 'directory',
          'mode'   => '0700',
          'owner'  => $keyowner,
          'group'  => $keygroup
      })
      ensure_resource('file', $keydestfile, {
          'ensure'  => 'present',
          'source'  => "${keystore}/${keydestname}",
          'mode'    => '0700',
          'owner'   => $keyowner,
          'group'   => $keygroup,
          'require' => 'File["$key_dest"]'
      })
    }
  }

}