ajoute la recherche plein texte dans les cours et labs (bloc C)
Elasticsearch interne (jamais exposé, sécurité x-pack désactivée, cohérent avec le reste des services internes de ce serveur), tas JVM fixé à 512 Mo plutôt que le calcul automatique (jusqu'à 50 % de la RAM système, désastreux sur ce serveur à 31 Go réels). Appels HTTP directs depuis Laravel, pas de bibliothèque cliente pour un besoin aussi simple. Index reconstruit après chaque synchronisation du catalogue, page de recherche commune aux profs et aux élèves. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
e549f03e1b
commit
777dd1cbc8
20 changed files with 545 additions and 0 deletions
7
ansible/roles/elasticsearch/defaults/main.yml
Normal file
7
ansible/roles/elasticsearch/defaults/main.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
elasticsearch_port: 9200
|
||||
# Catalogue de cours/labs seulement, volume très faible : un tas aussi
|
||||
# grand que le calcul automatique d'Elasticsearch (jusqu'à 50 % de la RAM
|
||||
# système) serait désastreux sur ce serveur à 31 Go partagés avec
|
||||
# OpenStack et le portail. Voir docs/runbooks/elasticsearch.md.
|
||||
elasticsearch_tas_mo: 512
|
||||
6
ansible/roles/elasticsearch/handlers/main.yml
Normal file
6
ansible/roles/elasticsearch/handlers/main.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
- name: redémarrer elasticsearch
|
||||
ansible.builtin.systemd:
|
||||
name: elasticsearch
|
||||
state: restarted
|
||||
enabled: true
|
||||
63
ansible/roles/elasticsearch/tasks/main.yml
Normal file
63
ansible/roles/elasticsearch/tasks/main.yml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
# Bloc C (CLAUDE.md) : recherche plein texte dans les cours et labs.
|
||||
# Instance interne seule (voir elasticsearch.yml.j2) : jamais exposée,
|
||||
# jamais de réseau à configurer dans Nginx — seul le portail lui parle, en
|
||||
# PHP, sur 127.0.0.1.
|
||||
- name: ajouter la clé de signature du dépôt Elastic
|
||||
ansible.builtin.get_url:
|
||||
url: https://artifacts.elastic.co/GPG-KEY-elasticsearch
|
||||
dest: /tmp/elastic-gpg-key.asc
|
||||
mode: "0644"
|
||||
register: elasticsearch_cle_brute
|
||||
|
||||
- name: déposer la clé au format attendu par apt
|
||||
ansible.builtin.shell: gpg --dearmor < /tmp/elastic-gpg-key.asc > /usr/share/keyrings/elastic.gpg
|
||||
args:
|
||||
creates: /usr/share/keyrings/elastic.gpg
|
||||
|
||||
- name: ajouter le dépôt Elastic 8.x
|
||||
ansible.builtin.apt_repository:
|
||||
repo: "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main"
|
||||
filename: elastic-8.x
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: installer Elasticsearch
|
||||
ansible.builtin.apt:
|
||||
name: elasticsearch
|
||||
state: present
|
||||
register: elasticsearch_installation
|
||||
|
||||
- name: déployer la configuration (sécurité désactivée, écoute locale seulement)
|
||||
ansible.builtin.template:
|
||||
src: elasticsearch.yml.j2
|
||||
dest: /etc/elasticsearch/elasticsearch.yml
|
||||
owner: root
|
||||
group: elasticsearch
|
||||
mode: "0660"
|
||||
notify: redémarrer elasticsearch
|
||||
|
||||
- name: réduire le tas JVM (catalogue de cours/labs, volume très faible)
|
||||
ansible.builtin.template:
|
||||
src: heap.options.j2
|
||||
dest: /etc/elasticsearch/jvm.options.d/heap.options
|
||||
owner: root
|
||||
group: elasticsearch
|
||||
mode: "0660"
|
||||
notify: redémarrer elasticsearch
|
||||
|
||||
- name: activer et démarrer Elasticsearch
|
||||
ansible.builtin.systemd:
|
||||
name: elasticsearch
|
||||
state: started
|
||||
enabled: true
|
||||
|
||||
- name: ajouter/mettre à jour les variables Elasticsearch dans .env du portail
|
||||
ansible.builtin.lineinfile:
|
||||
path: "{{ portail_dossier_app }}/.env"
|
||||
regexp: "^{{ item.cle }}="
|
||||
line: "{{ item.cle }}={{ item.valeur }}"
|
||||
loop:
|
||||
- { cle: "ELASTICSEARCH_HOTE", valeur: "127.0.0.1" }
|
||||
- { cle: "ELASTICSEARCH_PORT", valeur: "{{ elasticsearch_port }}" }
|
||||
notify: redémarrer horizon
|
||||
15
ansible/roles/elasticsearch/templates/elasticsearch.yml.j2
Normal file
15
ansible/roles/elasticsearch/templates/elasticsearch.yml.j2
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Géré par Ansible (rôle elasticsearch) — ne pas modifier à la main.
|
||||
# Instance interne (consommée seulement par le portail, jamais exposée) :
|
||||
# sécurité x-pack désactivée, comme les autres services internes de ce
|
||||
# serveur (MariaDB/Redis de l'app sur 127.0.0.1, API OpenStack sur
|
||||
# 10.10.0.1 en HTTP) — l'isolation vient du pare-feu et de l'écoute en
|
||||
# local seulement, pas de TLS/authentification par service. Voir ADR 0009.
|
||||
path.data: /var/lib/elasticsearch
|
||||
path.logs: /var/log/elasticsearch
|
||||
discovery.type: single-node
|
||||
network.host: 127.0.0.1
|
||||
http.port: {{ elasticsearch_port }}
|
||||
xpack.security.enabled: false
|
||||
xpack.security.enrollment.enabled: false
|
||||
xpack.security.http.ssl.enabled: false
|
||||
xpack.security.transport.ssl.enabled: false
|
||||
3
ansible/roles/elasticsearch/templates/heap.options.j2
Normal file
3
ansible/roles/elasticsearch/templates/heap.options.j2
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Géré par Ansible (rôle elasticsearch) — ne pas modifier à la main.
|
||||
-Xms{{ elasticsearch_tas_mo }}m
|
||||
-Xmx{{ elasticsearch_tas_mo }}m
|
||||
Loading…
Add table
Add a link
Reference in a new issue