Skip to content
Snippets Groups Projects
init.pp 2.65 KiB
Newer Older
Adam Lewenberg's avatar
Adam Lewenberg committed
#
# Suggested name for wallet object containing the database credentials:
# db/<group>/secure-afs-request/<dbname>
Adam Lewenberg's avatar
Adam Lewenberg committed
class secure_afs_request (
  Enum['present', 'absent'] $ensure = 'present',
  #
  Enum['traditional', 'docker']
                          $hosting_model = 'traditional',
  String                  $vhost        = 'secure-afs-request.example.com',
  String                  $port         = '443',
  String                  $server_admin = 'bogus@bogus.bogus',
  Boolean                 $ssl_enable   = true,
Adam Lewenberg's avatar
Adam Lewenberg committed
  #
  Enum['wallet', 'none']  $db_credentials_source = 'wallet',
  Optional[String]        $db_wallet_name        = undef,
  Optional[String]        $ldap_wallet_name      = undef,
Adam Lewenberg's avatar
Adam Lewenberg committed
) {

  # Install the software.
  package { 'secure-afs-request-web':
    ensure => $ensure,
  }

Adam Lewenberg's avatar
Adam Lewenberg committed
  class { 'secure_afs_request::config_file':
    ensure  => $ensure,
    require => Package['secure-afs-request-web'],
  }

  # Install the Apache configuration. If this is a traditional server we
  # save it as /etc/apache2/sites-enabled/secure-afs-request.conf. If this
  # is a docker container we put it in
  # /etc/apache2/sites-enabled/default.conf
  if ($hosting_model == 'traditional') {
Adam Lewenberg's avatar
Adam Lewenberg committed
    $apache_conf_name = '/etc/apache2/sites-enabled/secure-afs-request.conf'
Adam Lewenberg's avatar
Adam Lewenberg committed
    $apache_conf_name = '/etc/apache2/sites-enabled/default.conf'
  }

  file { $apache_conf_name:
    ensure  => $ensure,
    content => template('secure_afs_request/etc/apache2/sites-available/secure-afs-request.conf.erb'),
    owner   => 'root',
    group   => 'root',
    mode    => '0755',
  }
Adam Lewenberg's avatar
Adam Lewenberg committed

  # Install the database ini file and other secrets (traditional hosts only)
  if ($hosting_model == 'traditional') {
    case $db_credentials_source {
      'wallet': {
        if ($db_wallet_name != undef) {
          wallet { $db_wallet_name:
            ensure => $ensure,
            type   => 'file',
            path   => '/etc/secure-afs-request/database.ini',
            mode   => '0640',
            owner  => 'root',
            group  => 'www-data',
          }
        } else {
          crit('wallet_name not defined')
        }
      }
      'none': { }
      default: { crit('unknown value for db_credentials_source') }
    }
Adam Lewenberg's avatar
Adam Lewenberg committed

    # Install the key-pair
    su_apache::cert::incommon { $vhost:
      ensure => $ensure,
    }
    # We need the mod_include Apache module.
    su_apache::module { 'include': ensure => present }

    # We need a Kerberos keytab for LDAP lookups.
    wallet { $ldap_wallet_name:
      ensure => $ensure,
      type   => 'keytab',
      path   => '/etc/secure-afs-request/keytab',
      mode   => '0640',
      owner  => 'root',
      group  => 'www-data',
    }
  }
Adam Lewenberg's avatar
Adam Lewenberg committed
}