Je suis en train de mettre en place un cluster d'ordinateurs (20+), j'ai un serveur ldap central qui fonctionne pour authentifier les utilisateurs et garder les GID et UID synchronisés à travers le cluster. Une machine fait office de nœud principal, qui est exposé au réseau plus large, les utilisateurs se connectent à cette machine et peuvent ensuite se connecter aux autres machines. Cela fonctionne bien. Les utilisateurs peuvent également se connecter aux autres machines sans problème.
Lorsqu'un utilisateur se connecte pour la première fois au nœud principal, PAM crée un répertoire d'origine pour lui.
J'ai besoin, lorsque cela se produit, de créer simultanément un homedir sur toutes les autres machines également.
Je réfléchis à des solutions possibles :
- J'ai un script qui fait cela, déclenché lorsqu'un utilisateur se connecte pour la première fois au headnode. Je ne suis pas sûr de la façon la plus élégante de le faire, bar un .sh script avec 20+ commandes ssh.
- Demandez à un travail cron de faire la même chose que ci-dessus, fréquemment
- Configurer une sorte de voodoo PAM pour le faire
- Avoir une tâche cron pour créer un homedir pour chaque utilisateur dans le répertoire LDAP (Je ne veux pas faire cela, seulement les utilisateurs qui se sont connectés au noeud principal).
- Autre chose (les suggestions sont les bienvenues)
Actuellement, les utilisateurs doivent se connecter par ssh à tous les nœuds pour créer leur répertoire personnel.
Une analogie approximative de ce que nous exécutons et de la façon dont je l'ai mis en place peut être trouvée dans ces dockerfiles : https://github.com/dooglz/slurm_docker/blob/master/slurm/ldap_host.dockerfile https://github.com/dooglz/slurm_docker/blob/master/slurm/slurm_node.dockerfile
Le cluster est en fait exécuté à 100 % dans Docker, mais sur plus de 20 serveurs Ubuntu 18 en métal nu. Cela me permet de modifier facilement les configurations.
Pourquoi ? Nous utilisons le job scheduler SLURM, qui exécute des travaux par lots sur le cluster, avec l'UID de l'utilisateur, si le homedir n'existe pas déjà [c'est-à-dire que le travail est exécuté sur un nœud auquel l'utilisateur ne s'est pas encore connecté], nous obtenons des erreurs. Les utilisateurs peuvent changer le répertoire de travail par défaut, mais je ne veux pas avoir à le faire.
Suggestions et commentaires bienvenus. Merci
PS
Monter /home avec NFS est une possibilité, mais en raison de la nature du cas d'utilisation, nous avons besoin de /home pour écrire et lire sur les disques locaux rapides.
*EDIT J'ai maintenant une solution, mais c'est seulement pour mon flux de travail exact. En utilisant la commande SLURM prolog, qui s'exécute en tant que root sur un nœud qui est sur le point d'exécuter un travail, je mkdir la maison des utilisateurs. Cela fonctionne pour moi, mais n'a pas résolu la question de savoir comment je ferais autrement, ou avec PAM.