readytouse
This commit is contained in:
parent
91063c1a0c
commit
9281354f2e
16 changed files with 690 additions and 0 deletions
210
immich-ansible/playbook.yml
Normal file
210
immich-ansible/playbook.yml
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue