aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaditya Dhruv <[email protected]>2025-04-22 17:24:00 -0500
committerAaditya Dhruv <[email protected]>2025-05-01 20:19:54 -0500
commitf56f6930c36149b5d6fe61906b38aa5c6207d646 (patch)
treed926343166861d872e59fd183dde0dd4c79a2de1
parent0772702b1085e1d6ecc456d331381d932cd93a10 (diff)
Add PaperMC role
-rw-r--r--roles/papermc/defaults/main.yaml7
-rw-r--r--roles/papermc/files/papermc/Chart.yaml6
-rw-r--r--roles/papermc/files/papermc/Dockerfile14
-rw-r--r--roles/papermc/files/papermc/templates/papermc.yaml84
-rw-r--r--roles/papermc/tasks/main.yaml34
5 files changed, 145 insertions, 0 deletions
diff --git a/roles/papermc/defaults/main.yaml b/roles/papermc/defaults/main.yaml
new file mode 100644
index 0000000..f15e30d
--- /dev/null
+++ b/roles/papermc/defaults/main.yaml
@@ -0,0 +1,7 @@
+papermc:
+ port: 25565
+ image: aadityadhruv/papermc
+ version: 1.19.4
+nfs:
+ server: 192.168.20.5
+ path: "/mnt/nfs/k3s/papermc"
diff --git a/roles/papermc/files/papermc/Chart.yaml b/roles/papermc/files/papermc/Chart.yaml
new file mode 100644
index 0000000..13337e9
--- /dev/null
+++ b/roles/papermc/files/papermc/Chart.yaml
@@ -0,0 +1,6 @@
+apiVersion: v2
+name: papermc
+description: PaperMC Minecraft Server
+type: application
+
+version: 0.1.0
diff --git a/roles/papermc/files/papermc/Dockerfile b/roles/papermc/files/papermc/Dockerfile
new file mode 100644
index 0000000..f95a87c
--- /dev/null
+++ b/roles/papermc/files/papermc/Dockerfile
@@ -0,0 +1,14 @@
+FROM docker.io/openjdk:21-bookworm
+RUN git clone https://github.com/PaperMC/Paper-archive.git /Paper
+RUN git config --global user.email "[email protected]"
+RUN git config --global user.name "Your Name"
+WORKDIR /Paper
+ARG VERSION
+RUN echo "Building version: $VERSION"
+RUN git checkout ver/$VERSION
+RUN ./gradlew applyPatches
+RUN ./gradlew createReobfBundlerJar
+RUN mkdir /data
+RUN mv /Paper/build/libs/* /server.jar
+WORKDIR /data
+CMD java -Xmx4097M -Xms4096M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar /server.jar --nogui
diff --git a/roles/papermc/files/papermc/templates/papermc.yaml b/roles/papermc/files/papermc/templates/papermc.yaml
new file mode 100644
index 0000000..d9d9c76
--- /dev/null
+++ b/roles/papermc/files/papermc/templates/papermc.yaml
@@ -0,0 +1,84 @@
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: "{{ .Chart.Name }}-pv"
+ labels:
+ app: "{{ .Chart.Name }}-pv"
+spec:
+ storageClassName: nfs
+ capacity:
+ storage: 4Gi
+ accessModes:
+ - ReadWriteMany
+ nfs:
+ server: {{ .Values.nfs.server }}
+ path: {{ .Values.nfs.path }}
+ readOnly: false
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ .Chart.Name }}-pvc
+spec:
+ storageClassName: nfs
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 4Gi
+ selector:
+ matchLabels:
+ app: "{{ .Chart.Name }}-pv"
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: "{{ .Chart.Name }}-deployment"
+ labels:
+ app: {{ .Chart.Name }}
+spec:
+ replicas: {{ .Values.replicas }}
+ selector:
+ matchLabels:
+ app: {{ .Chart.Name }}
+ template:
+ metadata:
+ labels:
+ app: {{ .Chart.Name }}
+ spec:
+ containers:
+ - name: papermc
+ image: "{{ .Values.image }}:{{ .Values.version }}"
+ volumeMounts:
+ - mountPath: "/data"
+ subPath: "data"
+ name: "{{ .Chart.Name }}-volume"
+ volumes:
+ - name: "{{ .Chart.Name }}-volume"
+ persistentVolumeClaim:
+ claimName: "{{ .Chart.Name }}-pvc"
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Chart.Name }}-service
+spec:
+ type: ClusterIP
+ selector:
+ app: {{ .Chart.Name }}
+ ports:
+ - protocol: TCP
+ targetPort: {{ .Values.port }}
+ port: 80
+ name: papermc
+# - protocol: TCP
+# nodePort: {{ .Values.nodePort2 }}
+# targetPort: {{ .Values.port2 }}
+# port: {{ .Values.serverPort2 }}
+# name: geyser
+# - protocol: UDP
+# nodePort: {{ .Values.nodePort2 }}
+# targetPort: {{ .Values.port2 }}
+# port: {{ .Values.serverPort2 }}
+# name: geyser-udp
diff --git a/roles/papermc/tasks/main.yaml b/roles/papermc/tasks/main.yaml
new file mode 100644
index 0000000..6455b4a
--- /dev/null
+++ b/roles/papermc/tasks/main.yaml
@@ -0,0 +1,34 @@
+- name: Build PaperMC image
+ containers.podman.podman_image:
+ name: "docker.io/aadityadhruv/papermc:{{ papermc.version }}"
+ path: "{{ lookup('env', 'PWD') }}/roles/papermc/files/papermc"
+ build:
+ extra_args: "--build-arg VERSION={{ papermc.version }}"
+ delegate_to: localhost
+ run_once: true
+
+- name: Push PaperMC image
+ containers.podman.podman_image:
+ name: "docker.io/aadityadhruv/papermc:{{ papermc.version }}"
+ push: true
+ push_args:
+ dest: "docker.io/aadityadhruv/papermc:{{ papermc.version }}"
+ delegate_to: localhost
+ run_once: true
+ ignore_errors: true
+
+- name: Deploy PaperMC
+ kubernetes.core.helm:
+ name: papermc
+ chart_ref: "{{ lookup('env', 'PWD') }}/roles/papermc/files/papermc"
+ namespace: default
+ state: "{%- if papermc.enabled -%} present {%- else -%} absent {%- endif -%}"
+ values:
+ port: "{{ papermc.port }}"
+ image: "{{ papermc.image }}"
+ version: "{{ papermc.version }}"
+ nfs:
+ server: "{{ nfs.server }}"
+ path: "{{ nfs.path }}"
+ delegate_to: localhost
+ run_once: true