--- - 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