ajoute le proxy console Go et le relais WebSocket vers nova-serialproxy

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-10-08 09:35:16 +02:00
parent 30e14b1c54
commit 8742bde807
30 changed files with 1103 additions and 6 deletions

View file

@ -0,0 +1,32 @@
---
- name: télécharger Go {{ proxy_console_go_version }} (archive officielle, somme vérifiée)
ansible.builtin.get_url:
url: "https://go.dev/dl/go{{ proxy_console_go_version }}.linux-amd64.tar.gz"
dest: "/tmp/go{{ proxy_console_go_version }}.linux-amd64.tar.gz"
checksum: "sha256:{{ proxy_console_go_sha256 }}"
mode: "0644"
- name: vérifier si Go est déjà installé dans cette version
ansible.builtin.command: /usr/local/go/bin/go version
register: proxy_console_go_deja_installe
failed_when: false
changed_when: false
- name: supprimer une éventuelle ancienne version de Go
ansible.builtin.file:
path: /usr/local/go
state: absent
when: proxy_console_go_version not in (proxy_console_go_deja_installe.stdout | default(''))
- name: extraire Go dans /usr/local
ansible.builtin.unarchive:
src: "/tmp/go{{ proxy_console_go_version }}.linux-amd64.tar.gz"
dest: /usr/local
remote_src: true
creates: /usr/local/go/bin/go
- name: rendre go accessible dans le PATH
ansible.builtin.file:
src: /usr/local/go/bin/go
dest: /usr/local/bin/go
state: link

View file

@ -0,0 +1,98 @@
---
- name: créer l'utilisateur système dédié
ansible.builtin.user:
name: proxyconsole
system: true
shell: /usr/sbin/nologin
home: "{{ proxy_console_dossier }}"
create_home: false
- name: créer le dossier de l'application
ansible.builtin.file:
path: "{{ proxy_console_dossier }}"
state: directory
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: "0755"
- name: synchroniser le code source
become: false
ansible.posix.synchronize:
src: "{{ playbook_dir }}/../proxy-console/"
dest: "{{ proxy_console_dossier }}/"
delete: true
rsync_opts:
- "--exclude=proxy-console-linux-amd64"
- "--exclude=proxy-console"
- "--exclude=.cache"
- "--exclude=go"
register: proxy_console_code_synchronise
- name: compiler le binaire
ansible.builtin.command:
cmd: /usr/local/bin/go build -o {{ proxy_console_dossier }}/proxy-console .
args:
chdir: "{{ proxy_console_dossier }}"
environment:
HOME: "{{ proxy_console_dossier }}"
register: proxy_console_build
changed_when: true
notify: redémarrer proxy-console
- name: donner la propriété du binaire à l'utilisateur dédié
ansible.builtin.file:
path: "{{ proxy_console_dossier }}/proxy-console"
owner: proxyconsole
group: proxyconsole
mode: "0750"
# Le mot de passe Redis est déjà généré par le rôle `portail` (même Redis,
# partagé) : on le relit plutôt que d'en gérer un second.
- name: lire le mot de passe Redis de l'app
ansible.builtin.slurp:
src: /etc/portail/.env
register: proxy_console_env_portail_brut
- name: extraire le mot de passe Redis
ansible.builtin.set_fact:
proxy_console_redis_mot_de_passe: "{{ proxy_console_env_portail_contenu | regex_search('REDIS_PASSWORD=(.*)', '\\1') | first }}"
vars:
proxy_console_env_portail_contenu: "{{ proxy_console_env_portail_brut.content | b64decode }}"
no_log: true
- name: déployer le fichier d'environnement du service
ansible.builtin.template:
src: proxy-console.env.j2
dest: /etc/proxy-console.env
owner: root
group: proxyconsole
mode: "0640"
no_log: true
notify: redémarrer proxy-console
- name: déployer le service systemd
ansible.builtin.template:
src: proxy-console.service.j2
dest: /etc/systemd/system/proxy-console.service
mode: "0644"
notify:
- recharger systemd
- redémarrer proxy-console
- name: appliquer les changements
ansible.builtin.meta: flush_handlers
- name: vérifier que le service tourne
ansible.builtin.systemd:
name: proxy-console
enabled: true
state: started
- name: déployer les scripts de test manuel de la console
ansible.builtin.copy:
src: "{{ playbook_dir }}/../proxy-console/{{ item }}"
dest: "/opt/construction-image/{{ item }}"
mode: "0644"
loop:
- test-manuel.py
- test-duplication.py

View file

@ -0,0 +1,6 @@
---
- name: installer Go
ansible.builtin.import_tasks: 01-go.yml
- name: déployer et démarrer le service
ansible.builtin.import_tasks: 02-service.yml