Puppet Class: tigervnc::config

Defined in:
manifests/config.pp

Overview

This class is called from tigervnc for service config.



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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'manifests/config.pp', line 5

class tigervnc::config {
  assert_private('tigervnc::config is a private class')

 $_vncservers = $tigervnc::vncservers
 $_vncservers_length = length($_vncservers)
 if $_vncservers_length == 0 {
   fail("no vncservers were defined for use with tigervnc::config class")
 }

  case $::operatingsystem {
    'RedHat', 'CentOS': {
      if $tigervnc::manage_vncuser_passwords {
        $tigervnc::vncservers.each |String $username, Hash $params| {
          exec { "create_vnc_dir_${username}":
            command => "mkdir ${tigervnc::user_homedir_path}/${username}/.vnc",
            path    =>  ['/bin', '/usr/bin',],
            cwd     => "${tigervnc::user_homedir_path}/${username}",
            user    => $username,
            creates => "${tigervnc::user_homedir_path}/${username}/.vnc",
          }
          if 'passwd' in $params {
            $pass = $params[passwd]
            exec { "create_vncuser_passwd_${username}":
              command => "echo ${pass} | vncpasswd -f > ${tigervnc::user_homedir_path}/${username}/.vnc/passwd ; chmod 600 ${tigervnc::user_homedir_path}/${username}/.vnc/passwd",
              path    =>  ['/bin', '/usr/bin',],
              cwd     => "${tigervnc::user_homedir_path}/${username}/.vnc",
              user    => $username,
              creates => "${tigervnc::user_homedir_path}/${username}/.vnc/passwd",
              require => Exec["create_vnc_dir_${username}"],
            }
          } else {
            exec { "create_vncuser_passwd_${username}":
              command => "echo ${tigervnc::vncuser_default_passwd} | vncpasswd -f > ${tigervnc::user_homedir_path}/${username}/.vnc/passwd ; chmod 600 ${tigervnc::user_homedir_path}/${username}/.vnc/passwd",
              path    =>  ['/bin', '/usr/bin',],
              cwd     => "${tigervnc::user_homedir_path}/${username}",
              user    => $username,
              creates => "${tigervnc::user_homedir_path}/${username}/.vnc/passwd",
              require => Exec["create_vnc_dir_${username}"],
            }

          }
        }
      }

      case $::operatingsystemmajrelease {
        '6': {
          file { '/etc/sysconfig/vncservers':
            ensure  => present,
            owner   => 'root',
            group   => 'root',
            mode    => '0644',
            content =>  template($tigervnc::sysconfig_template),
          }
        }
        '7': {
          include ::systemd::systemctl::daemon_reload

          $_vncservers.each |String $username, Hash $useropts| {
            if 'ensure' in $useropts {
              $_ensure = $useropts[ensure]
            } else {
              $_ensure = 'present'
            }
            $_displaynumber = $useropts[displaynumber]
            if 'args' in $useropts {
              $_args = $useropts[args]
              file { "/etc/systemd/system/vncserver@:${_displaynumber}.service":
                ensure  => $_ensure,
                content =>  epp('tigervnc/systemd_service_with_args.epp', { 'username' =>  $username, 'args' =>  $_args }),
              } ~> Class['systemd::systemctl::daemon_reload']
            } else {
              file { "/etc/systemd/system/vncserver@:${_displaynumber}.service":
                ensure  => $_ensure,
                content =>  epp('tigervnc/systemd_service.epp', { 'username' =>  $username }),
              } ~> Class['systemd::systemctl::daemon_reload']
            }
          }
        }
        default: {
          fail("${::operatingsystem} ${::operatingsystemmajrelease} not supported")
        }
      }
    }
    default: {
      fail("${::operatingsystem} not supported")
    }
  }
}