diff --git a/infra/cloud/0000_proxmox_playbook.yaml b/infra/cloud/0000_proxmox_playbook.yaml index c858234..7efb04a 100644 --- a/infra/cloud/0000_proxmox_playbook.yaml +++ b/infra/cloud/0000_proxmox_playbook.yaml @@ -93,12 +93,6 @@ backup: true storage: nvme size: 2048 - - name: Create media disk - community.general.proxmox_disk: - disk: scsi2 - backup: false - storage: zfs - size: 4096 - name: Update VM community.general.proxmox_kvm: update: true diff --git a/infra/cloud/0001_initialise_playbook.yaml b/infra/cloud/0001_initialise_playbook.yaml index 50c90be..c7a7e5e 100644 --- a/infra/cloud/0001_initialise_playbook.yaml +++ b/infra/cloud/0001_initialise_playbook.yaml @@ -40,25 +40,3 @@ opts: rw,errors=remount-ro,x-systemd.growfs state: mounted become: true - - - name: Create media partition - community.general.parted: - device: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:2 - label: gpt - name: media - number: 1 - state: present - become: true - - name: Create media filesystem - community.general.filesystem: - dev: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:2-part1 - fstype: ext4 - become: true - - name: Mount media partition - ansible.posix.mount: - src: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:2-part1 - path: /mnt/media - fstype: ext4 - opts: rw,errors=remount-ro,x-systemd.growfs - state: mounted - become: true diff --git a/infra/cloud/0004_decommission_immich_playbook.yaml b/infra/cloud/0004_decommission_immich_playbook.yaml new file mode 100644 index 0000000..80337cf --- /dev/null +++ b/infra/cloud/0004_decommission_immich_playbook.yaml @@ -0,0 +1,69 @@ +- name: Decommission Immich + hosts: cloud + gather_facts: false + vars: + app: immich + api_user: "{{ lookup('ansible.builtin.env', 'PROXMOX_USER') }}" + api_host: "{{ lookup('ansible.builtin.env', 'PROXMOX_HOST' ) }}" + api_token_id: "{{ lookup('ansible.builtin.env', 'PROXMOX_TOKEN_ID') }}" + api_token_secret: "{{ lookup('ansible.builtin.env', 'PROXMOX_TOKEN_SECRET') }}" + vmname: "{{ inventory_hostname | regex_replace('^([^\\.]+)\\..+$', '\\1') }}" + node: pve + module_defaults: + community.general.proxmox_kvm: + api_user: "{{ api_user }}" + api_host: "{{ api_host }}" + api_token_id: "{{ api_token_id }}" + api_token_secret: "{{ api_token_secret }}" + name: "{{ vmname }}" + node: "{{ node }}" + community.general.proxmox_disk: + api_user: "{{ api_user }}" + api_host: "{{ api_host }}" + api_token_id: "{{ api_token_id }}" + api_token_secret: "{{ api_token_secret }}" + name: "{{ vmname }}" + tasks: + - name: Wait for connection + ansible.builtin.wait_for_connection: + timeout: 300 + - name: Get user + ansible.builtin.user: + name: debian + register: user + - name: Docker compose down + ansible.builtin.command: docker compose down + args: + chdir: "{{ user.home }}/{{ app }}" + ignore_errors: true + - name: Remove docker volumes + ansible.builtin.command: docker compose down --volumes + args: + chdir: "{{ user.home }}/{{ app }}" + ignore_errors: true + - name: Remove config directory + ansible.builtin.file: + path: "{{ user.home }}/{{ app }}" + state: absent + + - name: Destroy media disk + community.general.proxmox_disk: + state: absent + delegate_to: localhost + - name: Remove media mount + ansible.posix.mount: + src: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:2-part1 + path: /mnt/media + fstype: ext4 + opts: rw,errors=remount-ro,x-systemd.growfs + state: absent + become: true + - name: Remove media directory + ansible.builtin.file: + path: /mnt/media + state: absent + become: true + - name: Restart VM + community.general.proxmox_kvm: + state: restarted + timeout: 60 diff --git a/infra/cloud/0004_immich_playbook.yaml b/infra/cloud/0004_immich_playbook.yaml deleted file mode 100644 index 238c53c..0000000 --- a/infra/cloud/0004_immich_playbook.yaml +++ /dev/null @@ -1,27 +0,0 @@ -- name: Deploy app - hosts: cloud - gather_facts: false - vars: - app: immich - tasks: - - name: Wait for connection - ansible.builtin.wait_for_connection: - timeout: 300 - - name: Get user - ansible.builtin.user: - name: debian - register: user - - name: Docker compose down - ansible.builtin.command: docker compose down - args: - chdir: "{{ user.home }}/{{ app }}" - ignore_errors: true - - name: Copy project - ansible.builtin.copy: - src: "./{{ app }}" - dest: "{{ user.home }}" - mode: "0744" - - name: Docker compose up -d - ansible.builtin.command: docker compose up -d - args: - chdir: "{{ user.home }}/{{ app }}" diff --git a/infra/cloud/immich/.env b/infra/cloud/immich/.env deleted file mode 100644 index d943043..0000000 --- a/infra/cloud/immich/.env +++ /dev/null @@ -1,19 +0,0 @@ -# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables - -# The location where your uploaded files are stored -UPLOAD_LOCATION=/mnt/media/immich - -# The Immich version to use. You can pin this to a specific version like "v1.71.0" -IMMICH_VERSION=release - -# Connection secrets for postgres and typesense. You should change these to random passwords -TYPESENSE_API_KEY=some-random-text -DB_PASSWORD=postgres - -# The values below this line do not need to be changed -################################################################################### -DB_HOSTNAME=immich_postgres -DB_USERNAME=immich -DB_DATABASE_NAME=immich - -REDIS_HOSTNAME=immich_redis diff --git a/infra/cloud/immich/.gitignore b/infra/cloud/immich/.gitignore deleted file mode 100644 index 1e18f27..0000000 --- a/infra/cloud/immich/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!.env \ No newline at end of file diff --git a/infra/cloud/immich/docker-compose.yaml b/infra/cloud/immich/docker-compose.yaml deleted file mode 100644 index d967639..0000000 --- a/infra/cloud/immich/docker-compose.yaml +++ /dev/null @@ -1,98 +0,0 @@ -version: "3.8" - -services: - immich-server: - container_name: immich_server - image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} - command: [ "start.sh", "immich" ] - volumes: - - ${UPLOAD_LOCATION}:/usr/src/app/upload - env_file: - - .env - depends_on: - - redis - - database - - typesense - restart: always - - immich-microservices: - container_name: immich_microservices - image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} - # extends: - # file: hwaccel.yml - # service: hwaccel - command: [ "start.sh", "microservices" ] - volumes: - - ${UPLOAD_LOCATION}:/usr/src/app/upload - env_file: - - .env - depends_on: - - redis - - database - - typesense - restart: always - - immich-machine-learning: - container_name: immich_machine_learning - image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} - volumes: - - model-cache:/cache - env_file: - - .env - restart: always - - immich-web: - container_name: immich_web - image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release} - env_file: - - .env - restart: always - - typesense: - container_name: immich_typesense - image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd - environment: - - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - - TYPESENSE_DATA_DIR=/data - # remove this to get debug messages - - GLOG_minloglevel=1 - volumes: - - tsdata:/data - restart: always - - redis: - container_name: immich_redis - image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 - restart: always - - database: - container_name: immich_postgres - image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 - env_file: - - .env - environment: - POSTGRES_PASSWORD: ${DB_PASSWORD} - POSTGRES_USER: ${DB_USERNAME} - POSTGRES_DB: ${DB_DATABASE_NAME} - volumes: - - pgdata:/var/lib/postgresql/data - restart: always - - immich-proxy: - container_name: immich_proxy - image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release} - environment: - # Make sure these values get passed through from the env file - - IMMICH_SERVER_URL - - IMMICH_WEB_URL - ports: - - 2283:8080 - depends_on: - - immich-server - - immich-web - restart: always - -volumes: - pgdata: - model-cache: - tsdata: