Skip to content
Snippets Groups Projects
aes_sw.pp 5.66 KiB
Newer Older
  • Learn to ignore specific revisions
  • # @summary
    
    #   Software for the AES system.
    
    #
    #   Detailed summary info if suitable
    #
    
      $examadm_user = examadm
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      $examadm_group = $examadm_user
    
      $examadm_home = "/home/${examadm_user}"
    
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
      case fact('os.family') {
        'RedHat': {
          firewalld_custom_service { 'aes-server':
            description => 'Authentic Examination System server',
            ports       => [
              { port => '23431',  protocol => 'tcp' },
              { port => '23816',  protocol => 'tcp' },
              { port => '23817',  protocol => 'tcp' },
            ],
          }
    
          @firewalld_rich_rule {
            default:
              service => 'aes-server',
              log     => false;
    
            'Accept aes-server in LiU networks without logging IPv4':
              zone   => 'liu',
              family => 'ipv4',
              action => 'accept';
            'Accept aes-server in LiU networks without logging IPv6':
              zone   => 'liu',
              family => 'ipv6',
              action => 'accept';
          }
        }
        'CentOS': {
          ::server_firewall::rules_file { '45-permit_aes_sw.rules':
            # lint:ignore:strict_indent heredoc failing...
            content => @(EOF),
    	service sclogin is tcp/23431
            service aesmsi is tcp/23816
            service aesmso is tcp/23817
    
            policy chain INPUT is
              accept service:sclogin from class:liu-nets
              accept service:aesmsi from class:liu-nets
              accept service:aesmso from class:liu-nets
            end policy
            |-EOF
            # lint:endignore:strict_indent
          }
        }
        default: {
          fail("${module_name} - Not supported for family ${fact('os.family')}.")
        }
      }
    
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
      package {
        [
    
          'enscript', # present in pars_pwd_list.py, but pars_pwd_list.py old and unused?
    
          'cronie',
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
          'java-11-openjdk-devel',
        ]:
          ensure  => installed,
      }
    
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      user { 'examadm' :
        ensure     => present,
    
        managehome => false,
        membership => inclusive,
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        system     => true,
    
        shell      => '/bin/bash',
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      file { $examadm_home:
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        ensure => directory,
        mode   => '0755',
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        owner  => $examadm_user,
        group  => $examadm_group,
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
      }
    
    
      file { "${examadm_home}/.ssh":
        ensure => directory,
        mode   => '0700',
        owner  => $examadm_user,
        group  => $examadm_group,
      }
    
    
      # lint:ignore:140chars
    
      file { "${examadm_home}/.ssh/authorized_keys":
        ensure  => file,
    
    Mika Perälä's avatar
    Mika Perälä committed
        mode    => '0600',
        owner   => $examadm_user,
        group   => $examadm_group,
    
        # lint:ignore:strict_indent heredoc failing...
    
        content => @(SSHPUBKEY),
    
    Mika Perälä's avatar
    Mika Perälä committed
          command="/home/examadm/tal-cli/source/scripts/tal-export.py --format ics --lookback 90 --lookahead 180",no-pty,no-user-rc,no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJW4LP0av20r7lPXNgsftF9oaAXK41AvHyuHwybciZC/QBfTcmYif83563cTg0OzR/p+OSobiDM0odaaFYtP/8xbuVRz87X5bGYm2m8yHHqPxobHkT5g/faMkl9Fef+Al4EsT5tiaYMOhG2lj8XRYuwAb7qjoz3FFbs8TEPE7Sv+4BUCCH94taCuNYLXSxN1EXvw7VW6Ld5QXRFP53l2QUeTqE9oSii3BVrXlqqrLvNV/7nwdwyse4uhff4QrM9o4oc9FaQr8PLlPGxdlbSfIQJMVzHGpeDu0WLw+NqtLO1hsdlvQm7GrT/v8N7GJNKlsvhwnwUuMhTrB0yPMbbub1 klaar36@upp
    
          command="/home/examadm/tal-cli/source/scripts/tal-export.py --written --format ics --lookback 90 --lookahead 180",no-pty,no-user-rc,no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILZ8aEAXw0tRcYrk1aqldepuC6tmdUYZuM270QdDF79o tal written exams to ics
    
        | SSHPUBKEY
    
        # lint:endignore:strict_indent
    
      # lint:endignore:140chars
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      file { '/etc/systemd/system/aes_login.service':
        ensure  => file,
        owner   => root,
        group   => root,
        mode    => '0644',
    
        # lint:ignore:strict_indent heredoc failing...
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        content => @(LOGINSERVICE),
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        Description=AES Login server
        After=network.target
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        [Service]
        Type=simple
        User=examadm
        WorkingDirectory=/home/examadm/Version-3.1/exam
        ExecStart=/usr/bin/python3 /home/examadm/Version-3.1/pub/bin/examiner/find_pnr_and_otp_from_liuid.py
    
        [Install]
        WantedBy=multi-user.target
        | LOGINSERVICE
    
        # lint:endignore:strict_indent
    
      # todo: logrotate
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      service { 'aes_login' :
        ensure => 'running',
    
        enable => true,
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      file { '/etc/systemd/system/aes_ms.service':
        ensure  => file,
        owner   => root,
        group   => root,
        mode    => '0644',
    
        # lint:ignore:strict_indent heredoc failing...
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        content => @(MSSERVICE),
    
        Description=AES Exam server
        After=network.target
    
        [Service]
        Type=simple
        User=examadm
        WorkingDirectory=/home/examadm/Version-3.1
        ExecStart=/usr/bin/java -Xmx512M -jar /home/examadm/Version-3.1/pub/bin/examiner/ms.jar /home/examadm/Version-3.1
    
        [Install]
        WantedBy=multi-user.target
        | MSSERVICE
    
        # lint:endignore:strict_indent
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      file { '/etc/cron.daily/aes_ms':
        ensure  => file,
        owner   => root,
        group   => root,
        mode    => '0700',
    
        # lint:ignore:strict_indent heredoc failing...
    
    Magnus Svensson's avatar
    Magnus Svensson committed
        content => @(MSCRON),
    
        #!/bin/sh
    
        /usr/bin/systemctl restart aes_ms
        | MSCRON
    
        # lint:endignore:strict_indent
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
      file { '/etc/cron.daily/aes_login':
        ensure  => file,
        owner   => root,
        group   => root,
        mode    => '0700',
    
        # lint:ignore:strict_indent heredoc failing...
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        content => @(MSCRON),
    
        #!/bin/sh
    
    Klas Arvidsson's avatar
    Klas Arvidsson committed
        /usr/bin/systemctl restart aes_login
        | MSCRON
    
        # lint:endignore:strict_indent
    
      # todo: logrotate
    
    Magnus Svensson's avatar
    Magnus Svensson committed
      service { 'aes_ms' :
        ensure => 'running',
    
        enable => true,
    
      # Test to replace exec for repo update //thojo16
      vcsrepo { "${examadm_home}/scripts":
        ensure   => latest,
        provider => git,
        source   => 'https://oauth2:iAyewr9Jq5E-tnsVrmbj@gitlab.liu.se/examadm/scripts.git',
        revision => 'master',
        owner    => $examadm_user,
        group    => $examadm_group,