diff options
author | Aaditya Dhruv <[email protected]> | 2025-04-22 17:24:00 -0500 |
---|---|---|
committer | Aaditya Dhruv <[email protected]> | 2025-05-01 20:19:54 -0500 |
commit | f56f6930c36149b5d6fe61906b38aa5c6207d646 (patch) | |
tree | d926343166861d872e59fd183dde0dd4c79a2de1 | |
parent | 0772702b1085e1d6ecc456d331381d932cd93a10 (diff) |
Add PaperMC role
-rw-r--r-- | roles/papermc/defaults/main.yaml | 7 | ||||
-rw-r--r-- | roles/papermc/files/papermc/Chart.yaml | 6 | ||||
-rw-r--r-- | roles/papermc/files/papermc/Dockerfile | 14 | ||||
-rw-r--r-- | roles/papermc/files/papermc/templates/papermc.yaml | 84 | ||||
-rw-r--r-- | roles/papermc/tasks/main.yaml | 34 |
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 |