Puppet Class: directadmin

Overview

directadmin

Parameters:

  • clientid (Any) (defaults to: undef)
  • licenseid (Any) (defaults to: undef)
  • interface (Any) (defaults to: undef)
  • auto_update (Any) (defaults to: false)
  • admin_password (Any) (defaults to: undef)
  • lan (Any) (defaults to: false)
  • mail_limit (Any) (defaults to: $::directadmin::params::mail_limit)
  • mail_limit_per_address (Any) (defaults to: $::directadmin::params::mail_limit_per_address)
  • sa_updates (Any) (defaults to: false)
  • php_imap (Any) (defaults to: false)
  • default_webmail (Any) (defaults to: $::directadmin::params::default_webmail)
  • default_rbl (Any) (defaults to: false)
  • installer_location (Any) (defaults to: $::directadmin::params::installer_location)
  • modsecurity (Any) (defaults to: $::directadmin::params::modsecurity)
  • modsecurity_ruleset (Any) (defaults to: $::directadmin::params::modsecurity_ruleset)
  • modsecurity_wordpress (Any) (defaults to: $::directadmin::params::modsecurity_wordpress)


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
# File 'manifests/init.pp', line 2

class directadmin(
  $clientid               = undef,
  $licenseid              = undef,
  $interface              = undef,
  $auto_update            = false,
  $admin_password         = undef,
  $lan                    = false,
  $mail_limit             = $::directadmin::params::mail_limit,
  $mail_limit_per_address = $::directadmin::params::mail_limit_per_address,
  $sa_updates             = false,
  $php_imap               = false,
  $default_webmail        = $::directadmin::params::default_webmail,
  $default_rbl            = false,
  $installer_location     = $::directadmin::params::installer_location,
  $modsecurity            = $::directadmin::params::modsecurity,
  $modsecurity_ruleset    = $::directadmin::params::modsecurity_ruleset,
  $modsecurity_wordpress  = $::directadmin::params::modsecurity_wordpress,
) inherits directadmin::params {
  # Run some sanity checks
  if !is_numeric($directadmin::clientid) { fail("The client ID ${directadmin::clientid} is not a number.") }
  if !is_numeric($directadmin::licenseid) { fail("The license ID ${directadmin::licenseid} is not a number.") }

  class { '::directadmin::directories': }
  -> class { '::directadmin::custombuild': }
  -> class { '::directadmin::install': }
  -> class { '::directadmin::update': }
  class { '::directadmin::services': }
  class { '::directadmin::resources': }
  class { '::directadmin::mail': }
  class { '::directadmin::modsecurity': }

  # Set all required options for custombuild
  $custombuild_options = lookup('directadmin::custombuild::options', Hash, 'deep', {})
  create_resources(directadmin::custombuild::set, $custombuild_options)

  # Set all required configuration settings
  $directadmin_config = lookup('directadmin::config::options', Hash, 'deep', {})
  create_resources(directadmin::config::set, $directadmin_config)

  # Set up the chain that defines when to run which resources in order to support Hiera. This is done in two steps:
  # - The first chain doesn't include the directadmin_admin resouce on purpose, you may not use it.
  # - The second chain makes sure that should you include a different admin, it's running before the reseller package resource.
  # - The third and fourth chain make sure that our workaround for nameservers in directadmin::config::set works.
  Class['directadmin::services'] -> User <| title == 'admin' |> -> Directadmin_reseller_package <| |> -> Directadmin_reseller <| |> -> Directadmin_user_package <| |>
  User <| title == 'admin' |> -> Directadmin_admin <| |> -> Directadmin_reseller_package <| |>
  File_line <| path == '/usr/local/directadmin/data/users/admin/user.conf' |> -> Directadmin_reseller_package <| |>
  File_line <| path == '/usr/local/directadmin/data/users/admin/reseller.conf' |> -> Directadmin_reseller_package <| |>
}