From 8a49477449be02d0d0aaca06608b709968dfa481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Limpinho?= <53994778+TomasLimpinho@users.noreply.github.com> Date: Thu, 5 Mar 2026 12:15:42 +0000 Subject: [PATCH] minecraft added --- README.md | 2 +- playbook.yml | 3 +- .../files/mangareader-deployment.yaml | 2 + .../minecraft/files/minecraft-deployment.yaml | 42 +++++++++++++++ .../minecraft/files/minecraft-namespace.yaml | 4 ++ roles/minecraft/files/minecraft-nfs-csi.yaml | 11 ++++ roles/minecraft/files/minecraft-pvcs.yaml | 29 +++++++++++ roles/minecraft/files/minecraft-service.yaml | 12 +++++ roles/minecraft/tasks/main.yml | 52 +++++++++++++++++++ roles/minecraft/vars/main.yml | 4 ++ 10 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 roles/minecraft/files/minecraft-deployment.yaml create mode 100644 roles/minecraft/files/minecraft-namespace.yaml create mode 100644 roles/minecraft/files/minecraft-nfs-csi.yaml create mode 100644 roles/minecraft/files/minecraft-pvcs.yaml create mode 100644 roles/minecraft/files/minecraft-service.yaml create mode 100644 roles/minecraft/tasks/main.yml create mode 100644 roles/minecraft/vars/main.yml diff --git a/README.md b/README.md index dd007e3..893a13c 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,6 @@ flaresolverr comes from https://github.com/FlareSolverr/FlareSolverr jellyseer comes from https://hub.docker.com/r/fallenbagel/jellyseerr and https://docs.seerr.dev/extending-jellyseerr/database-config decluttarr comes from https://github.com/ManiMatter/decluttarr - +minecraft comes from https://www.civo.com/learn/deploying-minecraft-server-kubernetes ![logo](fenix-iac.png) \ No newline at end of file diff --git a/playbook.yml b/playbook.yml index de13b9c..8ba3c96 100644 --- a/playbook.yml +++ b/playbook.yml @@ -41,4 +41,5 @@ - lazylibrarian - mangareader - bookshelf - - shelfarr \ No newline at end of file + - shelfarr + - minecraft \ No newline at end of file diff --git a/roles/mangareader/files/mangareader-deployment.yaml b/roles/mangareader/files/mangareader-deployment.yaml index 50f4b7a..acb602e 100644 --- a/roles/mangareader/files/mangareader-deployment.yaml +++ b/roles/mangareader/files/mangareader-deployment.yaml @@ -13,6 +13,8 @@ spec: labels: app: mangareader spec: + securityContext: + fsGroup: 1013 imagePullSecrets: - name: regcred containers: diff --git a/roles/minecraft/files/minecraft-deployment.yaml b/roles/minecraft/files/minecraft-deployment.yaml new file mode 100644 index 0000000..d2f08ae --- /dev/null +++ b/roles/minecraft/files/minecraft-deployment.yaml @@ -0,0 +1,42 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: minecraft + namespace: minecraft +spec: + replicas: 1 + selector: + matchLabels: + app: minecraft + template: + metadata: + labels: + app: minecraft + spec: + securityContext: + fsGroup: 1013 + imagePullSecrets: + - name: regcred + containers: + - name: minecraft + image: itzg/minecraft-bedrock-server + resources: + requests: + cpu: 500m + memory: 5Gi + ports: + - containerPort: 19132 + name: UDP + env: + - name: EULA + value: "TRUE" + volumeMounts: + - name: data + mountPath: /data + volumes: + - name: data + persistentVolumeClaim: + claimName: minecraft-data-pvc + + + diff --git a/roles/minecraft/files/minecraft-namespace.yaml b/roles/minecraft/files/minecraft-namespace.yaml new file mode 100644 index 0000000..4ad4f70 --- /dev/null +++ b/roles/minecraft/files/minecraft-namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: minecraft diff --git a/roles/minecraft/files/minecraft-nfs-csi.yaml b/roles/minecraft/files/minecraft-nfs-csi.yaml new file mode 100644 index 0000000..cf63685 --- /dev/null +++ b/roles/minecraft/files/minecraft-nfs-csi.yaml @@ -0,0 +1,11 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: minecraft-nfs-csi + namespace: minecraft +provisioner: nfs.csi.k8s.io +parameters: + server: 192.168.1.22 + share: /mnt/fenix-main-nas-pool-0/data/Minecraft/TI0 +allowVolumeExpansion: true +reclaimPolicy: Retain \ No newline at end of file diff --git a/roles/minecraft/files/minecraft-pvcs.yaml b/roles/minecraft/files/minecraft-pvcs.yaml new file mode 100644 index 0000000..c86ec25 --- /dev/null +++ b/roles/minecraft/files/minecraft-pvcs.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: minecraft-config-pv + namespace: minecraft +spec: + capacity: + storage: 30Gi + storageClassName: minecraft-nfs-csi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: 192.168.1.22 + path: /mnt/fenix-main-nas-pool-0/data/Minecraft/TI0 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: minecraft-config-pvc + namespace: minecraft +spec: + storageClassName: minecraft-nfs-csi + accessModes: + - ReadWriteOnce + volumeName: minecraft-config-pv + resources: + requests: + storage: 30Gi \ No newline at end of file diff --git a/roles/minecraft/files/minecraft-service.yaml b/roles/minecraft/files/minecraft-service.yaml new file mode 100644 index 0000000..27b9e9b --- /dev/null +++ b/roles/minecraft/files/minecraft-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: minecraft-service + namespace: stack-arr +spec: + ports: + - port: 19132 + protocol: UDP + selector: + app: minecraft + type: ClusterIP \ No newline at end of file diff --git a/roles/minecraft/tasks/main.yml b/roles/minecraft/tasks/main.yml new file mode 100644 index 0000000..d8e87a7 --- /dev/null +++ b/roles/minecraft/tasks/main.yml @@ -0,0 +1,52 @@ +- name: Remover o diretório /tmp/stack-arr/minecraft/kubernetes-files + ansible.builtin.file: + path: /tmp/stack-arr/minecraft/kubernetes-files + state: absent + +- name: Criar diretório temporário no remoto + file: + path: /tmp/stack-arr/minecraft/kubernetes-files + state: directory + mode: '0755' + +- name: Copy file with owner and permissions + ansible.builtin.copy: + src: ../files + dest: /tmp/stack-arr/minecraft/kubernetes-files + owner: fenix + group: root + mode: '0644' + + +#- name: Obter várias notas do Bitwarden +# shell: | +# echo "unlock" +# BW_SESSION=$(bw unlock {{ bw_password }} --raw) +# echo "get item" +# bw get item "{{ item.id }}" --session $BW_SESSION | jq -r '.notes' > {{ item.dest }} +# loop: +# - { id: "iac.ansible.stackarr.minecraft.secret", dest: "/tmp/stack-arr/minecraft/kubernetes-files/files/minecraft-secret.yaml" } +# args: +# executable: /bin/bash +# environment: +# BW_PASSWORD: "{{ BW_PASSWORD }}" + + +- name: Listar conteúdo do diretório remoto + shell: ls -l /tmp/stack-arr/minecraft/kubernetes-files/files + register: resultado_ls + + +- name: Mostrar resultado do ls + debug: + var: resultado_ls.stdout_lines + + +- name: Aplicar o stolon + become: yes + become_user: fenix + shell: | + kubectl apply -f /tmp/stack-arr/minecraft/kubernetes-files/files/minecraft-namespace.yaml + kubectl apply -f /tmp/stack-arr/minecraft/kubernetes-files/files/ + environment: + KUBECONFIG: /home/fenix/.kube/config \ No newline at end of file diff --git a/roles/minecraft/vars/main.yml b/roles/minecraft/vars/main.yml new file mode 100644 index 0000000..c8fe60b --- /dev/null +++ b/roles/minecraft/vars/main.yml @@ -0,0 +1,4 @@ +bw_password: "{{ lookup('env', 'BW_PASSWORD') }}" +VAULTWARDEN_LINK: "{{ lookup('env', 'VAULTWARDEN_LINK') }}" +BW_CLIENTID: "{{ lookup('env', 'BW_CLIENTID') }}" +BW_CLIENTSECRET : "{{ lookup('env', 'BW_CLIENTSECRET') }}" \ No newline at end of file