#!/usr/bin/env ansible-playbook # vim:ft=ansible: --- - name: assure tmodloader {{ tmodloader_name }} directory structure ansible.builtin.file: state: directory owner: "{{ tmodloader_uid }}" group: "{{ tmodloader_gid }}" mode: "0750" path: "{{ item }}" # We recurse here since these directories and all of their contents # should be read-write by the container without exception. recurse: yes with_items: - "{{ tmodloader_data_prefix }}/backups" - "{{ tmodloader_data_prefix }}/data" - "{{ tmodloader_data_prefix }}/data/ModLoader" - "{{ tmodloader_data_prefix }}/data/ModLoader/Mods" - "{{ tmodloader_data_prefix }}/data/ModLoader/Worlds" - "{{ tmodloader_data_prefix }}/logs" - name: assure mods ansible.builtin.shell: cmd: "curl -L \"{{ tmodloader_mod_server }}\" -o \"{{ item }}.tmod\" && chown \"{{ tmodloader_uid }}:{{ tmodloader_gid }}\" \"{{ item }}.tmod\"" chdir: "{{ tmodloader_data_prefix }}/data/ModLoader/Mods" creates: "{{ tmodloader_data_prefix }}/data/ModLoader/Mods/{{ item }}.tmod" with_list: "{{ tmodloader_mods }}" when: tmodloader_mods notify: "restart tmodloader {{ tmodloader_name }}" - name: enable mods ansible.builtin.template: src: enabled.json dest: "{{ tmodloader_data_prefix }}/data/ModLoader/Mods/enabled.json" owner: "{{ tmodloader_uid }}" group: "{{ tmodloader_gid }}" mode: "0750" when: tmodloader_mods notify: "restart tmodloader {{ tmodloader_name }}" - name: assure tmodloader {{ tmodloader_name }} files ansible.builtin.file: state: touch owner: "{{ tmodloader_uid }}" group: "{{ tmodloader_gid }}" mode: "0750" path: "{{ item }}" with_items: - "{{ tmodloader_data_prefix }}/config.txt" - name: assure {{ tmodloader_name }} configs ansible.builtin.lineinfile: state: present regexp: "^{{ item.key }}" line: "{{ item.key }}={{ item.value }}" path: "{{ tmodloader_data_prefix }}/config.txt" with_dict: "{{ tmodloader_config | combine(tmodloader_config_extra) | combine(tmodloader_config_internal) }}" notify: "restart tmodloader {{ tmodloader_name }}" - name: assure {{ tmodloader_name }} backup cronjob ansible.builtin.cron: user: root name: "terraria-{{ tmodloader_name }}" minute: "*/30" job: "tar czvf \"{{ tmodloader_data_prefix }}/backups/world-$(date +%Y-%m-%d-%H%M).tgz\" \"{{ tmodloader_data_prefix }}/data/ModLoader/Worlds\" \"{{ tmodloader_data_prefix }}/data/tModLoader/Worlds\"" - name: assure tmodloader {{ tmodloader_name }} container docker_container: name: "tmodloader-{{ tmodloader_name }}" state: started image: "{{ tmodloader_image }}" restart_policy: "{{ tmodloader_restart_policy }}" pull: yes user: "{{ tmodloader_uid }}:{{ tmodloader_gid }}" env: TZ: "{{ tmodloader_timezone }}" ports: - "{{ tmodloader_external_port }}:7777" volumes: - "{{ tmodloader_data_prefix }}/data:/terraria" - "{{ tmodloader_data_prefix }}/config.txt:/terraria/config.txt" - "{{ tmodloader_data_prefix }}/logs:/terraria-server/tModLoader-Logs"