Puppet Class: directadmin::install

Inherits:
directadmin
Defined in:
manifests/install.pp

Overview

directadmin::install



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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'manifests/install.pp', line 2

class directadmin::install inherits directadmin {
  # Decide which interface to use
  if $directadmin::interface == undef {
    if has_interface_with('venet0') { $directadmin_interface = 'venet0:0' }
    else { $directadmin_interface = 'eth0'}
  } else {
    $directadmin_interface = $directadmin::interface
  }

  # The following will install all required packages for SpamAssassin on CentOS servers.
  if $::osfamily == 'RedHat' {
    if versioncmp($::operatingsystemmajrelease, '6') >= 0 {
      $directadmin_packages = [
            'perl-ExtUtils-MakeMaker', 'perl-Digest-SHA', 'perl-Net-DNS', 'perl-NetAddr-IP',
            'perl-Archive-Tar', 'perl-IO-Zlib', 'perl-Mail-SPF', 'perl-IO-Socket-INET6',
            'perl-IO-Socket-SSL', 'perl-Mail-DKIM', 'perl-DBI', 'perl-Encode-Detect',
            'perl-HTML-Parser', 'perl-HTML-Tagset', 'perl-Time-HiRes', 'perl-libwww-perl',
            'perl-ExtUtils-Embed',
          ]
    }
    if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
      $additional_packages = [
          'perl-Sys-Syslog', 'perl-DB_File',
        ]

      # Package: required packages for SpamAssassin on CentOS 7+
      package { $additional_packages:
          ensure => installed,
          before => Exec['directadmin-download-installer'],
      }
    }
  }

  # The following will install all required packages for SpamAssassin on Debian servers.
  if $::osfamily == 'Debian' {
    $directadmin_packages = [
        'libarchive-any-perl', 'libhtml-parser-perl', 'libnet-dns-perl', 'libnetaddr-ip-perl',
        'libhttp-date-perl',
      ]
  }

  # Package: required packages for SpamAssassin etc.
  package { $directadmin_packages:
    ensure => installed,
    before => Exec['directadmin-download-installer'],
  }

  # Using DirectAdmin on a server behind NAT (example: 192.168.0.x)? Touch /root/.lan.
  # When this file contains '1', setup.sh will skip --bind-address in wget.
  # For more information about running DirectAdmin behind NAT: http://www.directadmin.com/lan.shtml
  if $directadmin::lan {
    file { '/root/.lan':
      ensure  => file,
      content => '1',
      before  => Exec['directadmin-installer'],
    }
  }

  # Exec: make sure the required packages are installed automatically. This provides support for all operating systems.
  exec { 'directadmin-set-pre-install':
    cwd     => '/root',
    command => 'echo 1 > /root/.preinstall',
    creates => '/root/.preinstall',
    before  => Exec['directadmin-installer'],
    path    => '/bin:/usr/bin',
  }

  # Exec: set up the installation files
  exec { 'directadmin-download-installer':
    cwd     => '/root',
    command => "wget -O setup.sh --no-check-certificate ${::directadmin::installer_location} && chmod +x /root/setup.sh",
    creates => '/root/setup.sh',
    path    => '/bin:/usr/bin',
  }

  # Exec: install DirectAdmin
  exec { 'directadmin-installer':
    cwd     => '/root',
    command => "echo 2.0 > /root/.custombuild && /root/setup.sh ${::directadmin::clientid} ${::directadmin::licenseid} ${::fqdn} ${directadmin_interface}",
    require => [ Exec['directadmin-download-installer'], Class['directadmin::custombuild'], ],
    creates => '/usr/local/directadmin/conf/directadmin.conf',
    timeout => 0,
    path    => '/sbin:/usr/sbin:/bin:/usr/bin',
  }
}