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] | 
