diff --git a/group_vars/gaming/vars.yml b/group_vars/gaming/vars.yml new file mode 100644 index 0000000..a0cc59c --- /dev/null +++ b/group_vars/gaming/vars.yml @@ -0,0 +1,5 @@ +# vim: ft=yaml.ansible +# code: language=ansible +--- +base_domain: gaming.sapti.me +internal_subnet: 10.0.24.0/24 diff --git a/group_vars/mcservers/vars.yml b/group_vars/mcservers/vars.yml new file mode 100644 index 0000000..7539513 --- /dev/null +++ b/group_vars/mcservers/vars.yml @@ -0,0 +1,6 @@ +# vim: ft=yaml.ansible +# code: language=ansible +--- +apps_include: + - minecraft + - watchtower diff --git a/host_vars/sapt-labg-mc01.yml b/host_vars/sapt-labg-mc01.yml new file mode 100644 index 0000000..3a6a829 --- /dev/null +++ b/host_vars/sapt-labg-mc01.yml @@ -0,0 +1,7 @@ +# vim: ft=yaml.ansible +# code: language=ansible +--- +fqdn: sapt-labg-mc01.game.servers.sapti.me +ansible_host: 192.168.24.30 +internal_ipv4: 10.0.24.10 +instance_type: qemu diff --git a/inventory.ini b/inventory.ini index 5b7fce5..47fe402 100644 --- a/inventory.ini +++ b/inventory.ini @@ -55,6 +55,12 @@ app_stage db_stage mda_stage +[mc_game] +sapt-labg-mc01 + +[gaming:children] +mc_game + [publicservers:children] pub_cloud @@ -79,10 +85,14 @@ mda_stage db_prod db_stage +[mcservers:children] +mc_game + [home:children] shared production staging +gaming [virtualservers:children] cloud diff --git a/roles/apps/defaults/main.yml b/roles/apps/defaults/main.yml index 96d7d38..a1922a0 100644 --- a/roles/apps/defaults/main.yml +++ b/roles/apps/defaults/main.yml @@ -56,6 +56,15 @@ apps_vars: port: 22300 version: 2.14.2-beta + minecraft: + backup: false + sender: false + extra_tasks: true + domain: mc01.{{ apps_base_domain }} + port: 25565 + geyser_port: 19132 + version: latest + monerod: backup: false sender: false diff --git a/roles/apps/tasks/extra_tasks/minecraft.yml b/roles/apps/tasks/extra_tasks/minecraft.yml new file mode 100644 index 0000000..fc2c65a --- /dev/null +++ b/roles/apps/tasks/extra_tasks/minecraft.yml @@ -0,0 +1,10 @@ +# vim: ft=yaml.ansible +# code: language=ansible +--- +- name: Create subdirectory for Minecraft server data + ansible.builtin.file: + path: "{{ apps_data_root }}/minecraft/data/server" + owner: '1000' + group: '1000' + mode: u=rwx,g=rx,o=rx + state: directory diff --git a/roles/apps/templates/compose-files/minecraft.yml.j2 b/roles/apps/templates/compose-files/minecraft.yml.j2 new file mode 100644 index 0000000..371623b --- /dev/null +++ b/roles/apps/templates/compose-files/minecraft.yml.j2 @@ -0,0 +1,18 @@ +{# code: language=ansible-jinja #} +# THIS FILE IS MANAGED BY ANSIBLE + +services: + server: + image: itzg/minecraft-server:{{ apps_vars.minecraft.version }} + restart: always + environment: + EULA: true + TYPE: PAPER + PLUGINS: | + https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot + https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot + ports: + - {{ apps_vars.minecraft.port }}:{{ apps_vars.minecraft.port }}/tcp + - {{ apps_vars.minecraft.geyser_port }}:{{ apps_vars.minecraft.geyser_port }}/udp + volumes: + - "./data/server:/data:rw" diff --git a/site.yml b/site.yml index 8a62f08..38f1559 100644 --- a/site.yml +++ b/site.yml @@ -16,13 +16,15 @@ name: docker when: hostname in groups['appservers'] or hostname in groups['proxyservers'] or - hostname in groups['publicservers'] + hostname in groups['publicservers'] or + hostname in groups['mcservers'] - name: Include role 'apps' ansible.builtin.include_role: name: apps when: hostname in groups['appservers'] or - hostname in groups['publicservers'] + hostname in groups['publicservers'] or + hostname in groups['mcservers'] - name: Include role 'postgresql' ansible.builtin.include_role: