aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Joosten <stefan@sjoosten.nl>2016-08-23 20:34:32 +0200
committerStefan Joosten <stefan@sjoosten.nl>2016-08-23 20:34:32 +0200
commitcf50f8c7d35497509d592dd309906503c8d994e5 (patch)
tree1080a8fc28755db9c099e1dd8cdafb3e4c5f5b93
parent4088a3ec70d18f7174723609af79587cf65a0ed7 (diff)
downloadansible-teamspeak-cf50f8c7d35497509d592dd309906503c8d994e5.tar.gz
ansible-teamspeak-cf50f8c7d35497509d592dd309906503c8d994e5.tar.xz
ansible-teamspeak-cf50f8c7d35497509d592dd309906503c8d994e5.zip
Fix issue #1.
Rewrote parts of Egbert Verhage's patches. Thank you again for the work. This work adds the possibility to generate a INI-style configuration file for the TeamSpeak 3 Server. The scope is limited to creating and use of the INI config file, and ability to configure network settings, the machine ID and default creation of the first virtual server. More features can follow soon after.
-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 }}