From 8195d6b8144d8e25c0a647b795a71e580fd3ea7c Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 26 Aug 2026 16:42:24 -0400 Subject: [PATCH] poste : l'outillage sur le chemin de celui qui l'exploite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ansible vit dans un venv isole — c'est voulu, il est epingle. Mais rien ne le mettait sur le PATH du compte d'exploitation : `make instancier` y echouait sur « [Errno 2] No such file or directory: 'ansible-inventory' », un message qui accuse un fichier manquant alors que le fichier est la, deux dossiers plus loin. Mesure du 2026-08-26, en EPROUVANT la sequence depuis le runner du site. Un exploitant y serait tombe exactement de la meme facon — et c'est precisement ce qu'un outil « utilisable sans IA » ne doit pas faire. Un fragment `profile.d` plutot qu'un `.bashrc` : il vaut pour toute session du compte, `sudo -iu setops` compris, et se retire d'un seul geste. Co-Authored-By: Claude Opus 5 --- roles/serveur_ops/tasks/main.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/roles/serveur_ops/tasks/main.yml b/roles/serveur_ops/tasks/main.yml index 7fc701f..fd4b22c 100644 --- a/roles/serveur_ops/tasks/main.yml +++ b/roles/serveur_ops/tasks/main.yml @@ -93,6 +93,33 @@ delay: 6 until: serveur_ops_pip is succeeded +# L'OUTILLAGE DOIT ETRE SUR LE CHEMIN DE CELUI QUI L'EXPLOITE (2026-08-26). +# +# Ansible vit dans un venv isole — c'est voulu, il est epingle. Mais rien ne le mettait sur +# le PATH du compte d'exploitation : `make instancier` y echouait sur +# « [Errno 2] No such file or directory: 'ansible-inventory' », un message qui accuse un +# fichier manquant alors que le fichier est la, deux dossiers plus loin. +# +# Mesure du 2026-08-26, en eprouvant la sequence depuis le runner du site. Un exploitant y +# serait tombe exactement de la meme facon — et c'est precisement ce qu'un outil « utilisable +# sans IA » ne doit pas faire. +# +# Un fragment `profile.d` plutot qu'un `.bashrc` : il vaut pour toute session du compte, y +# compris `sudo -iu setops`, et se retire d'un seul geste. +- name: Mettre l'outillage du poste sur le chemin du compte d'exploitation + ansible.builtin.copy: + dest: /etc/profile.d/50-setops-venv.sh + content: | + # GÉNÉRÉ par Set-OPS (rôle serveur_ops). NE PAS éditer à la main. + # Ansible vit dans un venv épinglé ; sans cette ligne, `make` ne le trouve pas. + if [ "$(id -un)" = "{{ serveur_ops_utilisateur }}" ]; then + PATH="{{ serveur_ops_venv }}/bin:$PATH" + export PATH + fi + owner: root + group: root + mode: "0644" + # LA CONFIANCE, AVANT LE CLONE — et limitee a une seule url. # # Voir defaults/main.yml : on ne pose pas cette racine dans le magasin systeme. `git