diff --git a/.vscode/settings.json b/.vscode/settings.json index cbc727b..27557a5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "ansible.python.interpreterPath": "/workspace/dev/ansible/minilab/.venv/bin/python" + "ansible.python.interpreterPath": "/usr/bin/python" } \ No newline at end of file diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome/tasks/main.yaml index c74fce4..65e2978 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome/tasks/main.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome/tasks/main.yaml @@ -32,7 +32,7 @@ tags: docker,adguard community.docker.docker_compose_v2: project_src: /opt/adguard - pull: always + pull: policy rescue: - name: Set that this task failed diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome_sync/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome_sync/tasks/main.yaml index 6946e05..fc0de52 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome_sync/tasks/main.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/adguardhome_sync/tasks/main.yaml @@ -37,7 +37,7 @@ tags: docker,adguard community.docker.docker_compose_v2: project_src: /opt/adguardhome-sync - pull: always + pull: policy rescue: - name: Set that this task failed diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/homarr.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/homarr.yaml new file mode 100644 index 0000000..0a1205e --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/homarr.yaml @@ -0,0 +1,13 @@ +--- +services: + homarr: + container_name: homarr + image: ghcr.io/homarr-labs/homarr:${HOMARR_TAG:-latest} + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration + - /opt/arr/homarr/appdata:/appdata + environment: + - SECRET_ENCRYPTION_KEY=9b51b9a6e1d604f76d43f26bf852b3344741d9563f1554193e6155b42647f7fe + ports: + - "7575:7575" diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/lidarr.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/lidarr.yaml new file mode 100644 index 0000000..bf20b27 --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/lidarr.yaml @@ -0,0 +1,16 @@ +--- +services: + lidarr: + container_name: lidarr + image: ghcr.io/hotio/lidarr:${LIDARR_TAG:-latest} + ports: + - "8686:8686" + environment: + - PUID=1000 + - PGID=10000 + - UMASK=002 + - TZ=America/New_York + - WEBUI_PORTS=8686/tcp + volumes: + - /opt/arr/lidarr/config:/config + - /mnt/storage:/data diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/prowlarr.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/prowlarr.yaml new file mode 100644 index 0000000..1b423eb --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/prowlarr.yaml @@ -0,0 +1,15 @@ +--- +services: + prowlarr: + container_name: prowlarr + image: ghcr.io/hotio/prowlarr:${PROWLARR_TAG:-latest} + ports: + - "9696:9696" + environment: + - PUID=1000 + - PGID=10000 + - UMASK=002 + - TZ=America/New_York + - WEBUI_PORTS=9696/tcp + volumes: + - /opt/arr/prowlarr/config:/config diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/radarr.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/radarr.yaml new file mode 100644 index 0000000..4c5478e --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/radarr.yaml @@ -0,0 +1,16 @@ +--- +services: + radarr: + container_name: radarr + image: ghcr.io/hotio/radarr:${RADARR_TAG:-latest} + ports: + - "7878:7878" + environment: + - PUID=1000 + - PGID=10000 + - UMASK=002 + - TZ=America/New_York + - WEBUI_PORTS=7878/tcp + volumes: + - /opt/arr/radarr/config:/config + - /mnt/storage:/data diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/sabnzbd.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/sabnzbd.yaml new file mode 100644 index 0000000..b551081 --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/sabnzbd.yaml @@ -0,0 +1,15 @@ +--- +services: + sabnzbd: + image: lscr.io/linuxserver/sabnzbd:${SABNZBD_TAG:-latest} + container_name: sabnzbd + environment: + - PUID=1000 + - PGID=10000 + - TZ=America/New_York + volumes: + - /opt/arr/sabnzbd/config:/config + - /mnt/storage:/data + ports: + - 8081:8080 + restart: unless-stopped diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/sonarr.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/sonarr.yaml new file mode 100644 index 0000000..ac7ea9a --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/files/sonarr.yaml @@ -0,0 +1,16 @@ +--- +services: + sonarr: + container_name: sonarr + image: ghcr.io/hotio/sonarr:${SONARR_TAG:-latest} + ports: + - "8989:8989" + environment: + - PUID=1000 + - PGID=10000 + - UMASK=002 + - TZ=America/New_York + - WEBUI_PORTS=8989/tcp + volumes: + - /opt/arr/sonarr/config:/config + - /mnt/storage:/data diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/tasks/main.yaml new file mode 100644 index 0000000..7a02248 --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/tasks/main.yaml @@ -0,0 +1,73 @@ +--- +- name: Load distro-specific variables + ansible.builtin.include_vars: '{{ item }}' + tags: always + with_first_found: + - files: + - "{{ ansible_facts['distribution'] }}.yaml" + skip: true + +- name: Ensure Arr stack is running on this device + block: + - name: Ensure presense of folders for arr stack + tags: packages,docker,arr,sabnzbd + ansible.builtin.file: + path: "/opt/arr/{{ item }}" + state: directory + recurse: true + owner: 1000 + group: 1000 + loop: + - "sabnzbd/config" + - "radarr/config" + - "sonarr/config" + - "lidarr/config" + - "prowlarr/config" + - "homarr/appdata" + - name: Ensure environment files are present for arr stack + tags: packages,docker,arr,sabnzbd + ansible.builtin.template: + src: env.j2 + dest: /opt/arr/{{ item }}/.env + owner: root + group: root + mode: u=rw,g=r,o=r + loop: + - "sabnzbd" + - "radarr" + - "sonarr" + - "lidarr" + - "prowlarr" + - "homarr" + - name: Ensure compose files are present for arr stack + tags: packages,docker,arr,sabnzbd + ansible.builtin.copy: + src: "{{ item }}.yaml" + dest: "/opt/arr/{{ item }}/docker-compose.yaml" + owner: 1000 + group: 1000 + mode: u=rw,g=r,o=r + loop: + - "sabnzbd" + - "radarr" + - "sonarr" + - "lidarr" + - "prowlarr" + - "homarr" + - name: Ensure docker containers are pulled and running + tags: docker,arr,sabnzbd + community.docker.docker_compose_v2: + project_src: /opt/arr/{{ item }} + pull: policy + loop: + - "sabnzbd" + - "radarr" + - "sonarr" + - "lidarr" + - "prowlarr" + - "homarr" + + rescue: + - name: Set that this task failed + ansible.builtin.set_fact: + task_failed: true diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/templates/env.j2 b/collections/ansible_collections/adhdgirl/minilab/roles/arr/templates/env.j2 new file mode 100644 index 0000000..2a25aa4 --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/templates/env.j2 @@ -0,0 +1,6 @@ +SABNZBD_TAG={{ arr_sabnzbd_tag }} +RADARR_TAG={{ arr_radarr_tag }} +SONARR_TAG={{ arr_sonarr_tag }} +LIDARR_TAG={{ arr_lidarr_tag }} +PROWLARR_TAG={{ arr_prowlarr_tag }} +HOMARR_TAG={{ arr_homarr_tag }} diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/templates/smbcredentials.j2 b/collections/ansible_collections/adhdgirl/minilab/roles/arr/templates/smbcredentials.j2 new file mode 100644 index 0000000..40e5e85 --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/templates/smbcredentials.j2 @@ -0,0 +1,2 @@ +username={{ arr_smb_username }} +password={{ arr_smb_password }} diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/arr/vars/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/arr/vars/main.yaml new file mode 100644 index 0000000..7e04c07 --- /dev/null +++ b/collections/ansible_collections/adhdgirl/minilab/roles/arr/vars/main.yaml @@ -0,0 +1,6 @@ +arr_sabnzbd_tag: 4.5.5 +arr_radarr_tag: release-6.0.4.10291 +arr_sonarr_tag: release-4.0.16.2944 +arr_lidarr_tag: release-3.1.0.4875 +arr_prowlarr_tag: release-2.3.0.5236 +arr_homarr_tag: v1.50.1 diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/authentik/files/docker-compose.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/authentik/files/docker-compose.yaml index 5e58f42..5c6a599 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/authentik/files/docker-compose.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/authentik/files/docker-compose.yaml @@ -1,7 +1,7 @@ --- services: postgresql: - image: docker.io/library/postgres:16-alpine + image: postgres:16-alpine restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] @@ -18,7 +18,7 @@ services: env_file: - .env redis: - image: docker.io/library/redis:alpine + image: redis:alpine command: --save 60 1 --loglevel warning restart: unless-stopped healthcheck: diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/authentik/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/authentik/tasks/main.yaml index 94358d3..f2ac53f 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/authentik/tasks/main.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/authentik/tasks/main.yaml @@ -40,7 +40,7 @@ tags: docker,authentik community.docker.docker_compose_v2: project_src: /opt/authentik - pull: always + pull: policy rescue: - name: Set that this task failed diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/caddy/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/caddy/tasks/main.yaml index a3bb954..061083e 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/caddy/tasks/main.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/caddy/tasks/main.yaml @@ -40,7 +40,7 @@ tags: docker,caddy community.docker.docker_compose_v2: project_src: /opt/caddy - pull: always + pull: policy rescue: - name: Set that this task failed diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/caddy/templates/Caddyfile.j2 b/collections/ansible_collections/adhdgirl/minilab/roles/caddy/templates/Caddyfile.j2 index bdf8254..207c214 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/caddy/templates/Caddyfile.j2 +++ b/collections/ansible_collections/adhdgirl/minilab/roles/caddy/templates/Caddyfile.j2 @@ -30,3 +30,26 @@ guac.local.cobb.lgbt { flush_interval -1 } } + +homarr.local.cobb.lgbt { + reverse_proxy 10.69.2.52:7575 +} +sabnzbd.local.cobb.lgbt { + reverse_proxy 10.69.2.52:8081 +} +sonarr.local.cobb.lgbt { + reverse_proxy 10.69.2.52:8989 +} +radarr.local.cobb.lgbt { + reverse_proxy 10.69.2.52:7878 +} +prowlarr.local.cobb.lgbt { + reverse_proxy 10.69.2.52:9696 +} +lidarr.local.cobb.lgbt { + reverse_proxy 10.69.2.52:8686 +} + +ha.local.cobb.lgbt { + reverse_proxy 10.69.2.13:8123 +} diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/coder/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/coder/tasks/main.yaml index cfd0c6f..2ccbdf7 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/coder/tasks/main.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/coder/tasks/main.yaml @@ -40,7 +40,7 @@ tags: docker,coder community.docker.docker_compose_v2: project_src: "/opt/coder" - pull: always + pull: policy rescue: - name: Set that this task failed diff --git a/collections/ansible_collections/adhdgirl/minilab/roles/unifi-controller/tasks/main.yaml b/collections/ansible_collections/adhdgirl/minilab/roles/unifi-controller/tasks/main.yaml index c7aa4e4..010206b 100644 --- a/collections/ansible_collections/adhdgirl/minilab/roles/unifi-controller/tasks/main.yaml +++ b/collections/ansible_collections/adhdgirl/minilab/roles/unifi-controller/tasks/main.yaml @@ -40,7 +40,7 @@ tags: docker,unifi community.docker.docker_compose_v2: project_src: "/opt/unifi" - pull: always + pull: policy rescue: - name: Set that this task failed diff --git a/doit b/doit index 847a2f2..01dfc1f 100755 --- a/doit +++ b/doit @@ -2,4 +2,12 @@ clear echo "" > ansible.log -/workspace/dev/ansible/minilab/.venv/bin/ansible-playbook --vault-password-file vault-password.txt minilab.yaml $@ +ANSIBLE_PATH=ansible-playbook + +if hash ansible-playbook 2>/dev/null; then + ANSIBLE_PATH=ansible-playbook +else + ANSIBLE_PATH=./.venv/bin/ansible-playbook +fi + +$ANSIBLE_PATH --vault-password-file vault-password.txt minilab.yaml $@ diff --git a/inventory/hosts.yaml b/inventory/hosts.yaml index 2bacec6..1bfca8f 100644 --- a/inventory/hosts.yaml +++ b/inventory/hosts.yaml @@ -15,7 +15,7 @@ all: # ansible_host: 10.69.1.50 reir: ansible_host: 10.69.9.11 - trady: + trady: ansible_host: 10.69.2.11 stephanie: ansible_host: 10.69.2.51 @@ -66,3 +66,6 @@ all: caddy: hosts: nemetona: + arr: + hosts: + nemetona: diff --git a/minilab.yaml b/minilab.yaml index d51e7c5..aae7d02 100644 --- a/minilab.yaml +++ b/minilab.yaml @@ -52,5 +52,6 @@ tags: docker,authentik,caddy become: true roles: - - adhdgirl.minilab.authentik + # - adhdgirl.minilab.authentik - adhdgirl.minilab.caddy + - adhdgirl.minilab.arr