readytouse

This commit is contained in:
Rypeur33 2026-06-05 14:53:29 +02:00
parent 91063c1a0c
commit 9281354f2e
16 changed files with 690 additions and 0 deletions

210
immich-ansible/playbook.yml Normal file
View file

@ -0,0 +1,210 @@
---
- name: Installer Immich avec Docker Compose
hosts: immich
become: true
tasks:
- name: Installer les prérequis système
ansible.builtin.apt:
name:
- ca-certificates
- curl
- gnupg
- lsb-release
- nfs-common
state: present
update_cache: true
- name: Vérifier que le partage NFS est monté
ansible.builtin.command:
cmd: findmnt -T "{{ nfs_mount_point }}"
register: nfs_mount_check
changed_when: false
failed_when: nfs_mount_check.rc != 0
when: check_nfs_mount | bool
- name: Définir l'architecture Docker APT
ansible.builtin.set_fact:
docker_apt_arch: >-
{{
{
'x86_64': 'amd64',
'aarch64': 'arm64',
'armv7l': 'armhf',
'armv6l': 'armhf'
}.get(ansible_architecture, ansible_architecture)
}}
docker_apt_distribution: >-
{{
'ubuntu' if ansible_distribution == 'Ubuntu'
else 'debian' if ansible_distribution == 'Debian'
else ansible_distribution | lower
}}
- name: Supprimer les anciens paquets Docker conflictuels
ansible.builtin.apt:
name:
- docker.io
- docker-doc
- docker-compose
- podman-docker
- containerd
- runc
state: absent
when: docker_remove_conflicting_packages | bool
- name: Créer le dossier des clés APT
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
owner: root
group: root
mode: "0755"
- name: Installer la clé GPG du dépôt Docker officiel
ansible.builtin.get_url:
url: "https://download.docker.com/linux/{{ docker_apt_distribution }}/gpg"
dest: /etc/apt/keyrings/docker.asc
owner: root
group: root
mode: "0644"
- name: Ajouter le dépôt Docker officiel
ansible.builtin.apt_repository:
repo: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/{{ docker_apt_distribution }} {{ ansible_distribution_release }} stable"
filename: docker
state: present
update_cache: true
- name: Installer Docker Engine et Docker Compose v2
ansible.builtin.apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
update_cache: true
- name: Activer et démarrer Docker
ansible.builtin.service:
name: docker
state: started
enabled: true
- name: Créer le dossier Immich
ansible.builtin.file:
path: "{{ immich_dir }}"
state: directory
owner: root
group: root
mode: "0755"
- name: Créer la bibliothèque Immich sur le NFS
ansible.builtin.file:
path: "{{ immich_library_path }}"
state: directory
mode: "{{ immich_library_mode }}"
recurse: true
- name: Forcer les permissions sur la bibliothèque Immich NFS
ansible.builtin.command:
cmd: chmod -R {{ immich_library_mode }} "{{ immich_library_path }}"
changed_when: false
- name: Créer le dossier PostgreSQL local Immich
ansible.builtin.file:
path: "{{ immich_postgres_data_path }}"
state: directory
owner: "{{ immich_postgres_uid }}"
group: "{{ immich_postgres_gid }}"
mode: "0700"
- name: Créer le dossier de cache machine-learning Immich
ansible.builtin.file:
path: "{{ immich_model_cache_path }}"
state: directory
owner: root
group: root
mode: "0777"
- name: Déployer le fichier .env Immich
ansible.builtin.template:
src: templates/.env.j2
dest: "{{ immich_dir }}/.env"
owner: root
group: root
mode: "0600"
notify: Redémarrer Immich
- name: Déployer docker-compose.yml Immich
ansible.builtin.template:
src: templates/docker-compose.yml.j2
dest: "{{ immich_dir }}/docker-compose.yml"
owner: root
group: root
mode: "0644"
notify: Redémarrer Immich
- name: Supprimer les anciens conteneurs Immich portant les mêmes noms
ansible.builtin.shell: |
old_ids=$(docker ps -aq \
--filter "name=immich_server" \
--filter "name=immich_machine_learning" \
--filter "name=immich_redis" \
--filter "name=immich_postgres")
if [ -n "$old_ids" ]; then
docker rm -f $old_ids
fi
printf "%s" "$old_ids"
changed_when: removed_immich_containers.stdout != ''
register: removed_immich_containers
- name: Démarrer Immich
ansible.builtin.command:
cmd: docker compose up -d
chdir: "{{ immich_dir }}"
register: immich_compose_up
changed_when: >-
'Started' in immich_compose_up.stdout or
'Created' in immich_compose_up.stdout or
'Recreated' in immich_compose_up.stdout or
'Running' in immich_compose_up.stdout
- name: Attendre que le port HTTP Immich soit ouvert localement
ansible.builtin.wait_for:
host: 127.0.0.1
port: "{{ immich_host_http_port }}"
delay: 5
timeout: 240
state: started
- name: Attendre que le conteneur Immich Server soit en état running
ansible.builtin.shell: |
cid=$(docker compose ps -q immich-server)
if [ -z "$cid" ]; then
exit 1
fi
status=$(docker inspect "$cid" | grep -m1 '"Status":' | awk -F'"' '{print $4}')
[ "$status" = "running" ]
args:
chdir: "{{ immich_dir }}"
register: immich_container_status
retries: 30
delay: 5
until: immich_container_status.rc == 0
changed_when: false
- name: Lancer le rôle Nginx configuration réseau
ansible.builtin.include_role:
name: nginx
when: nginx_required | bool
handlers:
- name: Redémarrer Immich
ansible.builtin.command:
cmd: docker compose up -d
chdir: "{{ immich_dir }}"
register: immich_restart
changed_when: true