Skip to content
Snippets Groups Projects
opendsa.pp 2.22 KiB
Newer Older
  • Learn to ignore specific revisions
  • # @summary
    
    #   OpenDSA server for exams.
    
    #
    #   Detailed summary info if suitable
    #
    #
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
    class aes::opendsa {
      $opendsa_user = opendsa
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      $opendsa_group = $opendsa_user
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
      $opendsa_home = "/srv/${opendsa_user}"
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      $opendsa_service = $opendsa_user
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      user { $opendsa_user :
        ensure     => present,
        home       => $opendsa_home,
        comment    => 'OpenDSA server',
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        managehome => false,
        membership => inclusive,
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        system     => true,
        shell      => '/sbin/nologin',
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      file { $opendsa_home:
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        ensure => directory,
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        owner  => $opendsa_user,
        group  => $opendsa_group,
        mode   => '0755',
    
      # This file will be executed as root, which is why we don't let anyone but root examine it.
      file { "${opendsa_home}/on_update.sh":
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        ensure => file,
    
        owner  => $opendsa_user,
        group  => $opendsa_group,
        mode   => '0755',
    
        source => "puppet:///modules/${module_name}/opendsa/on_update.sh",
    
      file { "/etc/systemd/system/${opendsa_service}.service":
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        ensure => file,
    
        owner  => root,
        group  => root,
    
        source => "puppet:///modules/${module_name}/opendsa/opendsa.service",
      }
    
    
      vcsrepo { "${opendsa_home}/src":
    
        ensure      => latest,
        provider    => git,
        submodules  => false,
        source      => 'https://oauth2:taNPRZid9Hv6jJtdW_T8@gitlab.liu.se/opendsa/OpenDSA.git',
        revision    => 'exam',
        owner       => $opendsa_user,
        group       => $opendsa_group,
        notify      => Exec['update-opendsa-repo'],
    
      }
    
      exec { 'update-opendsa-repo':
        user        => $opendsa_user,
        group       => $opendsa_group,
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        cwd         => $opendsa_home,
    
        path        => '/bin:/usr/bin',
        environment => ["HOME=${opendsa_home}"],
        command     => "${opendsa_home}/on_update.sh",
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        require     => File["${opendsa_home}/on_update.sh"],
    
        notify      => Service[$opendsa_service],
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
      }
    
      file { "${opendsa_home}/manage.sh":
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        ensure => file,
        owner  => $opendsa_user,
        group  => $opendsa_group,
        mode   => '0755',
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        source => "puppet:///modules/${module_name}/opendsa/manage.sh",
      }
    
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      # Do we need port 12000 open? NO
      service { $opendsa_service :
        ensure => 'running',
    
      # Ändra TDDD86-raden i rules.d/opendsa till "TDDD86[AB]_191219"
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
    }