aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md67
-rw-r--r--defaults/main.yml21
-rw-r--r--tasks/config.yml20
-rw-r--r--tasks/install.yml69
-rw-r--r--tasks/main.yml78
-rw-r--r--templates/teamspeak3-server.service.j24
-rw-r--r--templates/ts3server.ini.j226
7 files changed, 144 insertions, 141 deletions
diff --git a/README.md b/README.md
index 6ed9088..234d294 100644
--- a/README.md
+++ b/README.md
@@ -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 }}