From cdf2cee6fea8d6fdc086a6629e5de2f93fb60823 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 01:33:19 +0100 Subject: [PATCH 1/8] decommission immich from cloud-vm --- infra/cloud/0000_proxmox_playbook.yaml | 6 -- infra/cloud/0001_initialise_playbook.yaml | 22 ----- .../0004_decommission_immich_playbook.yaml | 69 +++++++++++++ infra/cloud/0004_immich_playbook.yaml | 27 ----- infra/cloud/immich/.env | 19 ---- infra/cloud/immich/.gitignore | 1 - infra/cloud/immich/docker-compose.yaml | 98 ------------------- 7 files changed, 69 insertions(+), 173 deletions(-) create mode 100644 infra/cloud/0004_decommission_immich_playbook.yaml delete mode 100644 infra/cloud/0004_immich_playbook.yaml delete mode 100644 infra/cloud/immich/.env delete mode 100644 infra/cloud/immich/.gitignore delete mode 100644 infra/cloud/immich/docker-compose.yaml 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: -- 2.40.1 From 2ffe9e50bcd6806daf275277fca19c650b47c7d1 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 01:36:53 +0100 Subject: [PATCH 2/8] scale down cloud vm --- infra/cloud/0000_proxmox_playbook.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/cloud/0000_proxmox_playbook.yaml b/infra/cloud/0000_proxmox_playbook.yaml index 7efb04a..2ed0f49 100644 --- a/infra/cloud/0000_proxmox_playbook.yaml +++ b/infra/cloud/0000_proxmox_playbook.yaml @@ -101,8 +101,8 @@ - debian-12 - managed onboot: true - cores: 16 - memory: 32768 + cores: 8 + memory: 16384 - name: Retart VM community.general.proxmox_kvm: -- 2.40.1 From 3aa06e0f20cc0618675b800da9a6adef37ccaa0f Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 02:09:09 +0100 Subject: [PATCH 3/8] immich vm --- infra/photos/0000_proxmox_playbook.yaml | 116 +++++++++++++++++++++ infra/photos/0001_initialise_playbook.yaml | 64 ++++++++++++ infra/photos/0002_docker_playbook.yaml | 47 +++++++++ infra/photos/0003_immich_playbook.yaml | 37 +++++++ infra/photos/immich/.env | 22 ++++ infra/photos/immich/.gitignore | 1 + infra/photos/immich/docker-compose.yml | 98 +++++++++++++++++ inventory/proxmox.yaml | 3 + 8 files changed, 388 insertions(+) create mode 100644 infra/photos/0000_proxmox_playbook.yaml create mode 100644 infra/photos/0001_initialise_playbook.yaml create mode 100644 infra/photos/0002_docker_playbook.yaml create mode 100644 infra/photos/0003_immich_playbook.yaml create mode 100644 infra/photos/immich/.env create mode 100644 infra/photos/immich/.gitignore create mode 100644 infra/photos/immich/docker-compose.yml diff --git a/infra/photos/0000_proxmox_playbook.yaml b/infra/photos/0000_proxmox_playbook.yaml new file mode 100644 index 0000000..56159cb --- /dev/null +++ b/infra/photos/0000_proxmox_playbook.yaml @@ -0,0 +1,116 @@ +- name: Provision photos Proxmox VM + hosts: photos + connection: ansible.builtin.local + gather_facts: false + vars: + 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') }}" + ssh_public: "{{ lookup('ansible.builtin.env', 'SSH_PUBLIC') }}" + vmname: "{{ inventory_hostname | regex_replace('^([^\\.]+)\\..+$', '\\1') }}" + node: pve2 + 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_nic: + api_user: "{{ api_user }}" + api_host: "{{ api_host }}" + api_token_id: "{{ api_token_id }}" + api_token_secret: "{{ api_token_secret }}" + name: "{{ vmname }}" + 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: + # Initial setup + - name: Create VM + community.general.proxmox_kvm: + clone: "{{ node }}-debian-12" + storage: nvme + register: create + - name: Wait for status + community.general.proxmox_kvm: + state: current + register: vm + retries: 30 + delay: 10 + until: vm.status is defined + + # Networking and initial config + - name: Add PUB NIC + community.general.proxmox_nic: + interface: net0 + firewall: false + bridge: PUB + - name: Add SRV NIC + community.general.proxmox_nic: + interface: net1 + firewall: false + bridge: SRV + - name: Configure cloud-init + community.general.proxmox_kvm: + update: true + ciuser: debian + sshkeys: "{{ ssh_public }}" + ipconfig: + ipconfig0: ip=dhcp,ip6=auto + ipconfig1: ip=dhcp + + # Initial boot + # For some reason debian cloud images don't use + # cloud-init for networking on first boot (cloud-init files + # are regenerated AFTER networking starts). But we need the + # hostname to be registered with DHCP later on so ¯\_(ツ)_/¯ + - name: Initial boot + when: create.changed is true + block: + - name: Start + community.general.proxmox_kvm: + state: started + register: start + - name: Wait 1.5 min # Initial apt update, apt upgrade, cloud-init + ansible.builtin.wait_for: + timeout: 90 + + # VM Configuration + - name: Resize root disk + community.general.proxmox_disk: + disk: scsi0 + size: 16G + state: resized + - name: Create data disk + community.general.proxmox_disk: + disk: scsi1 + backup: true + storage: nvme + size: 64 + - name: Create media disk + community.general.proxmox_disk: + disk: scsi2 + backup: true + storage: nvme + size: 2048 + - name: Update VM + community.general.proxmox_kvm: + update: true + agent: enabled=1 + tags: + - debian-12 + - managed + onboot: true + cores: 8 + memory: 16384 + + - name: Retart VM + community.general.proxmox_kvm: + state: restarted + timeout: 60 diff --git a/infra/photos/0001_initialise_playbook.yaml b/infra/photos/0001_initialise_playbook.yaml new file mode 100644 index 0000000..0e59aae --- /dev/null +++ b/infra/photos/0001_initialise_playbook.yaml @@ -0,0 +1,64 @@ +- name: Initialise VM + hosts: photos + gather_facts: false + tasks: + - name: Wait for connection + ansible.builtin.wait_for_connection: + timeout: 300 + - name: Install system packages + ansible.builtin.apt: + update_cache: true + pkg: + - qemu-guest-agent + - parted + become: true + - name: Enable qemu-guest-agent + ansible.builtin.systemd: + name: qemu-guest-agent + state: started + enabled: true + become: true + + - name: Create data partition + community.general.parted: + device: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:1 + label: gpt + name: data + number: 1 + state: present + become: true + - name: Create data filesystem + community.general.filesystem: + dev: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:1-part1 + fstype: ext4 + become: true + - name: Mount data partition + ansible.posix.mount: + src: /dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:1-part1 + path: /var/lib/docker + fstype: ext4 + 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/photos/0002_docker_playbook.yaml b/infra/photos/0002_docker_playbook.yaml new file mode 100644 index 0000000..4e8734b --- /dev/null +++ b/infra/photos/0002_docker_playbook.yaml @@ -0,0 +1,47 @@ +- name: Install software + hosts: photos + gather_facts: false + tasks: + - name: Wait for connection + ansible.builtin.wait_for_connection: + timeout: 300 + - name: Install dependencies + ansible.builtin.apt: + update_cache: true + pkg: + - curl + - python3-apt + - gpg + become: true + - name: Add docker key + ansible.builtin.apt_key: + url: https://download.docker.com/linux/debian/gpg + keyring: /etc/apt/keyrings/docker.gpg + become: true + - name: Add docker repo + ansible.builtin.apt_repository: + repo: deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable + become: true + - name: Install docker + ansible.builtin.apt: + update_cache: true + pkg: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin + become: true + - name: Add user to docker group + ansible.builtin.user: + user: debian + groups: + - docker + append: true + become: true + - name: Enable docker + ansible.builtin.systemd: + name: docker + state: started + enabled: true + become: true diff --git a/infra/photos/0003_immich_playbook.yaml b/infra/photos/0003_immich_playbook.yaml new file mode 100644 index 0000000..ce7f5db --- /dev/null +++ b/infra/photos/0003_immich_playbook.yaml @@ -0,0 +1,37 @@ +- name: Deploy app + hosts: photos + 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: Replace Typesense secret + ansible.builtin.replace: + path: "{{ user.home }}/{{ app }}/.env" + regexp: "TYPESENSE_API_KEY_VALUE" + replace: "{{ lookup('ansible.builtin.password', user.home + '/typesense_secret', length=64, chars=['ascii_letters', 'digits']) }}" + - name: Replace DB secret + ansible.builtin.replace: + path: "{{ user.home }}/{{ app }}/.env" + regexp: "DB_PASSWORD_VALUE" + replace: "{{ lookup('ansible.builtin.password', user.home + '/db_secret', length=64, chars=['ascii_letters', 'digits']) }}" + - name: Docker compose up -d + ansible.builtin.command: docker compose up -d + args: + chdir: "{{ user.home }}/{{ app }}" diff --git a/infra/photos/immich/.env b/infra/photos/immich/.env new file mode 100644 index 0000000..e7c8557 --- /dev/null +++ b/infra/photos/immich/.env @@ -0,0 +1,22 @@ +# 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=TYPESENSE_API_KEY_VALUE +DB_PASSWORD=DB_PASSWORD_VALUE + +# Other +PUBLIC_LOGIN_PAGE_MESSAGE="KovalHome Photos & Videos" + +# The values below this line do not need to be changed +################################################################################### +DB_HOSTNAME=immich_postgres +DB_USERNAME=postgres +DB_DATABASE_NAME=immich + +REDIS_HOSTNAME=immich_redis diff --git a/infra/photos/immich/.gitignore b/infra/photos/immich/.gitignore new file mode 100644 index 0000000..1e18f27 --- /dev/null +++ b/infra/photos/immich/.gitignore @@ -0,0 +1 @@ +!.env \ No newline at end of file diff --git a/infra/photos/immich/docker-compose.yml b/infra/photos/immich/docker-compose.yml new file mode 100644 index 0000000..d967639 --- /dev/null +++ b/infra/photos/immich/docker-compose.yml @@ -0,0 +1,98 @@ +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: diff --git a/inventory/proxmox.yaml b/inventory/proxmox.yaml index 04520dd..8fbb791 100644 --- a/inventory/proxmox.yaml +++ b/inventory/proxmox.yaml @@ -11,6 +11,9 @@ proxmox: cloud: hosts: cloud.srv.home.local.koval.net: + photos: + hosts: + photos.srv.home.local.koval.net: vars: ansible_user: debian ansible_ssh_private_key_file: ~/.ssh/id_rsa -- 2.40.1 From d1d3c00931ad581bd1035659b890141202c2db27 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 02:09:25 +0100 Subject: [PATCH 4/8] deploy all --- .github/workflows/infra.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/infra.yaml b/.github/workflows/infra.yaml index cb0cc9c..0f51db8 100644 --- a/.github/workflows/infra.yaml +++ b/.github/workflows/infra.yaml @@ -11,7 +11,8 @@ on: - main env: - DEPLOY: ${{ github.ref == 'refs/heads/main' && ((startsWith(github.event.head_commit.message, '[deploy-all]') && 'all') || ('some')) || 'none' }} + # DEPLOY: ${{ github.ref == 'refs/heads/main' && ((startsWith(github.event.head_commit.message, '[deploy-all]') && 'all') || ('some')) || 'none' }} + DEPLOY: all jobs: ansible-playbooks: -- 2.40.1 From 94a094e741693e7d61633730837fd5743ac36bc8 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 02:25:21 +0100 Subject: [PATCH 5/8] destroy scsi2 --- infra/cloud/0004_decommission_immich_playbook.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/cloud/0004_decommission_immich_playbook.yaml b/infra/cloud/0004_decommission_immich_playbook.yaml index 80337cf..c236bd4 100644 --- a/infra/cloud/0004_decommission_immich_playbook.yaml +++ b/infra/cloud/0004_decommission_immich_playbook.yaml @@ -48,6 +48,7 @@ - name: Destroy media disk community.general.proxmox_disk: + disk: scsi2 state: absent delegate_to: localhost - name: Remove media mount -- 2.40.1 From 13191f41e891546d7c2297ae313b725ca3ed3d46 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 02:25:49 +0100 Subject: [PATCH 6/8] delete proxmox restart to localhost --- infra/cloud/0000_proxmox_playbook.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/cloud/0000_proxmox_playbook.yaml b/infra/cloud/0000_proxmox_playbook.yaml index 2ed0f49..3aca8f2 100644 --- a/infra/cloud/0000_proxmox_playbook.yaml +++ b/infra/cloud/0000_proxmox_playbook.yaml @@ -108,3 +108,4 @@ community.general.proxmox_kvm: state: restarted timeout: 60 + delegate_to: localhost \ No newline at end of file -- 2.40.1 From 2e9b1fb1938997df775f552cf6f41c0c4b99d3bc Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 02:37:08 +0100 Subject: [PATCH 7/8] correct previous commit :/ --- infra/cloud/0000_proxmox_playbook.yaml | 1 - infra/cloud/0004_decommission_immich_playbook.yaml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/cloud/0000_proxmox_playbook.yaml b/infra/cloud/0000_proxmox_playbook.yaml index 3aca8f2..2ed0f49 100644 --- a/infra/cloud/0000_proxmox_playbook.yaml +++ b/infra/cloud/0000_proxmox_playbook.yaml @@ -108,4 +108,3 @@ community.general.proxmox_kvm: state: restarted timeout: 60 - delegate_to: localhost \ No newline at end of file diff --git a/infra/cloud/0004_decommission_immich_playbook.yaml b/infra/cloud/0004_decommission_immich_playbook.yaml index c236bd4..abdbd12 100644 --- a/infra/cloud/0004_decommission_immich_playbook.yaml +++ b/infra/cloud/0004_decommission_immich_playbook.yaml @@ -68,3 +68,4 @@ community.general.proxmox_kvm: state: restarted timeout: 60 + delegate_to: localhost -- 2.40.1 From 6cf900b536e37e82083abd469973290984392804 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 28 Sep 2023 03:02:08 +0100 Subject: [PATCH 8/8] depeloy to pve for now --- infra/photos/0000_proxmox_playbook.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/photos/0000_proxmox_playbook.yaml b/infra/photos/0000_proxmox_playbook.yaml index 56159cb..6804b05 100644 --- a/infra/photos/0000_proxmox_playbook.yaml +++ b/infra/photos/0000_proxmox_playbook.yaml @@ -9,7 +9,7 @@ api_token_secret: "{{ lookup('ansible.builtin.env', 'PROXMOX_TOKEN_SECRET') }}" ssh_public: "{{ lookup('ansible.builtin.env', 'SSH_PUBLIC') }}" vmname: "{{ inventory_hostname | regex_replace('^([^\\.]+)\\..+$', '\\1') }}" - node: pve2 + node: pve module_defaults: community.general.proxmox_kvm: api_user: "{{ api_user }}" -- 2.40.1