From c51a7d81be9a40d7e9b8a2d860d7c8327a52e2a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Limpinho?= <53994778+TomasLimpinho@users.noreply.github.com> Date: Thu, 13 Nov 2025 17:34:15 +0000 Subject: [PATCH] decluttarr --- playbook.yml | 3 +- .../files/decluttarr-deployment.yaml | 90 +++++++++++++++++++ .../decluttarr/files/decluttarr-nfs-csi.yaml | 12 +++ roles/decluttarr/files/decluttarr-pvcs.yaml | 30 +++++++ roles/decluttarr/files/decluttarr-secret.yaml | 11 +++ roles/decluttarr/tasks/main.yml | 51 +++++++++++ roles/decluttarr/vars/main.yml | 4 + 7 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 roles/decluttarr/files/decluttarr-deployment.yaml create mode 100644 roles/decluttarr/files/decluttarr-nfs-csi.yaml create mode 100644 roles/decluttarr/files/decluttarr-pvcs.yaml create mode 100644 roles/decluttarr/files/decluttarr-secret.yaml create mode 100644 roles/decluttarr/tasks/main.yml create mode 100644 roles/decluttarr/vars/main.yml diff --git a/playbook.yml b/playbook.yml index ba9cc13..8ce589c 100644 --- a/playbook.yml +++ b/playbook.yml @@ -27,4 +27,5 @@ - sonarr - jellyfin - flaresolverr - - jellyseerr \ No newline at end of file + - jellyseerr + - decluttarr \ No newline at end of file diff --git a/roles/decluttarr/files/decluttarr-deployment.yaml b/roles/decluttarr/files/decluttarr-deployment.yaml new file mode 100644 index 0000000..1198631 --- /dev/null +++ b/roles/decluttarr/files/decluttarr-deployment.yaml @@ -0,0 +1,90 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: decluttarr + namespace: stack-arr +spec: + replicas: 1 + selector: + matchLabels: + app: decluttarr + template: + metadata: + labels: + app: decluttarr + spec: + imagePullSecrets: + - name: regcred + containers: + - name: decluttarr + image: ghcr.io/manimatter/decluttarr:latest + env: + - name: PUID + value: "1013" + - name: PGID + value: "1013" + - name: TZ + value: 'Etc/UTC' + - name: REMOVE_TIMER + value: '1' + - name: REMOVE_FAILED + value: 'True' + - name: REMOVE_FAILED_IMPORTS + value: 'True' + - name: REMOVE_METADATA_MISSING + value: 'True' + - name: REMOVE_MISSING_FILES + value: 'True' + - name: REMOVE_ORPHANS + value: 'True' + - name: REMOVE_SLOW + value: 'False' + - name: REMOVE_STALLED + value: 'True' + - name: REMOVE_UNMONITORED + value: 'False' + - name: MIN_DOWNLOAD_SPEED + value: '100' + - name: PERMITTED_ATTEMPTS + value: '2' + - name: RADARR_URL + value: http://192.168.1.243:7878/radarr + - name: RADARR_KEY + valueFrom: + secretKeyRef: + name: decluttarr-secret + key: radarrapikey + - name: SONARR_URL + value: http://sonarr-service.stack-arr.svc.cluster.local:8989 + - name: SONARR_KEY + valueFrom: + secretKeyRef: + name: decluttarr-secret + key: sonarrapikey + - name: QBITTORRENT_URL + value: http://qbittorrent-service.stack-arr.svc.cluster.local:8080 + - name: QBITTORRENT_USERNAME + valueFrom: + secretKeyRef: + name: decluttarr-secret + key: qbittorrentuser + - name: QBITTORRENT_PASSWORD + valueFrom: + secretKeyRef: + name: decluttarr-secret + key: qbittorrentpass + volumeMounts: + - name: config + mountPath: /config + - name: downloads + mountPath: /data/downloads + volumes: + - name: config + persistentVolumeClaim: + claimName: decluttarr-config-pvc + - name: downloads + persistentVolumeClaim: + claimName: qbittorrent-downloads-pvc + + + diff --git a/roles/decluttarr/files/decluttarr-nfs-csi.yaml b/roles/decluttarr/files/decluttarr-nfs-csi.yaml new file mode 100644 index 0000000..2662913 --- /dev/null +++ b/roles/decluttarr/files/decluttarr-nfs-csi.yaml @@ -0,0 +1,12 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: decluttarr-nfs-csi + namespace: stack-arr +provisioner: nfs.csi.k8s.io +parameters: + server: 192.168.1.22 + share: /mnt/fenix-main-nas-pool-0/data/k8s-Volumes/k8s-cluster-iac-deployed/stack-arr/decluttarr +allowVolumeExpansion: true +reclaimPolicy: Retain +--- \ No newline at end of file diff --git a/roles/decluttarr/files/decluttarr-pvcs.yaml b/roles/decluttarr/files/decluttarr-pvcs.yaml new file mode 100644 index 0000000..1c4bb7c --- /dev/null +++ b/roles/decluttarr/files/decluttarr-pvcs.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: decluttarr-config-pv + namespace: stack-arr +spec: + capacity: + storage: 2Gi + storageClassName: decluttarr-nfs-csi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: 192.168.1.22 + path: /mnt/fenix-main-nas-pool-0/data/k8s-Volumes/k8s-cluster-iac-deployed/stack-arr/decluttarr/config +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: decluttarr-config-pvc + namespace: stack-arr +spec: + storageClassName: decluttarr-nfs-csi + accessModes: + - ReadWriteOnce + volumeName: decluttarr-config-pv + resources: + requests: + storage: 2Gi +--- \ No newline at end of file diff --git a/roles/decluttarr/files/decluttarr-secret.yaml b/roles/decluttarr/files/decluttarr-secret.yaml new file mode 100644 index 0000000..3f3900e --- /dev/null +++ b/roles/decluttarr/files/decluttarr-secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: decluttarr-secret + namespace: stack-arr +type: Opaque +data: + qbittorrentuser: dXNlcm5hbWU= + qbittorrentpass: cGFzc3dvcmQ= + radarrapikey: YXBpa2V5 + sonarrapikey: YXBpa2V5 \ No newline at end of file diff --git a/roles/decluttarr/tasks/main.yml b/roles/decluttarr/tasks/main.yml new file mode 100644 index 0000000..2497892 --- /dev/null +++ b/roles/decluttarr/tasks/main.yml @@ -0,0 +1,51 @@ +- name: Remover o diretório /tmp/stack-arr/decluttarr/kubernetes-files + ansible.builtin.file: + path: /tmp/stack-arr/decluttarr/kubernetes-files + state: absent + +- name: Criar diretório temporário no remoto + file: + path: /tmp/stack-arr/decluttarr/kubernetes-files + state: directory + mode: '0755' + +- name: Copy file with owner and permissions + ansible.builtin.copy: + src: ../files + dest: /tmp/stack-arr/decluttarr/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.decluttarr.secret", dest: "/tmp/stack-arr/decluttarr/kubernetes-files/files/decluttarr-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/decluttarr/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/decluttarr/kubernetes-files/files/ + environment: + KUBECONFIG: /home/fenix/.kube/config \ No newline at end of file diff --git a/roles/decluttarr/vars/main.yml b/roles/decluttarr/vars/main.yml new file mode 100644 index 0000000..c8fe60b --- /dev/null +++ b/roles/decluttarr/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