aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Joosten <stefan@sjoosten.nl>2016-07-31 02:33:23 +0200
committerStefan Joosten <stefan@sjoosten.nl>2016-07-31 02:40:03 +0200
commit509c5986cfa2458156a4543332530a002a01c59a (patch)
treea688aff54ce8b022608e32ab94d68286be807f57
parent1786fb4baee84deeaae30ec3aa0e59d0c92a812c (diff)
downloadansible-teamspeak-509c5986cfa2458156a4543332530a002a01c59a.tar.gz
ansible-teamspeak-509c5986cfa2458156a4543332530a002a01c59a.tar.xz
ansible-teamspeak-509c5986cfa2458156a4543332530a002a01c59a.zip
Inplemented first version of a updating mechanism.
README.md: Documented new variable and requirement. defaults/main.yml: Changed symlink to "current" handlers/main.yml: "reload systemd" -> "Reload systemd" Added pruning of old TS3Server versions. tasks/main.yml: Added version number of TS3Server in names. Added tasks to perform updating. Changed symlink path. Changed task name for service file slightly. templates/teamspeak3-server.service.j2: updated to use the new symlink path.
-rw-r--r--README.md5
-rw-r--r--defaults/main.yml2
-rw-r--r--handlers/main.yml5
-rw-r--r--tasks/main.yml57
-rw-r--r--templates/teamspeak3-server.service.j26
5 files changed, 51 insertions, 24 deletions
diff --git a/README.md b/README.md
index 3d60063..60a2a77 100644
--- a/README.md
+++ b/README.md
@@ -18,8 +18,9 @@ defaults/main.yml:
* teamspeak.comment: User comment field. Defaults to "Teamspeak 3 user".
* teamspeak.home: Home directory for the teamspeak user. Will also be used to install the teamspeak server in. Defaults to "/opt/teamspeak".
* teamspeak.shell: Shell for the teamspeak user. Defaults to "/usr/sbin/nologin".
+* teamspeak.symlink: Name of symlink to point to current TeamSpeak 3 server directory. Defaults to "current".
* teamspeak.version: Version of Teamspeak 3 Server to install. Defaults to "3.0.12.4".
-* teamspeak.checksum: "sha256:6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9"
+* teamspeak.checksum: SHA256 checksum of archive of TeamSpeak 3 server version for verification purposes. Example: "sha256:6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9"
vars/{debian,redhat}.yml:
@@ -28,7 +29,7 @@ vars/{debian,redhat}.yml:
Dependencies
------------
-No other dependencies I am aware of.
+rsync should be installed on the host to perform TeamSpeak 3 Server upgrades, used by the "synchronize" module.
Example Playbook
----------------
diff --git a/defaults/main.yml b/defaults/main.yml
index e374749..be63f8a 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -6,6 +6,6 @@ teamspeak:
comment: "Teamspeak 3 user"
home: "/opt/teamspeak"
shell: "/usr/sbin/nologin"
- symlink: "teamspeak3-server"
+ symlink: "current"
version: "3.0.12.4"
checksum: "sha256:6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9"
diff --git a/handlers/main.yml b/handlers/main.yml
index 41d0044..154a161 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,5 +1,8 @@
---
# handlers file for teamspeak
-- name: reload systemd
+- name: Reload systemd
command: systemctl daemon-reload
+
+- name: Prune older TeamSpeak 3 server versions
+ shell: "find {{ teamspeak.home }}/teamspeak3-server_linux_amd64-*/ -maxdepth 1 -iname 'teamspeak3-server_linux_amd64' -type d | head -n-2 | xargs rm -rf"
diff --git a/tasks/main.yml b/tasks/main.yml
index f23906b..cdbd25a 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -24,7 +24,7 @@
tags:
- teamspeak
-- name: Download TeamSpeak 3 server files
+- 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"
@@ -34,37 +34,60 @@
tags:
- teamspeak
-- name: Create TeamSpeak 3 server directory
+- name: 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
tags:
- teamspeak
-- name: Extract TeamSpeak 3 server files
+# If a new directory has been created, check for (current) user data.
+- name: 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
+ tags:
+ - teamspeak
+
+# If user data has been found, this is an upgrade situation.
+# Stop, copy current and extract newer on top.
+- name: Stop currently running TeamSpeak 3 server instance
+ service:
+ name: teamspeak3-server
+ state: stopped
+ when: userdata.stat.exists is defined and userdata.stat.exists == True
+ tags:
+ - teamspeak
+
+- name: Copy existing TeamSpeak 3 server data to new TeamSpeak {{ teamspeak.version }} server directory
+ synchronize:
+ src: "{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/"
+ dest: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}/teamspeak3-server_linux_amd64/"
+ delegate_to: "{{ inventory_hostname }}"
+ when: userdata.stat.exists is defined and userdata.stat.exists == True
+ notify:
+ - Prune older TeamSpeak 3 server versions
+ tags:
+ - teamspeak
+
+- name: Extract TeamSpeak {{ teamspeak.version }} 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 }}/"
- creates: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}/teamspeak3-server_linux_amd64"
owner: "{{ teamspeak.user }}"
group: "{{ teamspeak.user }}"
+ when: mkdir.changed
tags:
- teamspeak
-# Updater idea
-# 1. Check if user files exist under symlinked directory.
-# 2. true? Copy user files to directory of new TeamSpeak3 server version.
-# 3. Stop currently running TeamSpeak 3 Server (under symlinked directory).
-# 4. Create/Update symlink
-# 5. notify systemd of the update
-# 6. Start new TeamSpeak 3 server
-
-- name: Create/Update symlink to TeamSpeak 3 server {{ teamspeak.version }}
+- name: Create/Update symlink to TeamSpeak {{ teamspeak.version }} server
file:
- src: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}/teamspeak3-server_linux_amd64"
+ src: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}"
dest: "{{ teamspeak.home }}/{{ teamspeak.symlink }}"
state: link
owner: "{{ teamspeak.user }}"
@@ -72,7 +95,7 @@
tags:
- teamspeak
-- name: Add TeamSpeak 3 systemctl service file
+- name: Install TeamSpeak 3 systemctl service file
template:
src: teamspeak3-server.service.j2
dest: "{{ systemd_service_file_path }}/teamspeak3-server.service"
@@ -80,11 +103,11 @@
owner: root
group: root
notify:
- - reload systemd
+ - Reload systemd
tags:
- teamspeak
-# Perform the "reload systemd" handler now.
+# Perform the "Reload systemd" (and possibly queued clean-up) handler now.
# Before we start using the new/changed .service file.
- meta: flush_handlers
tags:
diff --git a/templates/teamspeak3-server.service.j2 b/templates/teamspeak3-server.service.j2
index 78d7c67..4579694 100644
--- a/templates/teamspeak3-server.service.j2
+++ b/templates/teamspeak3-server.service.j2
@@ -6,9 +6,9 @@ After=network.target
Type=simple
User={{ teamspeak.user }}
Group={{ teamspeak.user }}
-WorkingDirectory={{ teamspeak.home }}/{{ teamspeak.symlink }}
-Environment='LD_LIBRARY_PATH="{{ teamspeak.home }}/{{ teamspeak.symlink }}:$LD_LIBRARY_PATH"'
-ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/ts3server_minimal_runscript.sh
+WorkingDirectory={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64
+Environment='LD_LIBRARY_PATH="{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/:$LD_LIBRARY_PATH"'
+ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/ts3server_minimal_runscript.sh
[Install]
WantedBy=multi-user.target