diff --git a/ansible/main.yml b/ansible/main.yml index abf7d64..daa735f 100644 --- a/ansible/main.yml +++ b/ansible/main.yml @@ -17,7 +17,10 @@ - ntfy - nextcloud - recyclarr - - name: rimgo + - searxng + - readarr + - calibre + - name: calibre-web tags: test - unifi-controller - slskd @@ -26,5 +29,5 @@ - gluetun - barassistant - synapse - - searxng + - rimgo - gitea diff --git a/ansible/roles/calibre-web/tasks/main.yml b/ansible/roles/calibre-web/tasks/main.yml new file mode 100644 index 0000000..bf946a1 --- /dev/null +++ b/ansible/roles/calibre-web/tasks/main.yml @@ -0,0 +1,31 @@ +- name: Create service user + user: + name: "{{ role_name }}" + groups: "{{ media_group }}" + append: yes + system: true + register: service_user + become: true + +- name: Create install directory + file: + path: "{{ install_directory }}/{{ role_name }}" + state: directory + owner: "{{ docker_user }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Copy docker-compose file to destination + template: + src: docker-compose.yml + dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml" + owner: "{{ docker_user }}" + mode: "{{ docker_compose_file_mask }}" + validate: docker-compose -f %s config + become: true + +- name: Start docker container + community.docker.docker_compose: + project_src: "{{ install_directory }}/{{ role_name }}" + pull: true + remove_orphans: yes diff --git a/ansible/roles/calibre-web/templates/docker-compose.yml b/ansible/roles/calibre-web/templates/docker-compose.yml new file mode 100644 index 0000000..24c48bc --- /dev/null +++ b/ansible/roles/calibre-web/templates/docker-compose.yml @@ -0,0 +1,26 @@ +version: "{{ docker_compose_version }}" + +networks: + traefik: + external: true + +services: + {{ role_name }}: + container_name: "{{ role_name }}" + image: lscr.io/linuxserver/calibre-web:latest + restart: unless-stopped + networks: + - traefik + environment: + - "PUID={{ service_user.uid }}" + - "PGID={{ service_user.uid }}" + - "TZ={{ timezone }}" + - "UMASK=002" + volumes: + - "{{ data_dir }}/{{ role_name }}:/config" + - "{{ media_storage_mnt }}/data/media/books:/books" + labels: + traefik.enable: true + traefik.http.routers.{{ role_name }}.rule: "Host(`{{ role_name }}.local.{{ personal_domain }}`)" + traefik.http.routers.{{ role_name }}.middlewares: lan-whitelist@file + traefik.http.services.{{ role_name }}.loadbalancer.server.port: 8083 diff --git a/ansible/roles/calibre/tasks/main.yml b/ansible/roles/calibre/tasks/main.yml new file mode 100644 index 0000000..bf946a1 --- /dev/null +++ b/ansible/roles/calibre/tasks/main.yml @@ -0,0 +1,31 @@ +- name: Create service user + user: + name: "{{ role_name }}" + groups: "{{ media_group }}" + append: yes + system: true + register: service_user + become: true + +- name: Create install directory + file: + path: "{{ install_directory }}/{{ role_name }}" + state: directory + owner: "{{ docker_user }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Copy docker-compose file to destination + template: + src: docker-compose.yml + dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml" + owner: "{{ docker_user }}" + mode: "{{ docker_compose_file_mask }}" + validate: docker-compose -f %s config + become: true + +- name: Start docker container + community.docker.docker_compose: + project_src: "{{ install_directory }}/{{ role_name }}" + pull: true + remove_orphans: yes diff --git a/ansible/roles/calibre/templates/docker-compose.yml b/ansible/roles/calibre/templates/docker-compose.yml new file mode 100644 index 0000000..04beae3 --- /dev/null +++ b/ansible/roles/calibre/templates/docker-compose.yml @@ -0,0 +1,26 @@ +version: "{{ docker_compose_version }}" + +networks: + traefik: + external: true + +services: + {{ role_name }}: + container_name: "{{ role_name }}" + image: lscr.io/linuxserver/calibre:latest + restart: unless-stopped + networks: + - traefik + environment: + - "PUID={{ service_user.uid }}" + - "PGID={{ media_gid }}" + - "TZ={{ timezone }}" + - "UMASK=002" + volumes: + - "{{ data_dir }}/{{ role_name }}:/config" + - "{{ media_storage_mnt }}/data:/data" + labels: + traefik.enable: true + traefik.http.routers.{{ role_name }}.rule: "Host(`{{ role_name }}.local.{{ personal_domain }}`)" + traefik.http.routers.{{ role_name }}.middlewares: lan-whitelist@file + traefik.http.services.{{ role_name }}.loadbalancer.server.port: 8080 diff --git a/ansible/roles/readarr/tasks/main.yml b/ansible/roles/readarr/tasks/main.yml new file mode 100644 index 0000000..bf946a1 --- /dev/null +++ b/ansible/roles/readarr/tasks/main.yml @@ -0,0 +1,31 @@ +- name: Create service user + user: + name: "{{ role_name }}" + groups: "{{ media_group }}" + append: yes + system: true + register: service_user + become: true + +- name: Create install directory + file: + path: "{{ install_directory }}/{{ role_name }}" + state: directory + owner: "{{ docker_user }}" + mode: "{{ docker_compose_directory_mask }}" + become: true + +- name: Copy docker-compose file to destination + template: + src: docker-compose.yml + dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml" + owner: "{{ docker_user }}" + mode: "{{ docker_compose_file_mask }}" + validate: docker-compose -f %s config + become: true + +- name: Start docker container + community.docker.docker_compose: + project_src: "{{ install_directory }}/{{ role_name }}" + pull: true + remove_orphans: yes diff --git a/ansible/roles/readarr/templates/docker-compose.yml b/ansible/roles/readarr/templates/docker-compose.yml new file mode 100644 index 0000000..78f4752 --- /dev/null +++ b/ansible/roles/readarr/templates/docker-compose.yml @@ -0,0 +1,25 @@ +version: "{{ docker_compose_version }}" + +networks: + traefik: + external: true + +services: + {{ role_name }}: + container_name: "{{ role_name }}" + image: cr.hotio.dev/hotio/readarr + restart: unless-stopped + networks: + - traefik + environment: + - "PUID={{ service_user.uid }}" + - "PGID={{ media_gid }}" + - "TZ={{ timezone }}" + - "UMASK=002" + volumes: + - "{{ data_dir }}/{{ role_name }}:/config" + - "{{ media_storage_mnt }}/data:/data" + labels: + traefik.enable: true + traefik.http.routers.{{ role_name }}.rule: "Host(`{{ role_name }}.local.{{ personal_domain }}`)" + traefik.http.routers.{{ role_name }}.middlewares: lan-whitelist@file