#!/usr/bin/ansible-playbook # vim:ft=ansible: --- - name: set up system block: - name: install required packages apt: name="{{ minecraft_packages + minecraft_packages_extra }}" - name: assure server user user: name=minecraft system=yes home={{ minecraft_home }} - name: assure operational directory file: path={{ minecraft_home }} state=directory owner=minecraft group=minecraft mode="3775" - name: assure systemd unit template: src=minecraft@.service dest=/etc/systemd/system/minecraft@.service notify: "restart minecraft {{ minecraft_name }}" - name: set up minecraft block: - name: assure server directory file: path={{ minecraft_home }}/{{ minecraft_name }} state=directory - name: accept eula template: src=eula.txt dest={{ minecraft_home }}/{{ minecraft_name }}/eula.txt - name: configure server properties lineinfile: dest: "{{ minecraft_home }}/{{ minecraft_name }}/server.properties" line: "{{ item.opt }}={{ item.value }}" regex: "^{{ item.opt }}=.*" create: yes loop: "{{ minecraft_server_properties }}" notify: "restart minecraft {{ minecraft_name }}" become: yes become_user: minecraft - name: set up paper block: - name: download paper get_url: url={{ minecraft_paper_downloadurl }} dest={{ minecraft_home }}/{{ minecraft_name }}/server.jar notify: "restart minecraft {{ minecraft_name }}" # TODO: Manage configs for plugins, auto-install plugins become: yes become_user: minecraft when: minecraft_fabric_install - name: set up forge block: - name: template out modpack installer template: src=install-modpack.sh dest={{ minecraft_home }}/{{ minecraft_name }}/install-modpack.sh mode="0755" - name: download forge get_url: dest={{ minecraft_home }}/{{ minecraft_name }}/installer.jar url={{ minecraft_forge_downloadurl }} register: download_forge - name: install forge command: chdir: "{{ minecraft_home }}/{{ minecraft_name }}" argv: [ "/usr/bin/java", "-jar", "./installer.jar", "--installServer" ] notify: restart minecraft {{ minecraft_name }} when: download_forge is changed - name: link to forge jar file: path={{ minecraft_home }}/{{ minecraft_name }}/server.jar src=forge-{{ minecraft_version }}-{{ minecraft_forge_version }}.jar state=link - name: install modpack block: - name: download modpack get_url: dest={{ minecraft_home }}/{{ minecraft_name }}/modpack.zip url={{ minecraft_forge_packurl }} register: download_modpack - name: install modpack block: - name: assure modpack unzip directory file: path={{ minecraft_home }}/{{ minecraft_name }}/modpack state=directory - name: unpack zip unarchive: src={{ minecraft_home }}/{{ minecraft_name }}/modpack.zip dest={{ minecraft_home }}/{{ minecraft_name }}/modpack remote_src=yes - name: run installer command: chdir: "{{ minecraft_home }}/{{ minecraft_name }}" argv: [ "bash", "./install-modpack.sh" ] notify: "restart minecraft {{ minecraft_name }}" when: download_modpack is changed when: minecraft_forge_packurl is defined - name: install mods get_url: dest="{{ minecraft_home }}/{{ minecraft_name }}/mods" url={{ item }} loop: "{{ minecraft_forge_mods }}" notify: restart minecraft {{ minecraft_name }} when: minecraft_forge_mods is iterable and minecraft_forge_mods != None become: yes become_user: minecraft when: minecraft_forge_install and minecraft_forge_version is defined - name: enable service systemd: name=minecraft@{{ minecraft_name }}.service enabled=yes state=started