From 21d91805adb0c6ad33c7725405dc0ca71cb5f86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Limpinho?= <53994778+TomasLimpinho@users.noreply.github.com> Date: Wed, 12 Nov 2025 14:39:00 +0000 Subject: [PATCH] sonarr added --- playbook.yml | 3 +- roles/prowlarr/files/prowlarr-deployment.yaml | 2 +- roles/prowlarr/tasks/main.yml | 2 +- roles/sonarr/files/sonarr-deployment.yaml | 77 +++++++++++++++++++ roles/sonarr/files/sonarr-nfs-csi.yaml | 23 ++++++ roles/sonarr/files/sonarr-pvcs.yaml | 60 +++++++++++++++ roles/sonarr/files/sonarr-secret.yaml | 11 +++ roles/sonarr/files/sonarr-service.yaml | 12 +++ roles/sonarr/tasks/main.yml | 51 ++++++++++++ roles/sonarr/vars/main.yml | 4 + 10 files changed, 242 insertions(+), 3 deletions(-) create mode 100644 roles/sonarr/files/sonarr-deployment.yaml create mode 100644 roles/sonarr/files/sonarr-nfs-csi.yaml create mode 100644 roles/sonarr/files/sonarr-pvcs.yaml create mode 100644 roles/sonarr/files/sonarr-secret.yaml create mode 100644 roles/sonarr/files/sonarr-service.yaml create mode 100644 roles/sonarr/tasks/main.yml create mode 100644 roles/sonarr/vars/main.yml diff --git a/playbook.yml b/playbook.yml index 0390cc2..9a99e31 100644 --- a/playbook.yml +++ b/playbook.yml @@ -22,4 +22,5 @@ roles: - stolon - qbittorrent - - prowlarr \ No newline at end of file + - prowlarr + - sonarr \ No newline at end of file diff --git a/roles/prowlarr/files/prowlarr-deployment.yaml b/roles/prowlarr/files/prowlarr-deployment.yaml index 2bd3ebf..e0a0a12 100644 --- a/roles/prowlarr/files/prowlarr-deployment.yaml +++ b/roles/prowlarr/files/prowlarr-deployment.yaml @@ -17,7 +17,7 @@ spec: - name: regcred containers: - name: prowlarr - image: lscr.io/linuxserver/prowlarr:latest + image: lscr.io/linuxserver/prowlarr:2.1.5 securityContext: capabilities: add: diff --git a/roles/prowlarr/tasks/main.yml b/roles/prowlarr/tasks/main.yml index e21f7b7..8be82c5 100644 --- a/roles/prowlarr/tasks/main.yml +++ b/roles/prowlarr/tasks/main.yml @@ -25,7 +25,7 @@ echo "get item" bw get item "{{ item.id }}" --session $BW_SESSION | jq -r '.notes' > {{ item.dest }} loop: - - { id: "iac.ansible.stackarr.prowlarr.secret", dest: "/tmp/stack-arr/prowlarr/kubernetes-files/files/vpn-secret.yaml" } + - { id: "iac.ansible.stackarr.prowlarr.secret", dest: "/tmp/stack-arr/prowlarr/kubernetes-files/files/prowlarr-secret.yaml" } args: executable: /bin/bash environment: diff --git a/roles/sonarr/files/sonarr-deployment.yaml b/roles/sonarr/files/sonarr-deployment.yaml new file mode 100644 index 0000000..20ccd3a --- /dev/null +++ b/roles/sonarr/files/sonarr-deployment.yaml @@ -0,0 +1,77 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sonarr + namespace: stack-arr +spec: + replicas: 1 + selector: + matchLabels: + app: sonarr + template: + metadata: + labels: + app: sonarr + spec: + imagePullSecrets: + - name: regcred + containers: + - name: sonarr + image: lscr.io/linuxserver/sonarr:4.0.16 + securityContext: + capabilities: + add: + - NET_ADMIN + ports: + - containerPort: 8989 + name: webui + env: + - name: PUID + value: "1013" + - name: PGID + value: "1013" + - name: TZ + value: 'Etc/UTC' + - name: SONARR__POSTGRES__HOST + value: 'stolon-proxy-service.postgresql.svc.cluster.local' + - name: SONARR__POSTGRES__USER + valueFrom: + secretKeyRef: + name: sonarr-secret + key: username + - name: SONARR__POSTGRES__PASSWORD + valueFrom: + secretKeyRef: + name: sonarr-secret + key: password + - name: SONARR__POSTGRES__MAINDB + valueFrom: + secretKeyRef: + name: sonarr-secret + key: maindb + - name: SONARR__POSTGRES__LOGDB + valueFrom: + secretKeyRef: + name: sonarr-secret + key: logsdb + volumeMounts: + - name: config + mountPath: /config + - name: downloads + mountPath: /downloads + - name: tv + mountPath: /tv + volumes: + - name: config + persistentVolumeClaim: + claimName: sonarr-config-pvc + - name: downloads + persistentVolumeClaim: + claimName: qbittorrent-downloads-pvc + - name: tv + persistentVolumeClaim: + claimName: sonarr-tv-pvc + + + + diff --git a/roles/sonarr/files/sonarr-nfs-csi.yaml b/roles/sonarr/files/sonarr-nfs-csi.yaml new file mode 100644 index 0000000..548080f --- /dev/null +++ b/roles/sonarr/files/sonarr-nfs-csi.yaml @@ -0,0 +1,23 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: sonarr-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/sonarr +allowVolumeExpansion: true +reclaimPolicy: Retain +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: sonarr-tv-nfs-csi + namespace: stack-arr +provisioner: nfs.csi.k8s.io +parameters: + server: 192.168.1.22 + share: /mnt/fenix-main-nas-pool-0/data/Filmes_e_Series/TV +allowVolumeExpansion: true +reclaimPolicy: Retain \ No newline at end of file diff --git a/roles/sonarr/files/sonarr-pvcs.yaml b/roles/sonarr/files/sonarr-pvcs.yaml new file mode 100644 index 0000000..0ca715a --- /dev/null +++ b/roles/sonarr/files/sonarr-pvcs.yaml @@ -0,0 +1,60 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: sonarr-config-pv + namespace: stack-arr +spec: + capacity: + storage: 2Gi + storageClassName: sonarr-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/sonarr/config +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-config-pvc + namespace: stack-arr +spec: + storageClassName: sonarr-nfs-csi + accessModes: + - ReadWriteOnce + volumeName: sonarr-config-pv + resources: + requests: + storage: 2Gi +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: sonarr-tv-pv + namespace: stack-arr +spec: + capacity: + storage: 50Gi + storageClassName: sonarr-tv-nfs-csi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: 192.168.1.22 + path: /mnt/fenix-main-nas-pool-0/data/Filmes_e_Series/TV +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-tv-pvc + namespace: stack-arr +spec: + storageClassName: sonarr-tv-nfs-csi + accessModes: + - ReadWriteOnce + volumeName: sonarr-tv-pv + resources: + requests: + storage: 50Gi +--- \ No newline at end of file diff --git a/roles/sonarr/files/sonarr-secret.yaml b/roles/sonarr/files/sonarr-secret.yaml new file mode 100644 index 0000000..2fdb1b3 --- /dev/null +++ b/roles/sonarr/files/sonarr-secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: sonarr-secret + namespace: stack-arr +type: Opaque +data: + username: dXNlcm5hbWU= + password: cGFzc3dvcmQ= + maindb: bWFpbmRiLXByb3dsYXJy + logsdb: bG9nZGItcHJvd2xhcnI= \ No newline at end of file diff --git a/roles/sonarr/files/sonarr-service.yaml b/roles/sonarr/files/sonarr-service.yaml new file mode 100644 index 0000000..634e9f3 --- /dev/null +++ b/roles/sonarr/files/sonarr-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: sonarr-service + namespace: stack-arr +spec: + ports: + - port: 8989 + targetPort: 8989 + selector: + app: sonarr + type: ClusterIP \ No newline at end of file diff --git a/roles/sonarr/tasks/main.yml b/roles/sonarr/tasks/main.yml new file mode 100644 index 0000000..63fa852 --- /dev/null +++ b/roles/sonarr/tasks/main.yml @@ -0,0 +1,51 @@ +- name: Remover o diretório /tmp/stack-arr/sonarr/kubernetes-files + ansible.builtin.file: + path: /tmp/stack-arr/sonarr/kubernetes-files + state: absent + +- name: Criar diretório temporário no remoto + file: + path: /tmp/stack-arr/sonarr/kubernetes-files + state: directory + mode: '0755' + +- name: Copy file with owner and permissions + ansible.builtin.copy: + src: ../files + dest: /tmp/stack-arr/sonarr/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.sonarr.secret", dest: "/tmp/stack-arr/sonarr/kubernetes-files/files/sonnar-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/sonarr/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/sonarr/kubernetes-files/files/ + environment: + KUBECONFIG: /home/fenix/.kube/config \ No newline at end of file diff --git a/roles/sonarr/vars/main.yml b/roles/sonarr/vars/main.yml new file mode 100644 index 0000000..c8fe60b --- /dev/null +++ b/roles/sonarr/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