diff options
-rw-r--r-- | README.md | 67 | ||||
-rw-r--r-- | defaults/main.yml | 21 | ||||
-rw-r--r-- | tasks/config.yml | 20 | ||||
-rw-r--r-- | tasks/install.yml | 69 | ||||
-rw-r--r-- | tasks/main.yml | 78 | ||||
-rw-r--r-- | templates/teamspeak3-server.service.j2 | 4 | ||||
-rw-r--r-- | templates/ts3server.ini.j2 | 26 |
7 files changed, 144 insertions, 141 deletions
@@ -21,37 +21,42 @@ Tested on Ubuntu 16.04.1. Role Variables -------------- -<tt>defaults/main.yml</tt>: - -* <tt>teamspeak.user</tt>: User to run the teamspeak server. Defaults to "teamspeak". -* <tt>teamspeak.comment</tt>: User comment field. Defaults to "Teamspeak 3 user". -* <tt>teamspeak.home</tt>: Home directory for the teamspeak user. Will also be used to install the teamspeak server in. Defaults to "/opt/teamspeak". -* <tt>teamspeak.shell</tt>: Shell for the teamspeak user. Defaults to "/usr/sbin/nologin". -* <tt>teamspeak.symlink</tt>: Name of symlink to point to current TeamSpeak 3 server directory. Defaults to "current". -* <tt>teamspeak.version</tt>: Version of Teamspeak 3 Server to install. Defaults to "3.0.12.4". -* <tt>teamspeak.checksum</tt>: SHA256 checksum of archive of TeamSpeak 3 server version for verification purposes. Example: "sha256:6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9" -* <tt>teamspeak.keep</tt>: Amount of TeamSpeak 3 server versions to keep installed, includes current version. A setting of "2" keeps the current and one previous version installed. -* <tt>teamspeak.ini_file</tt>: Set the teamspeak ini file. If not set it will not generate. - -* <tt>teamspeak_ini.machine_id</tt>: Teamspeak server machine ID, used for multiple instances on the save database. -* <tt>teamspeak.voice</tt>: Properties of the voice server -* <tt>teamspeak.voice.ip</tt>: Voice server bind IP -* <tt>teamspeak.voice.create_default</tt>: Let teamspeak3 server on first start create default server (TODO #7) -* <tt>teamspeak.voice.default_port</tt>: Default voice server port (TODO #7) -* <tt>teamspeak.filetransfer</tt>: Properties of the file transfer server -* <tt>teamspeak.filetransfer.ip</tt>: File transfer server bind IP -* <tt>teamspeak.filetransfer.port</tt>: File transfer server listen port -* <tt>teamspeak.query</tt>: Properties of the server query -* <tt>teamspeak.query.ip</tt>: Server query bind IP -* <tt>teamspeak.query.port</tt>: Server query listen port -* <tt>teamspeak.db_plugin</tt>: Teamspeak database system (TODO #4) -* <tt>teamspeak.logpath</tt>: Teamspeak logpath. Must be absolute -* <tt>teamspeak.logquerycommand</tt>: Teamspeak log all query command - - -<tt>vars/{debian,redhat}.yml</tt>: - -* <tt>systemd_service_file_path</tt>: Path where Systemd service files are installed. +Available variables to set for the TeamSpeak 3 Server installation: + +* `teamspeak.user`: User to run the teamspeak server. Defaults to "teamspeak". +* `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 checksum of archive of TeamSpeak 3 server version for verification purposes. Example: "sha256:6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9" +* `teamspeak.keep`: Amount of TeamSpeak 3 server versions to keep installed, includes current version. A setting of "2" keeps the current and one previous version installed, which is the default. + +If you need further configuration a INI file can be created for you. In such a case you should override the `teamspeak_ini_enabled` to `yes`. For example by defining it that way in host or group vars in your playbook. + +* `teamspeak_ini_enabled`: Set to `yes` if you want use the configuration options listed below. It will create INI-style configuration file for the TeamSpeak 3 Server to use. Defaults to `no`. +* `teamspeak_ini_filename`: Name of the INI-style configuration file. Defaults to `ts3server.ini`. + +The following configuration blocks can be used to configure the TeamSpeak 3 Server as you please. Make sure to override the complete blocks in full as they contain nested properties. Most reliable way is to copy a block from the `defaults/main.yml` into your own definitions file and edit accordingly. + +* `teamspeak_network.voice`: Contains nested properties of the voice server. +* `teamspeak_network.voice.default_port`: UDP port for voice clients to connect to. Default at UDP port 9987. +* `teamspeak_network.voice.ip`: IP address to listen on for incoming voice connections. Default at 0.0.0.0, which binds any IP address. +* `teamspeak_network.filetransfer`: Contains nested properties of the file transfer server. +* `teamspeak_network.filetransfer.port`: TCP port to use for file transfers. Default at TCP port 30033. +* `teamspeak_network.filetransfer.ip`: IP address where file transfers are bound to. Default to 0.0.0.0, which binds any IP address. +* `teamspeak_network.query`: Contains nested properties for the ServerQueries part of the server. +* `teamspeak_network.query.port`: TCP port used for ServerQuery connections. Default at TCP port 10011. +* `teamspeak_network.query.ip`: IP address where to listen for inbound ServerQuery connections. Default at 0.0.0.0, which binds any IP address. + +Other TeamSpeak 3 Server options: + +* `teamspeak_ini_machine_id`: Teamspeak server machine ID. Used for running provide multiple instances on the same database with a unique ID. Default is empty. +* `teamspeak_create_default_virtualserver`: Defaults to `yes`. Normally one virtual server is created automatically when the TeamSpeak 3 Server process is started. If you set this to `no` a virtual server will not be started upon startup and you would have to start one manually using the ServerQuery interface. + +Variables that differ across different Linux distributions have been set in `vars/{debian,redhat}.yml`: + +* `systemd_service_file_path`: Path where Systemd service files are installed. Dependencies ------------ diff --git a/defaults/main.yml b/defaults/main.yml index ca9739a..a4ff7e4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -10,21 +10,20 @@ teamspeak: version: "3.0.12.4" checksum: "sha256:6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9" keep: 2 - ini_file: ts3server.ini -teamspeak_ini: - disabled: true - machine_id: "" +teamspeak_ini_enabled: no +teamspeak_ini_filename: ts3server.ini + +teamspeak_network: voice: - ip: 0.0.0.0 - create_default: true default_port: 9987 + ip: 0.0.0.0 filetransfer: + port: 30033 ip: 0.0.0.0 - port: 10011 query: + port: 10011 ip: 0.0.0.0 - port: 33003 - db_plugin: ts3db_sqlite3 - logpath: /var/log/teamspeak3-server - logquerycommands: false + +teamspeak_machine_id: +teamspeak_create_default_virtualserver: yes diff --git a/tasks/config.yml b/tasks/config.yml index 11e57ff..3e9f003 100644 --- a/tasks/config.yml +++ b/tasks/config.yml @@ -1,23 +1,15 @@ --- -# Config files and actions for teamspeak3 server -- name: Short facts +# configuration tasks for teamspeak +- name: Set TeamSpeak 3 Server directory fact set_fact: ts3server_dir: "{{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64" -- name: Create ts3server.ini +- name: Create TeamSpeak 3 Server configuration file template: src: ts3server.ini.j2 - dest: "{{ ts3server_dir }}/ts3server.ini" + dest: "{{ ts3server_dir }}/{{ teamspeak_ini_filename }}" mode: 0644 owner: "{{ teamspeak.user }}" group: "{{ teamspeak.user }}" - register: ts3server_ini - -- name: Create teamspeak 3 server logs folder - file: - path: "{{ teamspeak_ini.logpath }}" - state: directory - mode: 0755 - owner: "{{ teamspeak.user }}" - group: "{{ teamspeak.user }}" - + notify: + - Restart TeamSpeak 3 Server diff --git a/tasks/install.yml b/tasks/install.yml new file mode 100644 index 0000000..98d7253 --- /dev/null +++ b/tasks/install.yml @@ -0,0 +1,69 @@ +--- +# install tasks file for teamspeak + +# Start of installation +- name: Create Teamspeak user + user: + name: "{{ teamspeak.user }}" + comment: "{{ teamspeak.comment }}" + home: "{{ teamspeak.home }}" + shell: "{{ teamspeak.shell }}" + system: yes + +- 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" + checksum: "{{ teamspeak.checksum }}" + owner: "{{ teamspeak.user }}" + group: "{{ teamspeak.user }}" + +- 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 + +# 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 + +# If user data has been found, this is an upgrade situation. +- include: ts3update.yml + when: userdata.stat.exists is defined and userdata.stat.exists == True + +# Created a new directory? Extract the files into it. Overwrites existing. +- 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 }}/" + owner: "{{ teamspeak.user }}" + group: "{{ teamspeak.user }}" + when: mkdir.changed + +- name: Create/Update symlink to TeamSpeak {{ teamspeak.version }} Server + file: + src: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}" + dest: "{{ teamspeak.home }}/{{ teamspeak.symlink }}" + state: link + owner: "{{ teamspeak.user }}" + group: "{{ teamspeak.user }}" + notify: + - Restart TeamSpeak 3 Server + +- name: 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 + diff --git a/tasks/main.yml b/tasks/main.yml index 4d93664..1b171df 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -12,79 +12,19 @@ paths: - ../vars -- name: Create Teamspeak user - user: - name: "{{ teamspeak.user }}" - comment: "{{ teamspeak.comment }}" - home: "{{ teamspeak.home }}" - shell: "{{ teamspeak.shell }}" - system: yes - -- 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" - checksum: "{{ teamspeak.checksum }}" - owner: "{{ teamspeak.user }}" - group: "{{ teamspeak.user }}" - -- 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 - -# 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 - -# If user data has been found, this is an upgrade situation. -- include: ts3update.yml - when: userdata.stat.exists is defined and userdata.stat.exists == True - -# Created a new directory? Extract the files into it. Overwrites existing. -- 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 }}/" - owner: "{{ teamspeak.user }}" - group: "{{ teamspeak.user }}" - when: mkdir.changed - -- name: Create/Update symlink to TeamSpeak {{ teamspeak.version }} server - file: - src: "{{ teamspeak.home }}/teamspeak3-server_linux_amd64-{{ teamspeak.version }}" - dest: "{{ teamspeak.home }}/{{ teamspeak.symlink }}" - state: link - owner: "{{ teamspeak.user }}" - group: "{{ teamspeak.user }}" - notify: - - Restart TeamSpeak 3 Server +# Installation of TeamSpeak 3 Server +- include: install.yml +# Configuration of TeamSpeak 3 Server (if requested) - include: config.yml - when: teamspeak_ini is defined or teamspeak.ini_file is none and teamspeak_ini.disable is false + when: teamspeak_ini_enabled -- name: 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 - -# Perform the "Reload systemd" (and possibly queued clean-up) handler now. -# Before we start using the new/changed .service file. +# 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 - -- name: Enable and start TeamSpeak 3 server +# Make sure TeamSpeak 3 Server is started and enabled +- name: Enable and start TeamSpeak 3 Server service: name: teamspeak3-server state: started diff --git a/templates/teamspeak3-server.service.j2 b/templates/teamspeak3-server.service.j2 index 03a8be3..485084e 100644 --- a/templates/teamspeak3-server.service.j2 +++ b/templates/teamspeak3-server.service.j2 @@ -7,8 +7,8 @@ Type=simple User={{ teamspeak.user }} Group={{ teamspeak.user }} WorkingDirectory={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64 -{% if teamspeak.ini_file is not none %} -ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/ts3server_minimal_runscript.sh inifile={{ teamspeak.ini_file }} +{% if teamspeak_ini_enabled %} +ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/ts3server_minimal_runscript.sh inifile={{ teamspeak_ini_filename }} {% else %} ExecStart={{ teamspeak.home }}/{{ teamspeak.symlink }}/teamspeak3-server_linux_amd64/ts3server_minimal_runscript.sh {% endif %} diff --git a/templates/ts3server.ini.j2 b/templates/ts3server.ini.j2 index ee6d6f3..6c3f341 100644 --- a/templates/ts3server.ini.j2 +++ b/templates/ts3server.ini.j2 @@ -1,17 +1,15 @@ -machine_id={{ teamspeak_ini.machine_id }} +{% if teamspeak_machine_id is not none %} +machine_id={{ teamspeak_machine_id }} +{% endif %} -default_voice_port={{teamspeak_ini.voice.default_port}} -voice_ip={{teamspeak_ini.voice.ip}} +default_voice_port={{ teamspeak_network.voice.default_port }} +voice_ip={{ teamspeak_network.voice.ip }} +filetransfer_port={{ teamspeak_network.filetransfer.port }} +filetransfer_ip={{ teamspeak_network.filetransfer.ip }} +query_port={{ teamspeak_network.query.port }} +query_ip={{ teamspeak_network.query.ip }} -query_port={{teamspeak_ini.query.port}} -query_ip={{teamspeak_ini.query.ip}} +{% if teamspeak_create_default_virtualserver %} +create_default_virtualserver=1 +{% endif %} -filetransfer_port={{teamspeak_ini.filetransfer.port}} -filetransfer_ip={{teamspeak_ini.filetransfer.ip}} - -dbplugin={{ teamspeak_ini.db_plugin }} -dbpluginparameter={{ 'ts3db_mysql.ini' if teamspeak_ini.db_plugin == 'ts3db_mysql' else '' }} -dbsqlpath=sql/ -dbsqlcreatepath={{ 'create_mysql/' if teamspeak_ini.db_plugin == 'ts3db_mysql' else 'create_sqlite/' }} -logpath={{ teamspeak_ini.logpath }} -logquerycommands={{ teamspeak_ini.logquerycommands }} |