Comment modifier un fichier système durant l'installation d'une app

Bonjour,

J’essaie de faire une application YunoHost qui déploie Portainer (donc Docker aussi).
Cela fonctionne déjà (plutôt une beta que je dois améliorer).
Je veux relier le LDAP de YunoHost à Portainer pour avoir les mêmes login/pwd
J’ai réussi à faire fonctionner ça sur un serveur de tests YunoHost en modifiant des configurations “à la main” et je veux maintenant mettre en place mes modifications durant l’installation de l’application.

Je bute sur la modification d’un fichier système que je veux faire avec cette commande :

ynh_replace_string --match_string="SLAPD_SERVICES=\"ldap://127.0.0.1:389/ ldaps:/// ldapi:///\"" --replace_string="SLAPD_SERVICES=\"ldap:/// ldaps:/// ldapi:///\"" --target_file="/etc/default/slapd"

J’obtiens l’erreur suivante :

Error: Packagers /!\ This app manually modified some system configuration files! This should not happen! If you need to do so, you should implement a proper conf_regen hook. Those configuration were affected:
    - /etc/default/slapd

J’ai donc essayé de mettre en place un hook conf_regen mais je n’y arrive pas.
Dois-je simplement créer le fichier dans /hooks/conf_regen ou dois le copier durant ma procédure d’install ?

Merci d’avance pour votre aide.
Patrick

Pour s’éviter un potentiel problème XY, pourquoi Portainer aurait besoin de remplacer ldap://127.0.0.1:389/ en ldap:/// dans la configuration de SLAPD ?


Hors sujet, c’est cool de t’intéresser à Portainer. Comment comptes-tu mettre en place le proxy inverse des conteneurs avec NGINX? (ou comptes-tu ne pas t’en inquiéter ? ^^)

J’ai lu l’article sur le problème XY :wink: . C’est pour ça que je suis remonté à mon problème d’origine : déployer portainer et lui donner accès au LDAP de YunoHost. Et pas juste mon problème actuel : comment modifier la conf de SLAPD.

Mais pour répondre à ta question, j’ai pas mal tourné en rond autour de la meilleure façon de rendre accessible le LDAP exposé uniquement sur localhost depuis le container Docker de portainer et je n’ai pas trouvé de solution.
En tout cas pas de solution si le LDAP ne répond que à localhost. Ma meilleure solution actuelle c’est d’exposer le LDAP sur l’IP de la machine YunoHost ce qui me permet d’y accéder depuis n’importe quel container Docker.

La modification que j’essaie de faire dans /etc/default/slapd permet cela : exposer le LDAP sur tous les IP de la machine.

J’avoue que ça ne me plait pas trop de devoir faire ça (j’envisage même d’ajouter une option pour choisir si on veut intégrer le LDAP à Portainer) et si tu as une meilleure solution je suis preneur et toujours prêt à en discuter.

Si ça t’intéresse, ma repo est publique : https://github.com/computablefacts/portainer_ynh

Hum, si, je m’en suis inquiété :wink:
Pour Portainer, mon install met en place le reverse proxy et ça fonctionne bien.
Pour les containers Docker que tu installes avec l’aide de Portainer, l’idée c’est d’exposer un port puis d’installer l’app redirect_ynh pour configurer nginx. Les tests que j’ai fait montrent que ça fonctionne.