diff options
-rw-r--r-- | defaults/main.yml | 3 | ||||
-rw-r--r-- | handlers/main.yml | 15 | ||||
-rw-r--r-- | tasks/config.yml | 12 | ||||
-rw-r--r-- | tasks/display.yml | 29 | ||||
-rw-r--r-- | tasks/install.yml | 79 | ||||
-rw-r--r-- | tasks/install_license.yml | 18 | ||||
-rw-r--r-- | tasks/main.yml | 109 | ||||
-rw-r--r-- | tasks/restore_backup.yml | 21 | ||||
-rw-r--r-- | tasks/ts3update.yml | 27 | ||||
-rw-r--r-- | templates/teamspeak3-server.service.j2 | 6 |
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] |