Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
init.pp 4.75 KiB
# Class: skadereg
# ===========================
#
# Full description of class skadereg here.
#
# Parameters
# ----------
#
# Document parameters here.
#
# * `sample parameter`
# Explanation of what this parameter affects and what it defaults to.
# e.g. "Specify one or more upstream ntp servers as an array."
#
# Variables
# ----------
#
# Here you should define a list of variables that this module would require.
#
# * `sample variable`
#  Explanation of how this variable affects the function of this class and if
#  it has a default. e.g. "The parameter enc_ntp_servers must be set by the
#  External Node Classifier as a comma separated list of hostnames." (Note,
#  global variables should be avoided in favor of class parameters as
#  of Puppet 2.6.)
#
# Examples
# --------
#
# @example
#    class { 'skadereg':
#      servers => [ 'pool.ntp.org', 'ntp.local.company.com' ],
#    }
#
# Authors
# -------
#
# Andreas Alvarsson <andal699@student.liu.se>
#
# Copyright
# ---------
#
# Copyright 2016 Andreas Alvarsson
#


class skadereg(
  $mysql_password, $mysql_backup_password
){
  ::users::liu_user { 'andal699':
    commonname => 'Andreas Alvarsson',
    shell      => '/bin/bash',
    sshkey     => 'AAAAB3NzaC1yc2EAAAADAQABAAACAQDCdb9hWgucRRTpDEH1ozBsWXfC+zTnZEO8rrnuqLlwIy23vEaUK7pJ9tQ7AzdR3+fp6yhWBNOlWC9UT70TnVClS1NfXGXHep0J0yWqNnyXcKviKpVB/p9TOVOULrRX9o3oczYxQa4Bi+eYUfk/en2V6O8tIfYtx5AdWUoofdLYNSpCyrHD1xoH7k1/c+OfW0S3fR5f12n/5u8JTHrztDnpy79CfEtwgMr1pCMjOaiM+OIDYlhNJMvlBo5C6mcDls93snctUR1Zef+sJEznb739uw91f5Yqf5FUBLxXCBi3eveJacBVRVg++ZPzyZ9VHIlBz3OPZ1WEjiM/IRJDBXD4I5MoxnM0Urv2wZBr0+G+1cS916KKraMuEfJHf2Qg4O3L3kZY2zNN5DqRmTx1BflTqe2XdPCCMQJiQi37WjE4fOGfNVsAR2VENhw/TMzc8bcagrrIzeBm3dA5e3R7nTfloPufU6IlIwI9qvCmdI2w0rE3Ve6KHtTzWszjsFtVeOzxVzYkG6GQlT1vr867Ayvx8SWE3GixHiIRByw4BEhFVJWNN/DBT88qd61StuIvWEawZ4WiTGNYfh2SVDIy9Jrcp7Nfg1knK1OtYr+wnjO9OrJtePfo0oo9xwQ3GfwCxni8YJKp40BmfWT/fpY9Pmup71adhaPxPHnELGOeVG/fGw==',
  }

  include skadereg::firewall
  include ::yum::centos_scl
  include ::apache

  class { '::apache::mod::php':
    package_name => 'php55-php'
  }
  include ::apache::mod::rewrite

  package {
    'php55-php-pdo':
      ensure => installed;
    'php55-php-mbstring':
      ensure => installed;
    'php55-php-mysqlnd':
      ensure => installed;
    'php55-php-common':
      ensure => installed;
  }

  file { '/etc/httpd/modules/libphp5.so':
    ensure => link,
    target => '/opt/rh/httpd24/root/usr/lib64/httpd/modules/libphp55-php5.so',
    before => Service['httpd']
  }

  include ::certdist

  $cert = "/etc/pki/tls/certs/cert-${::fqdn}.pem"
  $chain = "/etc/pki/tls/certs/chain-${::fqdn}.pem"
  $key = "/etc/pki/tls/private/${::fqdn}.key"

  apache::vhost { 'default:80':
    servername      => $::fqdn,
    default_vhost   => true,
    port            => '80',
    docroot         => '/var/www/html',
    redirect_status => 'permanent',
    redirect_dest   => "https://${::fqdn}/",
  }

  apache::vhost { "${::fqdn}:443":
    servername  => $::fqdn,
    port        => '443',
    ssl         => true,
    ssl_cert    => $cert,
    ssl_chain   => $chain,
    ssl_key     => $key,
    headers     => ['Set Strict-Transport-Security "max-age=31536000"',],
    docroot     => '/var/www/skadereg/public',
    directories => [
      {
        path           => '/var/www/skadereg/public',
        allow_override => [ 'ALL' ],
        directoryindex => 'index.php',
      }
    ]
  }

  file { '/var/www/skadereg/':
    ensure  => directory,
    owner   => 'andal699',
    group   => 'apache',
    mode    => '0770',
    recurse => true
  }->

  vcsrepo { '/var/www/skadereg':
    ensure   => latest,
    before   => File['/var/www/skadereg/public'],
    provider => git,
    source   => 'ssh://git@gitlab.it.liu.se:29418/andal699/laravel.git',
    user     => 'andal699'
  }->

  file { '/var/www/skadereg/.env':
    ensure  => file,
    owner   => 'andal699',
    group   => 'apache',
    mode    => '0660',
    content => template("${module_name}/dotenv.erb"),
  }

  class { '::mysql::server':
    root_password    => $mysql_password,
    databases        => {
      'homestead' => {
        ensure  => present,
        charset => 'utf8',
      }
    },
    grants           => {
      'root@%/*.*' => {
        ensure     => present,
        options    => ['GRANT'],
        privileges => ['ALL'],
        table      => '*.*',
        user       => 'root@%',
      }
    },
    override_options => {
      mysqld => {
        'bind-address' => '0.0.0.0',
        port           => 33060,
      }
    }
  }

  class { '::mysql::server::backup':
    backupuser     => 'backupuser',
    backuppassword => $mysql_backup_password,
    backupdir      => '/root/mysql_backups',
    backupdirmode  => '700',
    backupdirowner => 'root',
    backupdirgroup => 'root',
    backuprotate   => '7',
    time           => ['1','0'],
  }
}