aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--defaults/main.yml3
-rw-r--r--handlers/main.yml15
-rw-r--r--tasks/config.yml12
-rw-r--r--tasks/display.yml29
-rw-r--r--tasks/install.yml79
-rw-r--r--tasks/install_license.yml18
-rw-r--r--tasks/main.yml109
-rw-r--r--tasks/restore_backup.yml21
-rw-r--r--tasks/ts3update.yml27
-rw-r--r--templates/teamspeak3-server.service.j26
10 files changed, 89 insertions, 230 deletions
diff --git a/defaults/main.yml b/defaults/main.yml
index 708d0d6..2e9d34a 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -31,6 +31,3 @@ teamspeak_network:
teamspeak_create_default_virtualserver: yes
teamspeak_machine_id:
-
-teamspeak_restore_db_path:
-teamspeak_restore_files_path:
diff --git a/handlers/main.yml b/handlers/main.yml
index 7726e91..b6da598 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,16 +1,7 @@
---
-# handlers file for teamspeak
-- name: Reload systemd
- command: systemctl daemon-reload
-
-- name: Restart TeamSpeak 3 Server
- service:
+- name: "Restart teamspeak server"
+ systemd:
name: teamspeak3-server
state: restarted
-
-- name: Prune older TeamSpeak 3 Server versions
- shell: "{{ item }}"
- with_items:
- - find {{ teamspeak.home }}/teamspeak3-server_linux_amd64-* -maxdepth 0 -type d | sort | head -n-{{ teamspeak.keep }} | xargs echo rm -rf
- - find {{ teamspeak.home }}/teamspeak3-server_linux_amd64-*.tar.bz2 -type f | sort | head -n-{{ teamspeak.keep }} | xargs rm -f
+ daemon_reload: yes
diff --git a/tasks/config.yml b/tasks/config.yml
deleted file mode 100644
index 3a9035a..0000000
--- a/tasks/config.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-# configuration tasks for teamspeak
-
-- name: "Configuration : Create TeamSpeak 3 Server configuration file"
- template:
- src: ts3server.ini.j2
- dest: "{{ ts3server_dir }}/{{ teamspeak_ini_filename }}"
- mode: 0644
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
- notify:
- - Restart TeamSpeak 3 Server
diff --git a/tasks/display.yml b/tasks/display.yml
deleted file mode 100644
index 9c153e2..0000000
--- a/tasks/display.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-# configuration tasks for teamspeak
-
-# This task prints information a TeamSpeak 3 server admin needs to log in to
-# the newly installed TeamSpeak 3 Server.
-
-- name: "Display : Wait until TeamSpeak 3 ServerQuery is open"
- wait_for:
- port: "{{ teamspeak_network.query.port }}"
- timeout: 30
-
-- name: "Display : Fetch the password of the Server Query Admin Account"
- shell: journalctl --unit teamspeak3-server.service --reverse | awk -F'"' '/password=/ { print $4; exit }'
- register: __ts3_serveradmin_password
- changed_when: False
-
-- name: "Display : Show the Server Query Admin Account password"
- debug:
- msg: "serveradmin password: {{ __ts3_serveradmin_password.stdout }}"
-
-- block:
- - name: "Display : Fetch the ServerAdmin privilege key (token)"
- shell: journalctl --unit teamspeak3-server.service --reverse | awk -F'=' '/token=/ { print $2 ; exit }'
- register: __ts3_default_priv_token
- changed_when: False
- - name: "Display : Show the ServerAdmin privilege key"
- debug:
- msg: "token: {{ __ts3_default_priv_token.stdout }}"
- when: teamspeak_create_default_virtualserver
diff --git a/tasks/install.yml b/tasks/install.yml
index 847e719..7176941 100644
--- a/tasks/install.yml
+++ b/tasks/install.yml
@@ -1,75 +1,40 @@
---
-# install tasks file for teamspeak
-
-# Start of installation
-- name: "Install : Create Teamspeak user"
- user:
- name: "{{ teamspeak.user }}"
- comment: "{{ teamspeak.comment }}"
- home: "{{ teamspeak.home }}"
- shell: "{{ teamspeak.shell }}"
- system: yes
- name: "Ensure bzip2 package is installed"
package:
name: bzip2
state: present
-- name: "Install : Download TeamSpeak {{ teamspeak.version }} Server files"
+- name: "Prepare temporary file for download"
+ tempfile: state=file
+ register: tmpfile
+
+- name: "Download teamspeak {{ teamspeak.version }} server files"
get_url:
url: "http://dl.4players.de/ts/releases/{{ teamspeak.version }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}.tar.bz2"
- dest: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}.tar.bz2"
+ dest: "{{ tmpfile.path }}"
checksum: "{{ teamspeak.checksum }}"
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
-
-- name: "Install : Create TeamSpeak {{ teamspeak.version }} Server directory"
- file:
- path: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}"
- state: directory
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
- register: mkdir
-# If a new directory has been created, check for (current) user data.
-- name: "Install : Checking for a currently installed TeamSpeak 3 Server with user data"
- stat:
- path: "{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/files"
- register: userdata
- when: mkdir.changed
-
-# If user data has been found, this is an upgrade situation.
-- include: ts3update.yml
- when: userdata.stat is defined and userdata.stat.exists == True
-
-# Created a new directory? Extract the files into it. Overwrites existing.
-- name: "Install : Extract TeamSpeak {{ teamspeak.version }} Server files"
+- name: "Install teamspeak server files"
unarchive:
- copy: no
- src: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}.tar.bz2"
- dest: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}/"
+ src: "{{ tmpfile.path }}"
+ remote_src: yes
+ dest: "{{ teamspeak.home }}"
owner: "{{ teamspeak.user }}"
group: "{{ teamspeak.user }}"
- when: mkdir.changed
+ extra_opts: [--strip-components=1]
+ notify:
+ - Restart teamspeak server
-- name: "Install : Create/Update symlink to TeamSpeak {{ teamspeak.version }} Server"
+- name: "Cleanup temporary download file"
file:
- src: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}"
- dest: "{{ teamspeak.home }}/{{ teamspeak.symlink }}"
- state: link
+ state: absent
+ path: "{{ tmpfile.path }}"
+
+- name: "Create VERSION file"
+ copy:
+ content: "{{ teamspeak.version }}"
+ dest: "{{ teamspeak.home }}/VERSION"
+ mode: 0600
owner: "{{ teamspeak.user }}"
group: "{{ teamspeak.user }}"
- notify:
- - Restart TeamSpeak 3 Server
-
-- name: "Install : Install TeamSpeak 3 systemctl service file"
- template:
- src: teamspeak3-server.service.j2
- dest: "{{ systemd_service_file_path }}/teamspeak3-server.service"
- mode: 0644
- owner: root
- group: root
- notify:
- - Reload systemd
- - Restart TeamSpeak 3 Server
-
diff --git a/tasks/install_license.yml b/tasks/install_license.yml
deleted file mode 100644
index 25c9365..0000000
--- a/tasks/install_license.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-# License install tasks for role teamspeak
-
-- name: "License : Create directory for license"
- file:
- path: "{{ teamspeak_licensepath }}"
- state: directory
- when: teamspeak_licensepath is not none
-
-- name: "License : Copy the license file"
- copy:
- src: "{{ teamspeak_license_srcfile }}"
- dest: "{{ teamspeak_licensepath if teamspeak_licensepath is not none else ts3server_dir }}/licensekey.dat"
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
- mode: 0400
- notify:
- - Restart TeamSpeak 3 Server
diff --git a/tasks/main.yml b/tasks/main.yml
index b5dded6..f524f4c 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,69 +1,82 @@
---
-# tasks file for teamspeak
- name: "Load OS specific variables"
include_vars: "{{ item }}"
- with_first_found:
- - files:
+ with_first_found:
+ - files:
- "{{ ansible_distribution|lower }}.yml"
- "{{ ansible_os_family|lower }}.yml"
- "{{ ansible_system|lower }}.yml"
- - main.yml
- paths:
+ skip: true
+ paths:
- ../vars
-# Installation of TeamSpeak 3 Server
-- include: install.yml
+- name: "Ensure teamspeak user exists"
+ user:
+ name: "{{ teamspeak.user }}"
+ comment: "{{ teamspeak.comment }}"
+ home: "{{ teamspeak.home }}"
+ shell: "{{ teamspeak.shell }}"
+ system: yes
-# Store the TeamSpeak 3 Server directory in a short variable
-- name: "Set TeamSpeak 3 Server directory fact"
- set_fact:
- ts3server_dir: "{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64"
+- name: "Ensure everything is owned by {{ teamspeak.user }}"
+ file:
+ path: "{{ teamspeak.home }}"
+ state: directory
+ owner: "{{ teamspeak.user }}"
+ group: "{{ teamspeak.user }}"
+ recurse: yes
-# License file management
- # Install a license file
-- include: install_license.yml
- when: teamspeak_use_license
+- name: "Check teamspeak server version"
+ slurp:
+ src: "{{ teamspeak.home }}/VERSION"
+ ignore_errors: yes
+ register: ts3version
- # Remove a possible leftover license file when teamspeak_use_license is disabled.
- # The default is to look for it in the TeamSpeak 3 Server directory, so
- # we remove it there if the option has been disabled.
-- name: "License : Clean up license in TeamSpeak 3 Server directory if needed"
- file:
- path: "{{ ts3server_dir }}/licensekey.dat"
- state: absent
- when: not teamspeak_use_license
-# End of license file management
+- include_tasks: install.yml
+ when: ts3version.content|default(None)|b64decode != teamspeak.version
-# Configuration of TeamSpeak 3 Server (if requested)
- # Create configuration file
-- include: config.yml
+- name: "Create teamspeak server configuration file"
+ template:
+ src: ts3server.ini.j2
+ dest: "{{ teamspeak.home }}/{{ teamspeak_ini_filename }}"
+ mode: 0644
+ owner: "{{ teamspeak.user }}"
+ group: "{{ teamspeak.user }}"
when: teamspeak_ini_enabled
+ notify:
+ - Restart teamspeak server
- # Clean-up a lingering configuration file if we don't need it anymore
-- name: "Configuration : Clean-up old configuration file if needed"
+- name: "Ensure license directory exists"
file:
- path: "{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/{{ teamspeak_ini_filename }}"
- state: absent
- when: not teamspeak_ini_enabled
-# End of configuration
+ path: "{{ teamspeak_licensepath }}"
+ state: directory
+ when: teamspeak_licensepath is not none and teamspeak_use_license
-# Restore from backups if they exist
-- include: restore_backup.yml
- when: userdata.stat is defined and userdata.stat.exists == False
+- name: "Copy the license file"
+ copy:
+ src: "{{ teamspeak_license_srcfile }}"
+ dest: "{{ teamspeak_licensepath if teamspeak_licensepath is not none else teamspeak.home }}/licensekey.dat"
+ owner: "{{ teamspeak.user }}"
+ group: "{{ teamspeak.user }}"
+ mode: 0400
+ when: teamspeak_use_license
+ notify:
+ - Restart teamspeak server
+
+- name: "Install systemd service file"
+ template:
+ src: teamspeak3-server.service.j2
+ dest: "{{ systemd_service_file_path }}/teamspeak3-server.service"
+ mode: 0644
+ owner: root
+ group: root
+ notify:
+ - Restart teamspeak server
-# Perform the running of handlers now
-# So we can do "Reload systemd" (and possibly queued clean-up)
-# before we start using the new/changed .service file.
-- meta: flush_handlers
-# Make sure TeamSpeak 3 Server is started and enabled
-- name: Enable and start TeamSpeak 3 Server
- service:
+- name: "Ensure teamspeak server is running and enabled"
+ systemd:
name: teamspeak3-server
state: started
enabled: yes
-
-# Display Teamspeak 3 Server Token and Password if this is a new installation
-# (a new installation has no userdata, and this is checked for in install.yml)
-- include: display.yml
- when: userdata.stat is defined and userdata.stat.exists == False
+ daemon_reload: yes
diff --git a/tasks/restore_backup.yml b/tasks/restore_backup.yml
deleted file mode 100644
index a760c0a..0000000
--- a/tasks/restore_backup.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-- name: "Restoring database from backup"
- copy:
- src: "{{ teamspeak_restore_db_path }}"
- dest: "{{ ts3server_dir }}/ts3server.sqlitedb"
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
- mode: 0600
- notify:
- - Restart TeamSpeak 3 Server
- when: teamspeak_restore_db_path is not none
-
-- name: "Restoring files/ from backup"
- unarchive:
- src: "{{ teamspeak_restore_files_path }}"
- dest: "{{ ts3server_dir }}"
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
- notify:
- - Restart TeamSpeak 3 Server
- when: teamspeak_restore_files_path is not none
diff --git a/tasks/ts3update.yml b/tasks/ts3update.yml
deleted file mode 100644
index 58e9e12..0000000
--- a/tasks/ts3update.yml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-# tasks file for teamspeak
-
-- name: "Update : Check if a TeamSpeak 3 Server systemd service unit exists"
- stat:
- path: "{{ systemd_service_file_path }}/teamspeak3-server.service"
- register: ts3_systemd_service
-
-- name: "Update : Stop currently running TeamSpeak 3 Server instance"
- service:
- name: teamspeak3-server
- state: stopped
- when: ts3_systemd_service.stat.exists
-
-- name: "Update : Copy existing TeamSpeak 3 Server data to new TeamSpeak {{ teamspeak.version }} Server directory"
- command: cp -r "{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/"
- "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}/teamspeak3-server_linux_amd64/"
- notify:
- - Prune older TeamSpeak 3 Server versions
-
-- name: "Update : Make sure ownership is set to {{ teamspeak.user }}"
- file:
- path: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}/teamspeak3-server_linux_amd64/"
- state: directory
- owner: "{{ teamspeak.user }}"
- group: "{{ teamspeak.user }}"
- recurse: yes
diff --git a/templates/teamspeak3-server.service.j2 b/templates/teamspeak3-server.service.j2
index 485084e..6f300c5 100644
--- a/templates/teamspeak3-server.service.j2
+++ b/templates/teamspeak3-server.service.j2
@@ -6,11 +6,11 @@ After=network.target
Type=simple
User={{ teamspeak.user }}
Group={{ teamspeak.user }}
-WorkingDirectory={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64
+WorkingDirectory={{ teamspeak.home }}
{% if teamspeak_ini_enabled %}
-ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/ts3server_minimal_runscript.sh inifile={{ teamspeak_ini_filename }}
+ExecStart={{ teamspeak.home }}/ts3server_minimal_runscript.sh inifile={{ teamspeak_ini_filename }}
{% else %}
-ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/ts3server_minimal_runscript.sh
+ExecStart={{ teamspeak.home }}/ts3server_minimal_runscript.sh
{% endif %}
[Install]