92 lines
2.8 KiB
YAML
92 lines
2.8 KiB
YAML
---
|
|
- name: create zomboid host directory volumes
|
|
become: true
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ podman_subuid.stdout }}"
|
|
group: "{{ podman_user }}"
|
|
mode: 0755
|
|
notify: restorecon podman
|
|
loop:
|
|
- "{{ zomboid_path }}/server"
|
|
- "{{ zomboid_path }}/data"
|
|
- "{{ zomboid_path }}/scripts"
|
|
|
|
- name: copy zomboid entrypoint script
|
|
become: true
|
|
ansible.builtin.template:
|
|
src: zomboid/entrypoint.sh.j2
|
|
dest: "{{ zomboid_path }}/scripts/entrypoint.sh"
|
|
owner: "{{ podman_subuid.stdout }}"
|
|
group: "{{ podman_user }}"
|
|
mode: 0755
|
|
notify: restorecon podman
|
|
|
|
- name: flush handlers
|
|
ansible.builtin.meta: flush_handlers
|
|
|
|
- import_tasks: podman/podman-check.yml
|
|
vars:
|
|
container_name: zomboid
|
|
container_image: "{{ image }}"
|
|
|
|
- name: create zomboid container
|
|
become: true
|
|
become_user: "{{ podman_user }}"
|
|
containers.podman.podman_container:
|
|
name: zomboid
|
|
image: "{{ image }}"
|
|
restart_policy: on-failure:3
|
|
log_driver: journald
|
|
env:
|
|
SERVER_NAME: zomboid
|
|
MIN_RAM: 8g
|
|
MAX_RAM: 24g
|
|
AUTO_UPDATE: "true"
|
|
ADMIN_PASSWORD: "{{ zomboid_admin_password }}"
|
|
SERVER_PASSWORD: "{{ zomboid_password }}"
|
|
volumes:
|
|
- "{{ zomboid_path }}/server:/home/steam/pzserver"
|
|
- "{{ zomboid_path }}/data:/home/steam/Zomboid"
|
|
- "{{ zomboid_path }}/scripts/entrypoint.sh:/entrypoint.sh:ro"
|
|
ports:
|
|
- "16261:16261/udp"
|
|
- "16262:16262/udp"
|
|
command: /bin/bash /entrypoint.sh
|
|
|
|
- name: create systemd startup job for zomboid
|
|
include_tasks: podman/systemd-generate.yml
|
|
vars:
|
|
container_name: zomboid
|
|
|
|
# Ensure zomboid restarts on any exit (including admin-triggered restarts)
|
|
- name: configure zomboid systemd to always restart
|
|
become: true
|
|
become_user: "{{ podman_user }}"
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ podman_home }}/.config/systemd/user/zomboid.service"
|
|
regexp: "^Restart="
|
|
line: "Restart=always"
|
|
notify: reload zomboid systemd
|
|
|
|
# Backup settings (requires server to have run once to generate ini)
|
|
- name: configure zomboid backup settings
|
|
become: true
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ zomboid_path }}/data/Server/zomboid.ini"
|
|
regexp: "^{{ item.key }}="
|
|
line: "{{ item.key }}={{ item.value }}"
|
|
loop:
|
|
- { key: "SaveWorldEveryMinutes", value: "10" }
|
|
- { key: "BackupsPeriod", value: "30" }
|
|
- { key: "BackupsCount", value: "10" }
|
|
tags: zomboid-conf
|
|
|
|
# World reset tasks REMOVED - too dangerous to have in automation
|
|
# To reset the world manually:
|
|
# 1. Stop the server: systemctl --user stop zomboid.service
|
|
# 2. Delete saves: rm -rf /home/podman/.local/share/volumes/zomboid/data/Saves
|
|
# 3. Delete db: rm -rf /home/podman/.local/share/volumes/zomboid/data/db
|
|
# 4. Start the server: systemctl --user start zomboid.service
|