diff --git a/manifests/init.pp b/manifests/init.pp index 6e6fe45..e59e4c9 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -50,7 +50,7 @@ $license_file = undef, $user = 'teamspeak', $group = 'teamspeak', - $init = 'init', # or systemd + $init = $teamspeak::params::init, $home = '/opt/teamspeak', $service = 'teamspeak', ) inherits ::teamspeak::params { @@ -87,45 +87,24 @@ } $parsed_mirror = inline_template($mirror) - exec { 'download_teamspeak': - command => "wget -q ${parsed_mirror}", - path => '/usr/bin', - cwd => "${home}/downloads", - user => $user, - group => $group, - creates => "${home}/downloads/teamspeak3-server_linux_${arch}-${version}.tar.bz2", - require => [ + +archive { "${home}/downloads/teamspeak3-server_linux_${arch}-${version}.tar.bz2": + ensure => present, + extract => true, + extract_path => $home, + extract_command => "tar -xf %s -C /opt/teamspeak/ --strip 1", + source => $parsed_mirror, + checksum => '19ccd8db5427758d972a864b70d4a1263ebb9628fcc42c3de75ba87de105d179', + checksum_type => 'sha256', + creates => '/opt/teamspeak/ts3server', + cleanup => false, + user => $user, + group => $group, + require => [ File["${home}/downloads"], User[$user], - Package['wget'], - ], - } - - exec { 'unpack_teamspeak': - command => "tar -xf ${home}/downloads/teamspeak3-server_linux_${arch}-${version}.tar.bz2 -C /opt/teamspeak/downloads", - path => '/bin', - user => $user, - refreshonly => true, - subscribe => Exec['download_teamspeak'], - } - - exec { 'copy_teamspeak': - command => "cp -R teamspeak3-server_linux_${arch}/* ${home}", - cwd => "${home}/downloads", - path => '/bin', - user => $user, - refreshonly => true, - subscribe => Exec['unpack_teamspeak'], - } - - file { 'delete_temp_teamspeak': - ensure => absent, - path => "${home}/downloads/teamspeak3-server_linux_${arch}", - subscribe => Exec['copy_teamspeak'], - recurse => true, - purge => true, - force => true, - } + ], +} if $license_file != undef { file { 'teamspeak_license': diff --git a/manifests/params.pp b/manifests/params.pp index 25f9f73..512257d 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -20,15 +20,41 @@ $download_arch = 'x86' } } + 'Suse': { + if $arch == 'x86_64' { + $download_arch = 'amd64' + } else { + $download_arch = 'x86' + } + } default: { } } + +if ($::osfamily == 'Debian') and ($::operatingsystemmajrelease >= '8') { + $init = 'systemd' +} +if ($::osfamily == 'Debian') and ($::operatingsystemmajrelease < '8') { + $init = 'init' +} +if ($::osfamily == 'RedHat') and ($::operatingsystemmajrelease >= '7') { + $init = 'systemd' +} +if ($::osfamily == 'RedHat') and ($::operatingsystemmajrelease < '7') { + $init = 'init' +} +if ($::osfamily == 'Suse') and ($::operatingsystemmajrelease >= '42') { + $init = 'systemd' +} +if ($::osfamily == 'Suse') and ($::operatingsystemmajrelease < '42') { + $init = 'init' +} + if !($arch in ['i386', 'amd64', 'x86_64']) { fail("${arch} is not currently supported!") } - if !($::osfamily in ['Debian', 'RedHat']) { + if !($::osfamily in ['Debian', 'RedHat', 'Suse']) { fail("${::osfamily} is not currently supported!") } - } diff --git a/templates/init/Suse.init.erb b/templates/init/Suse.init.erb new file mode 100644 index 0000000..90192b3 --- /dev/null +++ b/templates/init/Suse.init.erb @@ -0,0 +1,36 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: teamspeak3 +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Teamspeak 3 Server +### END INIT INFO +# description: Starts or Stops TeamSpeak 3 Server +# +# works on openSuSE 42 Leap Systems (should also work on openSuse 13.x) +# + +USER="<%= @user -%>" +TS3='<%= @home -%>' +STARTSCRIPT="$TS3/ts3server_startscript.sh" + +cd $TS3 + +case "$1" in + 'start') + su $USER -c "$STARTSCRIPT start" + ;; + 'stop') + su $USER -c "$STARTSCRIPT stop" + ;; + 'restart') + su $USER -c "$STARTSCRIPT restart" + ;; + 'status') + su $USER -c "$STARTSCRIPT status" + ;; + *) + echo "Usage $0 start|stop|restart|status" +esac \ No newline at end of file diff --git a/templates/systemd/teamspeak.erb b/templates/systemd/teamspeak.erb index ae67319..fa27755 100644 --- a/templates/systemd/teamspeak.erb +++ b/templates/systemd/teamspeak.erb @@ -9,7 +9,7 @@ User=<%= @user %> ExecStart=<%= @home -%>/ts3server_startscript.sh start ExecStop=<%= @home -%>/ts3server_startscript.sh stop ExecReload=<%= @home -%>/ts3server_startscript.sh restart -Restart=always +Restart=on-success RestartSec=15 [Install]