roles/7dtd/tasks/main.yml: add lgsm dir + template tasks + bind mount for config-lgsm - deploys config each run
This commit is contained in:
@@ -41,6 +41,25 @@
|
|||||||
group: '1000'
|
group: '1000'
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
|
|
||||||
|
# LinuxGSM reads config-lgsm/sdtdserver/sdtdserver.cfg on EVERY invocation (start/monitor/stop).
|
||||||
|
# Bind-mounting it makes the role the owner of that config (see vars.yml sdtd_lgsm_querymode);
|
||||||
|
# a previously unmanaged podman volume left defaults in place, causing the monitor crash-loop.
|
||||||
|
- name: Create 7 Days to Die LGSM config directory (container user)
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /opt/apps/7dtd/lgsm
|
||||||
|
state: directory
|
||||||
|
owner: '1000'
|
||||||
|
group: '1000'
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Template 7 Days to Die LGSM config from vars.yml
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: sdtdserver.cfg.j2
|
||||||
|
dest: /opt/apps/7dtd/lgsm/sdtdserver.cfg
|
||||||
|
owner: '1000'
|
||||||
|
group: '1000'
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
- name: Deploy 7 Days to Die Server
|
- name: Deploy 7 Days to Die Server
|
||||||
containers.podman.podman_container:
|
containers.podman.podman_container:
|
||||||
image: "{{ sdtd_image }}"
|
image: "{{ sdtd_image }}"
|
||||||
@@ -52,6 +71,7 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- /opt/apps/7dtd/data:/home/sdtdserver/.local/share/7DaysToDie:z
|
- /opt/apps/7dtd/data:/home/sdtdserver/.local/share/7DaysToDie:z
|
||||||
- /opt/apps/7dtd/serverfiles:/home/sdtdserver/serverfiles:z
|
- /opt/apps/7dtd/serverfiles:/home/sdtdserver/serverfiles:z
|
||||||
|
- /opt/apps/7dtd/lgsm:/home/sdtdserver/lgsm/config-lgsm/sdtdserver:z
|
||||||
ports:
|
ports:
|
||||||
# Required: game port (TCP+UDP), Steam query/beacon ports (UDP)
|
# Required: game port (TCP+UDP), Steam query/beacon ports (UDP)
|
||||||
- "26900:26900/tcp"
|
- "26900:26900/tcp"
|
||||||
|
|||||||
14
roles/7dtd/templates/sdtdserver.cfg.j2
Normal file
14
roles/7dtd/templates/sdtdserver.cfg.j2
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
##################################
|
||||||
|
####### Instance Settings ########
|
||||||
|
##################################
|
||||||
|
# Managed by Ansible (roles/7dtd/templates/sdtdserver.cfg.j2) - local edits are overwritten on re-run.
|
||||||
|
# Source of truth: sdtd_* variables in vars.yml.
|
||||||
|
|
||||||
|
## 7dtd answers NO A2S query on the game port (ServerVisibility=0 + SteamNetworking disabled),
|
||||||
|
## so the default gamedig-based monitor (querymode=2) always fails and force-restarts the healthy
|
||||||
|
## server every ~5 min. querymode=1 checks the tmux session instead.
|
||||||
|
querymode="{{ sdtd_lgsm_querymode }}"
|
||||||
|
|
||||||
|
## LGSM graceful stop reads ${telnetpassword} from this cfg (the game XML TelnetPassword is parsed
|
||||||
|
## into ${telnetpass}, a different var). Without it, stop falls back to a hard tmux kill.
|
||||||
|
telnetpassword="{{ sdtd_telnet_password }}"
|
||||||
8
vars.yml
8
vars.yml
@@ -149,6 +149,14 @@ sdtd_pgid: 1000
|
|||||||
sdtd_timezone: America/Denver
|
sdtd_timezone: America/Denver
|
||||||
sdtd_backup: "NO"
|
sdtd_backup: "NO"
|
||||||
sdtd_monitor: "YES"
|
sdtd_monitor: "YES"
|
||||||
|
## LinuxGSM config overrides (roles/7dtd/templates/sdtdserver.cfg.j2):
|
||||||
|
## - querymode=1: this server answers NO A2S query on 26900 (ServerVisibility=0 + SteamNetworking
|
||||||
|
## disabled), so the default gamedig-based monitor (querymode=2) always fails its query and
|
||||||
|
## force-restarts the HEALTHY server every ~5 min. Session-only check avoids that loop.
|
||||||
|
## - telnetpassword mirrors sdtd_telnet_password because LGSM's graceful stop reads
|
||||||
|
## ${telnetpassword} from its OWN cfg; the XML value is parsed into ${telnetpass} (different
|
||||||
|
## var) so without this the stop falls back to a hard tmux kill. Keep in sync below.
|
||||||
|
sdtd_lgsm_querymode: "1"
|
||||||
## CHANGE THESE before first deploy — the server is public and both passwords gate real access:
|
## CHANGE THESE before first deploy — the server is public and both passwords gate real access:
|
||||||
## sdtd_server_password is the join password players must enter; if it is empty the server has NO
|
## sdtd_server_password is the join password players must enter; if it is empty the server has NO
|
||||||
## join password. sdtd_telnet_password guards the 8081/tcp admin console; if empty telnet only
|
## join password. sdtd_telnet_password guards the 8081/tcp admin console; if empty telnet only
|
||||||
|
|||||||
Reference in New Issue
Block a user