From 3a57faf55cd6be0a21d643f50dc82f3d507394c9 Mon Sep 17 00:00:00 2001 From: Thomas MALGOUYRES Date: Tue, 21 Jul 2026 15:28:16 +0000 Subject: [PATCH] add stirling pdf deployment --- inventory/hosts.ini | 8 ++ .../{create-docker-lxc.yml => create-lxc.yml} | 20 ++-- playbooks/deploy-stirling-pdf.yml | 94 +++++++++++++++++++ services/stirling-pdf/docker-compose.yml | 15 +++ 4 files changed, 127 insertions(+), 10 deletions(-) rename playbooks/{create-docker-lxc.yml => create-lxc.yml} (96%) create mode 100644 playbooks/deploy-stirling-pdf.yml create mode 100644 services/stirling-pdf/docker-compose.yml diff --git a/inventory/hosts.ini b/inventory/hosts.ini index 15970ba..478a4d6 100644 --- a/inventory/hosts.ini +++ b/inventory/hosts.ini @@ -14,3 +14,11 @@ docker-test ansible_host=10.100.5.90 ansible_user=ansible ansible_python_interpr [tracearr_servers] tracearr ansible_host=10.100.5.102 ansible_user=ansible ansible_python_interpreter=/usr/bin/python3 # END ANSIBLE MANAGED tracearr +# BEGIN ANSIBLE MANAGED stirling-pdf +[stirling_pdf_servers] +stirling-pdf ansible_host=10.100.5.105 ansible_user=ansible ansible_python_interpreter=/usr/bin/python3 +# END ANSIBLE MANAGED stirling-pdf +# BEGIN ANSIBLE MANAGED passwordpusher +[passwordpusher_servers] +passwordpusher ansible_host=10.100.5.104 ansible_user=ansible ansible_python_interpreter=/usr/bin/python3 +# END ANSIBLE MANAGED passwordpusher diff --git a/playbooks/create-docker-lxc.yml b/playbooks/create-lxc.yml similarity index 96% rename from playbooks/create-docker-lxc.yml rename to playbooks/create-lxc.yml index 78b9b9d..026a280 100644 --- a/playbooks/create-docker-lxc.yml +++ b/playbooks/create-lxc.yml @@ -1,5 +1,5 @@ --- -# Playbook: create-docker-lxc.yml +# Playbook: create-docker.yml # # But: # - Creer un conteneur LXC Proxmox pret pour Docker @@ -21,18 +21,18 @@ # -e lxc_disk=20 \ # -e lxc_inventory_group=tracearr_servers -- name: Creer un LXC pret pour Docker +- name: Creer un LXC pret hosts: "{{ target_node }}" become: false gather_facts: false vars: # Identite du conteneur LXC - lxc_ctid: 900 - lxc_hostname: docker-test + lxc_ctid: 105 + lxc_hostname: passwordpusher # Configuration reseau du conteneur - lxc_ip: 10.100.5.90/24 + lxc_ip: 10.100.5.104/24 lxc_gateway: 10.100.5.1 lxc_bridge: vmbr0 @@ -46,10 +46,10 @@ lxc_template: debian-13-standard_13.1-2_amd64.tar.zst # Ressources du conteneur - lxc_cores: 1 - lxc_memory: 512 - lxc_swap: 512 - lxc_disk: 8 + lxc_cores: 2 + lxc_memory: 2048 + lxc_swap: 1024 + lxc_disk: 15 # IP du serveur Ansible # Cette IP sera utilisee dans authorized_keys pour limiter la cle SSH @@ -60,7 +60,7 @@ # Groupe Ansible ajoute dans inventory/hosts.ini # Exemple: - # lxc_hostname=tracearr -> tracearr_servers + # lxc_hostname=tracearr -> passwordpusher_servers lxc_inventory_group: "{{ lxc_hostname | replace('-', '_') }}_servers" # Parametres Ansible du futur conteneur diff --git a/playbooks/deploy-stirling-pdf.yml b/playbooks/deploy-stirling-pdf.yml new file mode 100644 index 0000000..3bbccd4 --- /dev/null +++ b/playbooks/deploy-stirling-pdf.yml @@ -0,0 +1,94 @@ +--- +# Playbook: deploy-stirling-pdf.yml +# +# But: +# - Copier le docker-compose.yml Stirling PDF sur le LXC +# - Creer les dossiers de donnees +# - Demarrer la stack Docker Compose +# - Verifier que le port 8080 repond +# +# Le docker-compose.yml reste dans Git. +# Les donnees de Stirling PDF restent sur le LXC dans /opt/stacks/stirling-pdf. + +- name: Deployer Stirling PDF + hosts: stirling_pdf_servers + become: true + gather_facts: false + + vars: + stack_name: stirling-pdf + stack_path: /opt/stacks/stirling-pdf + compose_source: "{{ playbook_dir }}/../services/stirling-pdf/docker-compose.yml" + + tasks: + - name: Verifier que Docker est installe + command: docker --version + changed_when: false + + - name: Verifier que Docker Compose est installe + command: docker compose version + changed_when: false + + - name: Creer le dossier de la stack + file: + path: "{{ stack_path }}" + state: directory + owner: root + group: root + mode: "0750" + + - name: Creer le dossier de donnees + file: + path: "{{ stack_path }}/stirling-data" + state: directory + owner: root + group: root + mode: "0755" + + - name: Creer les sous dossiers de donnees + file: + path: "{{ stack_path }}/stirling-data/{{ item }}" + state: directory + owner: root + group: root + mode: "0755" + loop: + - tessdata + - configs + - logs + - pipeline + + - name: Copier le fichier Docker Compose + copy: + src: "{{ compose_source }}" + dest: "{{ stack_path }}/docker-compose.yml" + owner: root + group: root + mode: "0644" + + - name: Telecharger les images Docker + command: docker compose pull + args: + chdir: "{{ stack_path }}" + + - name: Demarrer la stack Stirling PDF + command: docker compose up -d + args: + chdir: "{{ stack_path }}" + + - name: Attendre le port Stirling PDF + wait_for: + host: 127.0.0.1 + port: 8080 + timeout: 180 + + - name: Afficher les conteneurs de la stack + command: docker compose ps + args: + chdir: "{{ stack_path }}" + register: compose_ps + changed_when: false + + - name: Afficher le statut Docker Compose + debug: + var: compose_ps.stdout_lines \ No newline at end of file diff --git a/services/stirling-pdf/docker-compose.yml b/services/stirling-pdf/docker-compose.yml new file mode 100644 index 0000000..9b0b6e5 --- /dev/null +++ b/services/stirling-pdf/docker-compose.yml @@ -0,0 +1,15 @@ +services: + stirling-pdf: + image: stirlingtools/stirling-pdf:latest + container_name: stirling-pdf + ports: + - '8080:8080' + volumes: + - ./stirling-data/tessdata:/usr/share/tessdata # OCR language files + - ./stirling-data/configs:/configs # Settings & database + - ./stirling-data/logs:/logs # Application logs + - ./stirling-data/pipeline:/pipeline # Automation configs + environment: + - SECURITY_ENABLELOGIN=true + - SYSTEM_DEFAULTLOCALE=fr-FR + restart: unless-stopped \ No newline at end of file