diff options
author | Stefan Joosten <stefan@sjoosten.nl> | 2016-07-31 02:33:23 +0200 |
---|---|---|
committer | Stefan Joosten <stefan@sjoosten.nl> | 2016-07-31 02:40:03 +0200 |
commit | 509c5986cfa2458156a4543332530a002a01c59a (patch) | |
tree | a688aff54ce8b022608e32ab94d68286be807f57 | |
parent | 1786fb4baee84deeaae30ec3aa0e59d0c92a812c (diff) | |
download | ansible-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.md | 5 | ||||
-rw-r--r-- | defaults/main.yml | 2 | ||||
-rw-r--r-- | handlers/main.yml | 5 | ||||
-rw-r--r-- | tasks/main.yml | 57 | ||||
-rw-r--r-- | templates/teamspeak3-server.service.j2 | 6 |
5 files changed, 51 insertions, 24 deletions
@@ -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 |