Puppet Class: duplicity::install

Inherits:
duplicity
Defined in:
manifests/install.pp

Overview

Class: duplicity::install

Installs duplicity and duply.

Author

Martin Meinhold <Martin.Meinhold@gmx.de>

Copyright 2014 Martin Meinhold, unless otherwise noted.



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
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'manifests/install.pp', line 13

class duplicity::install inherits duplicity {
  package { 'duplicity':
    ensure => $duplicity::duplicity_package_ensure,
    name   => $duplicity::duplicity_package_name,
  }

  if $duplicity::duply_package_provider == 'archive' {
    $real_duply_package_ensure = $duplicity::duply_package_ensure ? {
      'absent' => 'absent',
      default  => 'present',
    }
    $real_duply_executable_ensure = $duplicity::duply_package_ensure ? {
      'absent' => 'absent',
      default  => 'link',
    }
    $real_duply_archive_url = empty($duplicity::duply_archive_url) ? {
      true    => "http://downloads.sourceforge.net/ftplicity/duply_${duplicity::duply_archive_version}.tgz",
      default => $duplicity::duply_archive_url,
    }
    $duply_archive_filename = basename($real_duply_archive_url)
    $duply_install_dir = "${duplicity::duply_archive_install_dir}/duply_${duplicity::duply_archive_version}"

    archive { "/tmp/${duply_archive_filename}":
      ensure        => $real_duply_package_ensure,
      source        => $real_duply_archive_url,
      checksum      => $duplicity::duply_archive_checksum,
      checksum_type => $duplicity::duply_archive_checksum_type,
      extract       => true,
      extract_path  => $duplicity::duply_archive_install_dir,
      creates       => $duply_install_dir,
      cleanup       => true,
      proxy_server  => $duplicity::duply_archive_proxy,
    }

    file { $duplicity::duply_archive_executable:
      ensure => $real_duply_executable_ensure,
      target => "${duply_install_dir}/duply",
      owner  => 'root',
      group  => 'root',
      mode   => '0755',
    }
  }
  else {
    package { 'duply':
      ensure   => $duplicity::duply_package_ensure,
      name     => $duplicity::duply_package_name,
      provider => $duplicity::duply_package_provider,
      require  => Package[$duplicity::paramiko_package_name],
    }
    # Note (arnaudmorin): we cannot ensure pyton-paramiko $duplicity::duply_package_ensure as
    # it can break if the package is already ensure present somewhere else in another module.
    ensure_packages ( [$duplicity::paramiko_package_name], {
      ensure   => present,
    })

    # If duply was previously installed from archive, it should not pollute the PATH any more ...
    file { $duplicity::duply_archive_executable:
      ensure => 'absent',
    }
  }

  # Install any additional packages that may be needed by the different backends
  ensure_packages($duplicity::duply_extra_packages, {'ensure' => 'present'})
}