{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2020/08/29/gestion-des-utilisateurs-aws-parallelcluster-ssh-avec-openldap-idk-dev-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2020/08/29/gestion-des-utilisateurs-aws-parallelcluster-ssh-avec-openldap-idk-dev-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2020/08/29/gestion-des-utilisateurs-aws-parallelcluster-ssh-avec-openldap-idk-dev-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Gestion des utilisateurs AWS ParallelCluster SSH avec OpenLDAP: idk.dev\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2020-08-29T21:32:08+00:00","modified_at":"2020-08-29T21:32:08+00:00","word_count":2674,"reading_time_seconds":803,"summary":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »] Une demande courante des utilisateurs d&#39;AWS ParallelCluster est d&#39;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX. Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à [&hellip;]","summary_points":["[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]\n\nUne demande courante des utilisateurs d&#39;AWS ParallelCluster est d&#39;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX.","Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à AWS Directory Service.","Cependant, certains clients peuvent préférer un service d&#39;annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique.","Cela élimine la nécessité d&#39;arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d&#39;Active Directory."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"0609966a34d3f854f0c295ed361a9d2c","plain_text":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]\n\nUne demande courante des utilisateurs d&#39;AWS ParallelCluster est d&#39;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX. Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à AWS Directory Service. Cependant, certains clients peuvent préférer un service d&#39;annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique. Cela élimine la nécessité d&#39;arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d&#39;Active Directory.\nUn environnement AWS ParallelCluster multi-utilisateurs est idéal pour les cas dans lesquels une équipe de scientifiques ou d&#39;ingénieurs collabore étroitement et a besoin de partager des ressources, telles que des données ou un budget de compte. L&#39;utilisation d&#39;un seul ensemble de systèmes de fichiers facilite la gestion des clusters pour l&#39;administrateur, en particulier s&#39;ils sont nouveaux sur AWS. Lorsque le temps de mise en solution et les dépenses totales doivent être soigneusement équilibrés, il est également utile de faire exécuter les tâches de plusieurs utilisateurs dans un seul planificateur.\nDans cet article, nous décrivons comment activer le service d&#39;annuaire OpenLDAP sur le nœud principal du cluster. Cette activation peut créer et synchroniser une collection locale d&#39;utilisateurs.\nLe processus documenté ici s&#39;applique aux clusters déployés à l&#39;aide du système d&#39;exploitation CentOS 7, pour AWS ParallelCluster version 2.8.1. D&#39;autres systèmes d&#39;exploitation peuvent suivre un processus similaire, mais nécessiteront des modifications mineures des commandes utilisées pour installer les packages pertinents (par exemple, en utilisant apt-get au lieu de Miam).\nAprès avoir installé et configuré l&#39;outil de ligne de commande AWS ParallelCluster, définissez les paramètres de configuration post_installer et s3_read_resource (ou s3_read_write_resource) pour permettre à un script d&#39;être exécuté sur la tête du cluster et de calculer les nœuds au moment du démarrage. Voici un exemple de fichier de configuration minimale pour déployer un cluster basé sur Slurm à l&#39;aide d&#39;instances C5n.18xlarge, parfaitement adaptées à la mise à l&#39;échelle des charges de travail HPC:\n\n[aws]\r\n\r\n\r\n\r\naws_region_name = eu-west-1\r\n[global]\r\nupdate_check = vrai\r\nsanity_check = vrai\r\ncluster_template = par défaut\r\n\r\n[cluster default]\r\nnom_clé = \r\nmaster_instance_type = c5.xlarge\r\ncompute_instance_type = c5n.18xlarge\r\nenable_efa = calculer\r\nplacement_group = DYNAMIQUE\r\nplacement = calculer\r\ndisable_hyperthreading = true\r\npost_install = s3: ///post-install.sh\r\ns3_read_resource = arn: aws: s3 :::/ *\r\ninitial_queue_size = 0\r\nmax_queue_size = 20\r\nkeep_initial_size = false\r\nplanificateur = slurm\r\ncluster_type = ondemand\r\nmaster_root_volume_size = 340\r\ncompute_root_volume_size = 340\r\nbase_os = centos7\r\nvpc_settings = std-vpc\r\n\r\n[vpc std-vpc]\r\nvpc_id = \r\nmaster_subnet_id = \r\ncompute_subnet_id = \n\nLe script de post-installation unique contient toutes les étapes d&#39;installation et de déploiement associées au serveur OpenLDAP:\n\n#! / bin / bash\r\nexec&gt;&gt; (tee /var/log/post-install.log|logger -t données-utilisateur -s 2&gt; / dev / console) 2&gt; &amp; 1\r\n\r\n### Fonctions utilitaires\r\n\r\ninstall_server_packages () \r\n    yum -y installer openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel\r\n\r\n\r\nprepare_ldap_server ()  awk &#39;print $ 1&#39;&gt; /root/.ldappasswd\r\n    chmod 400 /root/.ldappasswd\r\n    # Utilisez le mot de passe pour générer un hachage de mot de passe LDAP\r\n    LDAP_HASH = $ (slappasswd -T /root/.ldappasswd)\r\n    # Spécification de la configuration LDAP initiale\r\n    chat &lt; /root/ldapdb.ldif\r\ndn: olcDatabase = 2 hdb, cn = config\r\ntype de changement: modifier\r\nremplacer: olcSuffix\r\nolcSuffix: dc = $ stack_name, dc = internal\r\n\r\ndn: olcDatabase = 2 hdb, cn = config\r\ntype de changement: modifier\r\nremplacer: olcRootDN\r\nolcRootDN: cn = ldapadmin, dc = $ stack_name, dc = internal\r\n\r\ndn: olcDatabase = 2 hdb, cn = config\r\ntype de changement: modifier\r\nremplacer: olcRootPW\r\nolcRootPW: $ LDAP_HASH\r\nEOF\r\n    # Appliquer les paramètres LDAP\r\n    ldapmodify -Y EXTERNAL -H ldapi: /// -f /root/ldapdb.ldif\r\n    # Appliquer les paramètres de base de données LDAP\r\n    cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG\r\n    chown ldap: ldap / var / lib / ldap / *\r\n    # Appliquer un ensemble minimal de schémas LDAP\r\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/cosine.ldif\r\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/nis.ldif\r\n    # Spécifiez une structure de répertoire minimale\r\n    chat &lt; /root/struct.ldif\r\ndn: dc = $ stack_name, dc = internal\r\ndc: $ stack_name\r\nobjectClass: haut\r\nobjectClass: domaine\r\n\r\ndn: cn = ldapadmin, dc = $ stack_name, dc = internal\r\nobjectClass: OrganizationRole\r\ncn: ldapadmin\r\ndescription: Admin LDAP\r\n\r\ndn: ou = Users, dc = $ stack_name, dc = internal\r\nobjectClass: organizationUnit\r\nou: Utilisateurs\r\nEOF\r\n    # Appliquer la structure des répertoires\r\n    ldapadd -x -W -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /root/struct.ldif -y /root/.ldappasswd\r\n    # Enregistrez le nom d&#39;hôte du contrôleur dans un emplacement partagé pour une utilisation ultérieure\r\n    echo &quot;ldap_server = $ (nom d&#39;hôte)&quot;&gt; /home/.ldap\r\n\r\n\r\ninstall_client_packages () \r\n    miam -y installer openldap-clients nss-pam-ldapd\r\n\r\n\r\nprepare_ldap_client () \r\n    source / etc / parallelcluster / cfnconfig\r\n    source /home/.ldap\r\n    authconfig --enableldap\r\n               --enableldapauth\r\n               --ldapserver = $ ldap_server\r\n               --ldapbasedn = &quot;dc = $ stack_name, dc = internal&quot;\r\n               --enablemkhomedir\r\n               --mettre à jour\r\n    systemctl redémarrage nslcd\r\n\r\n\r\n### Corps principal\r\n\r\n# Charger les variables d&#39;environnement depuis ParallelCluster\r\nsource / etc / parallelcluster / cfnconfig\r\n# Si le script est en cours d&#39;exécution sur le contrôleur, configurez le serveur LDAP\r\nsi [ $cfn_node_type  == 'MasterServer' ]; puis\r\n    install_server_packages\r\n    prepare_ldap_server\r\n\r\nFi\r\n\r\n# Pour les nœuds de contrôleur et de calcul, activez l&#39;authentification LDAP\r\ninstall_client_packages\r\nprepare_ldap_client\r\n\nLorsque le script est exécuté sur l&#39;instance de contrôleur, le install_server_packages et prepare_ldap_server les fonctions s&#39;exécutent en premier, suivies de install_client_packages et prepare_ldap_client les fonctions. Toutes ces étapes se produisent pendant le processus de création de cluster initial. Lors des lancements d&#39;instance suivants (c&#39;est-à-dire lorsque le cluster évolue pour répondre aux demandes des travaux soumis), le processus de post-installation sur les nœuds de calcul exécutera uniquement le install_client_packages et prepare_ldap_client pas.\nC&#39;est tout! Une fois le lancement du cluster terminé, il sera prêt à accueillir de nouveaux utilisateurs.\nProcessus de post-installation\nAvant d&#39;ajouter des utilisateurs, parcourons le processus de post-installation étape par étape. passez à la section suivante si vous souhaitez simplement continuer à utiliser votre cluster.\nDans le prepare_ldap_server fonction, nous commençons par démarrer la giflé démon &#8211; c&#39;est le service OpenLDAP &#8211; qui maintiendra une base de données d&#39;utilisateurs et permettra aux clients de s&#39;authentifier.\nEnsuite, nous générons une chaîne aléatoire à utiliser comme mot de passe de configuration LDAP et la plaçons dans le répertoire de base racine pour réutiliser plus tard. Nous générons également un hachage approprié à partir du mot de passe à insérer dans LDAP. La configuration LDAP initiale définit le olcSuffix, olcRootDN, et olcRootPW paramètres aux valeurs que nous choisissons. Dans ce cas, les affectations de variables importantes sont cn = ldapadmin, dc = $ stack_name, dc = internal et $ LDAP_HASH.\nNous sommes libres de modifier le nom commun du compte administrateur LDAP à partir de ldapadmin à tout ce que nous choisissons, et ajustez également les composants du domaine de $ stack_name et interne selon nos propres préférences. Le point clé est de s&#39;assurer que nos valeurs choisies sont cohérentes tout au long du script. le ldapmodify La commande applique ces paramètres au service LDAP en cours d&#39;exécution.\nEnsuite, nous importons une configuration de base de données par défaut à partir des fichiers fournis avec le package de serveur LDAP, et nous assurons le LDAP l&#39;utilisateur du service possède tous les fichiers pertinents. La dernière étape de configuration du serveur consiste à définir et à appliquer une structure de répertoire utilisateur simple. Cela définit les fichiers liés les uns aux autres et leur permet d&#39;être regroupés en unités organisationnelles. Pour cet exemple minimal, nous n&#39;avons besoin que des définitions de schéma COSINE et NIS, qui sont fournies dans le cadre de l&#39;installation LDAP. Ceux-ci décrivent la configuration minimale requise pour ajouter un utilisateur à LDAP. Notre structure de répertoires (spécifiée dans le struct.ldif fichier créé en ligne) contient une seule unité organisationnelle pour nos utilisateurs AWS ParallelCluster.\nAvant de passer à la configuration du client, nous enregistrons le nom d&#39;hôte du serveur LDAP dans un emplacement partagé qui sera accessible aux clients sur les instances de calcul. Dans ce cas, nous pouvons placer un fichier dans le /Accueil répertoire, car il sera partagé avec le reste du cluster via NFS.\nle prepare_ldap_client La fonction établit la connexion entre les clients, exécutés sur l&#39;instance de contrôleur ainsi que sur toutes les futures instances de calcul, et le serveur LDAP &#8211; dans ce cas, à l&#39;aide de variables définies à la fois dans un emplacement AWS ParallelCluster standard (/ etc / parallelcluster / cfnconfig) et le /home/.ldap fichier que nous avons créé lors de la préparation du serveur.\nAjout d&#39;utilisateurs de cluster\nUne fois que l&#39;instance de contrôleur de cluster démarre et que la configuration LDAP est terminée, nous devons ajouter des utilisateurs au service d&#39;annuaire. Connectez-vous au cluster en tant qu&#39;utilisateur par défaut (centos dans ce cas) avec la commande:\n\npcluster ssh \nSinon, utilisez état du cluster     pour obtenir l&#39;adresse IP publique et connectez-vous à cette instance via SSH à l&#39;aide de la commande:\n\nssh -i  centos @\nSi vous avez utilisé une paire de clés publique / privée générée localement et stockée à l&#39;emplacement par défaut (~ / .ssh), vous pouvez omettre -je     section de la commande.\nUne fois connecté, créez un script bash avec le contenu suivant (nous appellerons ce script add-user.sh):\n\n#! / bin / bash\r\n\r\n# N&#39;agissez que si deux arguments sont fournis et que l&#39;UID est suffisamment élevé\r\nsi [ $# -eq 2 ] &amp;&amp; [ \"$2\" -eq \"$2\" ] 2&gt; / dev / null &amp;&amp; [ \"$2\" -gt 1000 ]; puis\r\n  NOM D&#39;UTILISATEUR = 1 $\r\n  USERID = 2 $\r\nautre\r\n  echo &quot;Utilisation:` basename $ 0`  &quot;\r\n  écho &quot; doit être une chaîne &quot;\r\n  écho &quot; doit être un entier supérieur à 1 000 &quot;\r\n  sortie 1\r\nFi\r\n\r\n# Charger les variables d&#39;environnement qui identifient le type d&#39;instance\r\nsource / etc / parallelcluster / cfnconfig\r\n\r\n# Ecrire une configuration d&#39;objet LDAP minimale pour un utilisateur\r\nchat &lt; /tmp/$USERNAME.ldif\r\ndn: uid = $ USERNAME, ou = Users, dc = $ stack_name, dc = internal\r\nobjectClass: haut\r\nobjectClass: compte\r\nobjectClass: posixAccount\r\nobjectClass: shadowAccount\r\ncn: $ USERNAME\r\nuid: $ USERNAME\r\nuidNumber: $ USERID\r\ngidNumber: 100\r\nhomeDirectory: / home / $ USERNAME\r\nloginShell: / bin / bash\r\nEOF\r\n\r\n# Ajouter l&#39;utilisateur à LDAP\r\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /tmp/$USERNAME.ldif -y /root/.ldappasswd\r\n\r\n# Ranger et vérifier que l&#39;entrée a réussi\r\nrm /tmp/$USERNAME.ldif\r\ngetent passwd $ 1\nRendre le script exécutable (chmod + x add-user.sh). L&#39;ajout d&#39;un utilisateur à LDAP ne nécessite pas de privilèges root en général, mais dans ce cas, notre seul enregistrement du ldapadmin le mot de passe est dans le fichier /root/.ldappasswd. Nous devrons utiliser sudo lors de l&#39;exécution du script. Transmettez votre nom d&#39;utilisateur et votre UID comme arguments, par exemple:\n\nsudo ./add-user.sh alice 3000\nTous les utilisateurs créés de cette manière appartiendront au utilisateurs groupe (GID 100). Si nécessaire, vous pouvez modifier ce paramètre pour affecter les utilisateurs à différents groupes. Notez que la création de groupe n&#39;est pas automatique; tous les groupes personnalisés doivent être créés avant d&#39;ajouter les utilisateurs.\nAu lieu d&#39;utiliser le processus scripté décrit précédemment, vous pouvez récupérer le mot de passe LDAP du fichier et le stocker en dehors du cluster en utilisant vos mécanismes de protection par mot de passe habituels. Ensuite, vous exécuterez ldapadd sur une invite de commande en tant qu&#39;utilisateur régulier (non root). Dans ce cas, vous devrez vous assurer qu&#39;une configuration d&#39;objet LDAP valide est disponible, ainsi qu&#39;un fichier contenant le mot de passe, puis exécuter:\n\nsource / etc / parallelcluster / cfnconfig\r\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f  -y \nUne fois qu&#39;un utilisateur est ajouté, son compte sera présent dans le système (confirmé par getent passwd ou sudo getent shadow), mais leur répertoire personnel n&#39;existera pas encore; le répertoire personnel est généralement créé lors de la première connexion. À ce stade, vos utilisateurs ne pourront toujours pas se connecter au cluster via SSH, car il n&#39;y a aucune entrée dans leur ~ / .ssh / clés_autorisées fichier. La connexion à l&#39;aide d&#39;un mot de passe n&#39;est pas non plus possible, à la fois parce que nous n&#39;avons pas configuré de mot de passe pour l&#39;utilisateur et parce que l&#39;authentification par mot de passe est désactivée par défaut dans la configuration du démon AWS ParallelCluster SSH.\nNotez que nous pouvons incorporer des clés SSH dans la configuration LDAP en utilisant un schéma plus complexe. Ce serait le choix le plus approprié si vous implémentez un serveur LDAP distinct fournissant des informations d&#39;identification pour plusieurs clusters ou pour d&#39;autres instances qui n&#39;ont pas de répertoires personnels partagés. Pour éviter une complexité supplémentaire dans cet exemple simple, nous allons plutôt copier une clé publique SSH, fournie par l&#39;utilisateur potentiel, à l&#39;emplacement approprié.\nEn supposant que nous soyons toujours connectés en tant que centos et ont enregistré la clé publique pour le nouveau Alice utilisateur à ~ / alice.pub, enregistrez le script suivant sous add-key.sh et exécutez via sudo ./add-key.sh alice alice.pub:\n\n#! / bin / bash\r\n\r\n# N&#39;agissez que si deux arguments sont fournis et le second est un fichier local\r\nsi [ $# -eq 2 ] &amp;&amp; [ -f \"$2\" ] ; puis\r\n  NOM D&#39;UTILISATEUR = 1 $\r\n  KEYFILE = 2 $\r\nautre\r\n  echo &quot;Utilisation:` basename $ 0`  &quot;\r\n  écho &quot; doit être un compte utilisateur &quot;\r\n  écho &quot; doit être un fichier de clé publique SSH &quot;\r\n  sortie 1\r\nFi\r\n\r\n# Créez le répertoire home et .ssh de l&#39;utilisateur, configurez le fichier authorized_keys\r\n# Notez que cela écrasera toutes les clés existantes si elles sont utilisées plusieurs fois\r\nmkhomedir_helper $ USERNAME\r\nmkdir -p /home/$USERNAME/.ssh\r\ncat $ KEYFILE&gt; /home/$USERNAME/.ssh/authorized_keys\r\nchmod 600 /home/$USERNAME/.ssh/authorized_keys\r\nchown -R $ USERNAME: utilisateurs / domicile / $ USERNAME\nLe propriétaire de la clé privée correspondante alice.pub peut maintenant SSH dans le cluster en utilisant le nom d&#39;utilisateur Alice. Grâce à l&#39;utilisation répétée de add-user.sh et add-key.sh, l&#39;administrateur du cluster peut ajouter autant de comptes supplémentaires que nécessaire en ajustant simplement les arguments de chaque script et en s&#39;assurant que chaque ensemble de nom d&#39;utilisateur, d&#39;ID utilisateur et de fichier de clé publique est unique.\nLes utilisateurs créés de cette manière ne pourront pas utiliser sudo pour assumer les privilèges root; vous devez réserver les actions administratives par défaut centos utilisateur. Pour une utilisation régulière des clusters HPC (soumission de travaux au planificateur, connexion aux nœuds de calcul via SSH à partir du contrôleur, utilisation du contenu des systèmes de fichiers locaux et réseau), ces comptes ont un comportement essentiellement identique à celui des comptes créés à l&#39;aide du adduser commander.\nConclusion\nDans cet article, nous avons décrit un mécanisme simple pour provisionner plusieurs utilisateurs dans AWS ParallelCluster à l&#39;aide d&#39;un serveur OpenLDAP installé localement sur le contrôleur. Avec une complexité minimale, nous avons configuré la structure de répertoires pour fournir un accès SSH aux utilisateurs HPC.\nImage de vedette via Pixabay.\n\n\n\n\n\n\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]","Une demande courante des utilisateurs d&#39;AWS ParallelCluster est d&#39;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX. Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à AWS Directory Service. Cependant, certains clients peuvent préférer un service d&#39;annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique. Cela élimine la nécessité d&#39;arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d&#39;Active Directory.\nUn environnement AWS ParallelCluster multi-utilisateurs est idéal pour les cas dans lesquels une équipe de scientifiques ou d&#39;ingénieurs collabore étroitement et a besoin de partager des ressources, telles que des données ou un budget de compte. L&#39;utilisation d&#39;un seul ensemble de systèmes de fichiers facilite la gestion des clusters pour l&#39;administrateur, en particulier s&#39;ils sont nouveaux sur AWS. Lorsque le temps de mise en solution et les dépenses totales doivent être soigneusement équilibrés, il est également utile de faire exécuter les tâches de plusieurs utilisateurs dans un seul planificateur.\nDans cet article, nous décrivons comment activer le service d&#39;annuaire OpenLDAP sur le nœud principal du cluster. Cette activation peut créer et synchroniser une collection locale d&#39;utilisateurs.\nLe processus documenté ici s&#39;applique aux clusters déployés à l&#39;aide du système d&#39;exploitation CentOS 7, pour AWS ParallelCluster version 2.8.1. D&#39;autres systèmes d&#39;exploitation peuvent suivre un processus similaire, mais nécessiteront des modifications mineures des commandes utilisées pour installer les packages pertinents (par exemple, en utilisant apt-get au lieu de Miam).\nAprès avoir installé et configuré l&#39;outil de ligne de commande AWS ParallelCluster, définissez les paramètres de configuration post_installer et s3_read_resource (ou s3_read_write_resource) pour permettre à un script d&#39;être exécuté sur la tête du cluster et de calculer les nœuds au moment du démarrage. Voici un exemple de fichier de configuration minimale pour déployer un cluster basé sur Slurm à l&#39;aide d&#39;instances C5n.18xlarge, parfaitement adaptées à la mise à l&#39;échelle des charges de travail HPC:","[aws]","aws_region_name = eu-west-1\n[global]\nupdate_check = vrai\nsanity_check = vrai\ncluster_template = par défaut","[cluster default]\nnom_clé = \nmaster_instance_type = c5.xlarge\ncompute_instance_type = c5n.18xlarge\nenable_efa = calculer\nplacement_group = DYNAMIQUE\nplacement = calculer\ndisable_hyperthreading = true\npost_install = s3: ///post-install.sh\ns3_read_resource = arn: aws: s3 :::/ *\ninitial_queue_size = 0\nmax_queue_size = 20\nkeep_initial_size = false\nplanificateur = slurm\ncluster_type = ondemand\nmaster_root_volume_size = 340\ncompute_root_volume_size = 340\nbase_os = centos7\nvpc_settings = std-vpc","[vpc std-vpc]\nvpc_id = \nmaster_subnet_id = \ncompute_subnet_id =","Le script de post-installation unique contient toutes les étapes d&#39;installation et de déploiement associées au serveur OpenLDAP:","#! / bin / bash\nexec&gt;&gt; (tee /var/log/post-install.log|logger -t données-utilisateur -s 2&gt; / dev / console) 2&gt; &amp; 1","### Fonctions utilitaires","install_server_packages () \n    yum -y installer openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel","prepare_ldap_server ()  awk &#39;print $ 1&#39;&gt; /root/.ldappasswd\n    chmod 400 /root/.ldappasswd\n    # Utilisez le mot de passe pour générer un hachage de mot de passe LDAP\n    LDAP_HASH = $ (slappasswd -T /root/.ldappasswd)\n    # Spécification de la configuration LDAP initiale\n    chat &lt; /root/ldapdb.ldif\ndn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcSuffix\nolcSuffix: dc = $ stack_name, dc = internal","dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootDN\nolcRootDN: cn = ldapadmin, dc = $ stack_name, dc = internal","dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootPW\nolcRootPW: $ LDAP_HASH\nEOF\n    # Appliquer les paramètres LDAP\n    ldapmodify -Y EXTERNAL -H ldapi: /// -f /root/ldapdb.ldif\n    # Appliquer les paramètres de base de données LDAP\n    cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG\n    chown ldap: ldap / var / lib / ldap / *\n    # Appliquer un ensemble minimal de schémas LDAP\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/cosine.ldif\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/nis.ldif\n    # Spécifiez une structure de répertoire minimale\n    chat &lt; /root/struct.ldif\ndn: dc = $ stack_name, dc = internal\ndc: $ stack_name\nobjectClass: haut\nobjectClass: domaine","dn: cn = ldapadmin, dc = $ stack_name, dc = internal\nobjectClass: OrganizationRole\ncn: ldapadmin\ndescription: Admin LDAP","dn: ou = Users, dc = $ stack_name, dc = internal\nobjectClass: organizationUnit\nou: Utilisateurs\nEOF\n    # Appliquer la structure des répertoires\n    ldapadd -x -W -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /root/struct.ldif -y /root/.ldappasswd\n    # Enregistrez le nom d&#39;hôte du contrôleur dans un emplacement partagé pour une utilisation ultérieure\n    echo &quot;ldap_server = $ (nom d&#39;hôte)&quot;&gt; /home/.ldap","install_client_packages () \n    miam -y installer openldap-clients nss-pam-ldapd","prepare_ldap_client () \n    source / etc / parallelcluster / cfnconfig\n    source /home/.ldap\n    authconfig --enableldap\n               --enableldapauth\n               --ldapserver = $ ldap_server\n               --ldapbasedn = &quot;dc = $ stack_name, dc = internal&quot;\n               --enablemkhomedir\n               --mettre à jour\n    systemctl redémarrage nslcd","### Corps principal","# Charger les variables d&#39;environnement depuis ParallelCluster\nsource / etc / parallelcluster / cfnconfig\n# Si le script est en cours d&#39;exécution sur le contrôleur, configurez le serveur LDAP\nsi [ $cfn_node_type  == 'MasterServer' ]; puis\n    install_server_packages\n    prepare_ldap_server","Fi","# Pour les nœuds de contrôleur et de calcul, activez l&#39;authentification LDAP\ninstall_client_packages\nprepare_ldap_client","Lorsque le script est exécuté sur l&#39;instance de contrôleur, le install_server_packages et prepare_ldap_server les fonctions s&#39;exécutent en premier, suivies de install_client_packages et prepare_ldap_client les fonctions. Toutes ces étapes se produisent pendant le processus de création de cluster initial. Lors des lancements d&#39;instance suivants (c&#39;est-à-dire lorsque le cluster évolue pour répondre aux demandes des travaux soumis), le processus de post-installation sur les nœuds de calcul exécutera uniquement le install_client_packages et prepare_ldap_client pas.\nC&#39;est tout! Une fois le lancement du cluster terminé, il sera prêt à accueillir de nouveaux utilisateurs.\nProcessus de post-installation\nAvant d&#39;ajouter des utilisateurs, parcourons le processus de post-installation étape par étape. passez à la section suivante si vous souhaitez simplement continuer à utiliser votre cluster.\nDans le prepare_ldap_server fonction, nous commençons par démarrer la giflé démon &#8211; c&#39;est le service OpenLDAP &#8211; qui maintiendra une base de données d&#39;utilisateurs et permettra aux clients de s&#39;authentifier.\nEnsuite, nous générons une chaîne aléatoire à utiliser comme mot de passe de configuration LDAP et la plaçons dans le répertoire de base racine pour réutiliser plus tard. Nous générons également un hachage approprié à partir du mot de passe à insérer dans LDAP. La configuration LDAP initiale définit le olcSuffix, olcRootDN, et olcRootPW paramètres aux valeurs que nous choisissons. Dans ce cas, les affectations de variables importantes sont cn = ldapadmin, dc = $ stack_name, dc = internal et $ LDAP_HASH.\nNous sommes libres de modifier le nom commun du compte administrateur LDAP à partir de ldapadmin à tout ce que nous choisissons, et ajustez également les composants du domaine de $ stack_name et interne selon nos propres préférences. Le point clé est de s&#39;assurer que nos valeurs choisies sont cohérentes tout au long du script. le ldapmodify La commande applique ces paramètres au service LDAP en cours d&#39;exécution.\nEnsuite, nous importons une configuration de base de données par défaut à partir des fichiers fournis avec le package de serveur LDAP, et nous assurons le LDAP l&#39;utilisateur du service possède tous les fichiers pertinents. La dernière étape de configuration du serveur consiste à définir et à appliquer une structure de répertoire utilisateur simple. Cela définit les fichiers liés les uns aux autres et leur permet d&#39;être regroupés en unités organisationnelles. Pour cet exemple minimal, nous n&#39;avons besoin que des définitions de schéma COSINE et NIS, qui sont fournies dans le cadre de l&#39;installation LDAP. Ceux-ci décrivent la configuration minimale requise pour ajouter un utilisateur à LDAP. Notre structure de répertoires (spécifiée dans le struct.ldif fichier créé en ligne) contient une seule unité organisationnelle pour nos utilisateurs AWS ParallelCluster.\nAvant de passer à la configuration du client, nous enregistrons le nom d&#39;hôte du serveur LDAP dans un emplacement partagé qui sera accessible aux clients sur les instances de calcul. Dans ce cas, nous pouvons placer un fichier dans le /Accueil répertoire, car il sera partagé avec le reste du cluster via NFS.\nle prepare_ldap_client La fonction établit la connexion entre les clients, exécutés sur l&#39;instance de contrôleur ainsi que sur toutes les futures instances de calcul, et le serveur LDAP &#8211; dans ce cas, à l&#39;aide de variables définies à la fois dans un emplacement AWS ParallelCluster standard (/ etc / parallelcluster / cfnconfig) et le /home/.ldap fichier que nous avons créé lors de la préparation du serveur.\nAjout d&#39;utilisateurs de cluster\nUne fois que l&#39;instance de contrôleur de cluster démarre et que la configuration LDAP est terminée, nous devons ajouter des utilisateurs au service d&#39;annuaire. Connectez-vous au cluster en tant qu&#39;utilisateur par défaut (centos dans ce cas) avec la commande:","pcluster ssh \nSinon, utilisez état du cluster     pour obtenir l&#39;adresse IP publique et connectez-vous à cette instance via SSH à l&#39;aide de la commande:","ssh -i  centos @\nSi vous avez utilisé une paire de clés publique / privée générée localement et stockée à l&#39;emplacement par défaut (~ / .ssh), vous pouvez omettre -je     section de la commande.\nUne fois connecté, créez un script bash avec le contenu suivant (nous appellerons ce script add-user.sh):","#! / bin / bash","# N&#39;agissez que si deux arguments sont fournis et que l&#39;UID est suffisamment élevé\nsi [ $# -eq 2 ] &amp;&amp; [ \"$2\" -eq \"$2\" ] 2&gt; / dev / null &amp;&amp; [ \"$2\" -gt 1000 ]; puis\n  NOM D&#39;UTILISATEUR = 1 $\n  USERID = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être une chaîne &quot;\n  écho &quot; doit être un entier supérieur à 1 000 &quot;\n  sortie 1\nFi","# Charger les variables d&#39;environnement qui identifient le type d&#39;instance\nsource / etc / parallelcluster / cfnconfig","# Ecrire une configuration d&#39;objet LDAP minimale pour un utilisateur\nchat &lt; /tmp/$USERNAME.ldif\ndn: uid = $ USERNAME, ou = Users, dc = $ stack_name, dc = internal\nobjectClass: haut\nobjectClass: compte\nobjectClass: posixAccount\nobjectClass: shadowAccount\ncn: $ USERNAME\nuid: $ USERNAME\nuidNumber: $ USERID\ngidNumber: 100\nhomeDirectory: / home / $ USERNAME\nloginShell: / bin / bash\nEOF","# Ajouter l&#39;utilisateur à LDAP\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /tmp/$USERNAME.ldif -y /root/.ldappasswd","# Ranger et vérifier que l&#39;entrée a réussi\nrm /tmp/$USERNAME.ldif\ngetent passwd $ 1\nRendre le script exécutable (chmod + x add-user.sh). L&#39;ajout d&#39;un utilisateur à LDAP ne nécessite pas de privilèges root en général, mais dans ce cas, notre seul enregistrement du ldapadmin le mot de passe est dans le fichier /root/.ldappasswd. Nous devrons utiliser sudo lors de l&#39;exécution du script. Transmettez votre nom d&#39;utilisateur et votre UID comme arguments, par exemple:","sudo ./add-user.sh alice 3000\nTous les utilisateurs créés de cette manière appartiendront au utilisateurs groupe (GID 100). Si nécessaire, vous pouvez modifier ce paramètre pour affecter les utilisateurs à différents groupes. Notez que la création de groupe n&#39;est pas automatique; tous les groupes personnalisés doivent être créés avant d&#39;ajouter les utilisateurs.\nAu lieu d&#39;utiliser le processus scripté décrit précédemment, vous pouvez récupérer le mot de passe LDAP du fichier et le stocker en dehors du cluster en utilisant vos mécanismes de protection par mot de passe habituels. Ensuite, vous exécuterez ldapadd sur une invite de commande en tant qu&#39;utilisateur régulier (non root). Dans ce cas, vous devrez vous assurer qu&#39;une configuration d&#39;objet LDAP valide est disponible, ainsi qu&#39;un fichier contenant le mot de passe, puis exécuter:","source / etc / parallelcluster / cfnconfig\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f  -y \nUne fois qu&#39;un utilisateur est ajouté, son compte sera présent dans le système (confirmé par getent passwd ou sudo getent shadow), mais leur répertoire personnel n&#39;existera pas encore; le répertoire personnel est généralement créé lors de la première connexion. À ce stade, vos utilisateurs ne pourront toujours pas se connecter au cluster via SSH, car il n&#39;y a aucune entrée dans leur ~ / .ssh / clés_autorisées fichier. La connexion à l&#39;aide d&#39;un mot de passe n&#39;est pas non plus possible, à la fois parce que nous n&#39;avons pas configuré de mot de passe pour l&#39;utilisateur et parce que l&#39;authentification par mot de passe est désactivée par défaut dans la configuration du démon AWS ParallelCluster SSH.\nNotez que nous pouvons incorporer des clés SSH dans la configuration LDAP en utilisant un schéma plus complexe. Ce serait le choix le plus approprié si vous implémentez un serveur LDAP distinct fournissant des informations d&#39;identification pour plusieurs clusters ou pour d&#39;autres instances qui n&#39;ont pas de répertoires personnels partagés. Pour éviter une complexité supplémentaire dans cet exemple simple, nous allons plutôt copier une clé publique SSH, fournie par l&#39;utilisateur potentiel, à l&#39;emplacement approprié.\nEn supposant que nous soyons toujours connectés en tant que centos et ont enregistré la clé publique pour le nouveau Alice utilisateur à ~ / alice.pub, enregistrez le script suivant sous add-key.sh et exécutez via sudo ./add-key.sh alice alice.pub:","#! / bin / bash","# N&#39;agissez que si deux arguments sont fournis et le second est un fichier local\nsi [ $# -eq 2 ] &amp;&amp; [ -f \"$2\" ] ; puis\n  NOM D&#39;UTILISATEUR = 1 $\n  KEYFILE = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être un compte utilisateur &quot;\n  écho &quot; doit être un fichier de clé publique SSH &quot;\n  sortie 1\nFi","# Créez le répertoire home et .ssh de l&#39;utilisateur, configurez le fichier authorized_keys\n# Notez que cela écrasera toutes les clés existantes si elles sont utilisées plusieurs fois\nmkhomedir_helper $ USERNAME\nmkdir -p /home/$USERNAME/.ssh\ncat $ KEYFILE&gt; /home/$USERNAME/.ssh/authorized_keys\nchmod 600 /home/$USERNAME/.ssh/authorized_keys\nchown -R $ USERNAME: utilisateurs / domicile / $ USERNAME\nLe propriétaire de la clé privée correspondante alice.pub peut maintenant SSH dans le cluster en utilisant le nom d&#39;utilisateur Alice. Grâce à l&#39;utilisation répétée de add-user.sh et add-key.sh, l&#39;administrateur du cluster peut ajouter autant de comptes supplémentaires que nécessaire en ajustant simplement les arguments de chaque script et en s&#39;assurant que chaque ensemble de nom d&#39;utilisateur, d&#39;ID utilisateur et de fichier de clé publique est unique.\nLes utilisateurs créés de cette manière ne pourront pas utiliser sudo pour assumer les privilèges root; vous devez réserver les actions administratives par défaut centos utilisateur. Pour une utilisation régulière des clusters HPC (soumission de travaux au planificateur, connexion aux nœuds de calcul via SSH à partir du contrôleur, utilisation du contenu des systèmes de fichiers locaux et réseau), ces comptes ont un comportement essentiellement identique à celui des comptes créés à l&#39;aide du adduser commander.\nConclusion\nDans cet article, nous avons décrit un mécanisme simple pour provisionner plusieurs utilisateurs dans AWS ParallelCluster à l&#39;aide d&#39;un serveur OpenLDAP installé localement sur le contrôleur. Avec une complexité minimale, nous avons configuré la structure de répertoires pour fournir un accès SSH aux utilisateurs HPC.\nImage de vedette via Pixabay.","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]","html":"<p>[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Une demande courante des utilisateurs d&#39;AWS ParallelCluster est d&#39;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX. Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à AWS Directory Service. Cependant, certains clients peuvent préférer un service d&#39;annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique. Cela élimine la nécessité d&#39;arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d&#39;Active Directory.\nUn environnement AWS ParallelCluster multi-utilisateurs est idéal pour les cas dans lesquels une équipe de scientifiques ou d&#39;ingénieurs collabore étroitement et a besoin de partager des ressources, telles que des données ou un budget de compte. L&#39;utilisation d&#39;un seul ensemble de systèmes de fichiers facilite la gestion des clusters pour l&#39;administrateur, en particulier s&#39;ils sont nouveaux sur AWS. Lorsque le temps de mise en solution et les dépenses totales doivent être soigneusement équilibrés, il est également utile de faire exécuter les tâches de plusieurs utilisateurs dans un seul planificateur.\nDans cet article, nous décrivons comment activer le service d&#39;annuaire OpenLDAP sur le nœud principal du cluster. Cette activation peut créer et synchroniser une collection locale d&#39;utilisateurs.\nLe processus documenté ici s&#39;applique aux clusters déployés à l&#39;aide du système d&#39;exploitation CentOS 7, pour AWS ParallelCluster version 2.8.1. D&#39;autres systèmes d&#39;exploitation peuvent suivre un processus similaire, mais nécessiteront des modifications mineures des commandes utilisées pour installer les packages pertinents (par exemple, en utilisant apt-get au lieu de Miam).\nAprès avoir installé et configuré l&#39;outil de ligne de commande AWS ParallelCluster, définissez les paramètres de configuration post_installer et s3_read_resource (ou s3_read_write_resource) pour permettre à un script d&#39;être exécuté sur la tête du cluster et de calculer les nœuds au moment du démarrage. Voici un exemple de fichier de configuration minimale pour déployer un cluster basé sur Slurm à l&#39;aide d&#39;instances C5n.18xlarge, parfaitement adaptées à la mise à l&#39;échelle des charges de travail HPC:","html":"<p>Une demande courante des utilisateurs d&#039;AWS ParallelCluster est d&#039;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX. Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à AWS Directory Service. Cependant, certains clients peuvent préférer un service d&#039;annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique. Cela élimine la nécessité d&#039;arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d&#039;Active Directory.\nUn environnement AWS ParallelCluster multi-utilisateurs est idéal pour les cas dans lesquels une équipe de scientifiques ou d&#039;ingénieurs collabore étroitement et a besoin de partager des ressources, telles que des données ou un budget de compte. L&#039;utilisation d&#039;un seul ensemble de systèmes de fichiers facilite la gestion des clusters pour l&#039;administrateur, en particulier s&#039;ils sont nouveaux sur AWS. Lorsque le temps de mise en solution et les dépenses totales doivent être soigneusement équilibrés, il est également utile de faire exécuter les tâches de plusieurs utilisateurs dans un seul planificateur.\nDans cet article, nous décrivons comment activer le service d&#039;annuaire OpenLDAP sur le nœud principal du cluster. Cette activation peut créer et synchroniser une collection locale d&#039;utilisateurs.\nLe processus documenté ici s&#039;applique aux clusters déployés à l&#039;aide du système d&#039;exploitation CentOS 7, pour AWS ParallelCluster version 2.8.1. D&#039;autres systèmes d&#039;exploitation peuvent suivre un processus similaire, mais nécessiteront des modifications mineures des commandes utilisées pour installer les packages pertinents (par exemple, en utilisant apt-get au lieu de Miam).\nAprès avoir installé et configuré l&#039;outil de ligne de commande AWS ParallelCluster, définissez les paramètres de configuration post_installer et s3_read_resource (ou s3_read_write_resource) pour permettre à un script d&#039;être exécuté sur la tête du cluster et de calculer les nœuds au moment du démarrage. Voici un exemple de fichier de configuration minimale pour déployer un cluster basé sur Slurm à l&#039;aide d&#039;instances C5n.18xlarge, parfaitement adaptées à la mise à l&#039;échelle des charges de travail HPC:</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"[aws]","html":"<p>[aws]</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"aws_region_name = eu-west-1\n[global]\nupdate_check = vrai\nsanity_check = vrai\ncluster_template = par défaut","html":"<p>aws_region_name = eu-west-1\n[global]\nupdate_check = vrai\nsanity_check = vrai\ncluster_template = par défaut</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"[cluster default]\nnom_clé = \nmaster_instance_type = c5.xlarge\ncompute_instance_type = c5n.18xlarge\nenable_efa = calculer\nplacement_group = DYNAMIQUE\nplacement = calculer\ndisable_hyperthreading = true\npost_install = s3: ///post-install.sh\ns3_read_resource = arn: aws: s3 :::/ *\ninitial_queue_size = 0\nmax_queue_size = 20\nkeep_initial_size = false\nplanificateur = slurm\ncluster_type = ondemand\nmaster_root_volume_size = 340\ncompute_root_volume_size = 340\nbase_os = centos7\nvpc_settings = std-vpc","html":"<p>[cluster default]\nnom_clé = \nmaster_instance_type = c5.xlarge\ncompute_instance_type = c5n.18xlarge\nenable_efa = calculer\nplacement_group = DYNAMIQUE\nplacement = calculer\ndisable_hyperthreading = true\npost_install = s3: ///post-install.sh\ns3_read_resource = arn: aws: s3 :::/ *\ninitial_queue_size = 0\nmax_queue_size = 20\nkeep_initial_size = false\nplanificateur = slurm\ncluster_type = ondemand\nmaster_root_volume_size = 340\ncompute_root_volume_size = 340\nbase_os = centos7\nvpc_settings = std-vpc</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"[vpc std-vpc]\nvpc_id = \nmaster_subnet_id = \ncompute_subnet_id =","html":"<p>[vpc std-vpc]\nvpc_id = \nmaster_subnet_id = \ncompute_subnet_id =</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Le script de post-installation unique contient toutes les étapes d&#39;installation et de déploiement associées au serveur OpenLDAP:","html":"<p>Le script de post-installation unique contient toutes les étapes d&#039;installation et de déploiement associées au serveur OpenLDAP:</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"#! / bin / bash\nexec&gt;&gt; (tee /var/log/post-install.log|logger -t données-utilisateur -s 2&gt; / dev / console) 2&gt; &amp; 1","html":"<p>#! / bin / bash\nexec&gt;&gt; (tee /var/log/post-install.log|logger -t données-utilisateur -s 2&gt; / dev / console) 2&gt; &amp; 1</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"### Fonctions utilitaires","html":"<p>### Fonctions utilitaires</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"install_server_packages () \n    yum -y installer openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel","html":"<p>install_server_packages () \n    yum -y installer openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"prepare_ldap_server ()  awk &#39;print $ 1&#39;&gt; /root/.ldappasswd\n    chmod 400 /root/.ldappasswd\n    # Utilisez le mot de passe pour générer un hachage de mot de passe LDAP\n    LDAP_HASH = $ (slappasswd -T /root/.ldappasswd)\n    # Spécification de la configuration LDAP initiale\n    chat &lt; /root/ldapdb.ldif\ndn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcSuffix\nolcSuffix: dc = $ stack_name, dc = internal","html":"<p>prepare_ldap_server ()  awk &#039;print $ 1&#039;&gt; /root/.ldappasswd\n    chmod 400 /root/.ldappasswd\n    # Utilisez le mot de passe pour générer un hachage de mot de passe LDAP\n    LDAP_HASH = $ (slappasswd -T /root/.ldappasswd)\n    # Spécification de la configuration LDAP initiale\n    chat &lt; /root/ldapdb.ldif\ndn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcSuffix\nolcSuffix: dc = $ stack_name, dc = internal</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootDN\nolcRootDN: cn = ldapadmin, dc = $ stack_name, dc = internal","html":"<p>dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootDN\nolcRootDN: cn = ldapadmin, dc = $ stack_name, dc = internal</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootPW\nolcRootPW: $ LDAP_HASH\nEOF\n    # Appliquer les paramètres LDAP\n    ldapmodify -Y EXTERNAL -H ldapi: /// -f /root/ldapdb.ldif\n    # Appliquer les paramètres de base de données LDAP\n    cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG\n    chown ldap: ldap / var / lib / ldap / *\n    # Appliquer un ensemble minimal de schémas LDAP\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/cosine.ldif\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/nis.ldif\n    # Spécifiez une structure de répertoire minimale\n    chat &lt; /root/struct.ldif\ndn: dc = $ stack_name, dc = internal\ndc: $ stack_name\nobjectClass: haut\nobjectClass: domaine","html":"<p>dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootPW\nolcRootPW: $ LDAP_HASH\nEOF\n    # Appliquer les paramètres LDAP\n    ldapmodify -Y EXTERNAL -H ldapi: /// -f /root/ldapdb.ldif\n    # Appliquer les paramètres de base de données LDAP\n    cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG\n    chown ldap: ldap / var / lib / ldap / *\n    # Appliquer un ensemble minimal de schémas LDAP\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/cosine.ldif\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/nis.ldif\n    # Spécifiez une structure de répertoire minimale\n    chat &lt; /root/struct.ldif\ndn: dc = $ stack_name, dc = internal\ndc: $ stack_name\nobjectClass: haut\nobjectClass: domaine</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"dn: cn = ldapadmin, dc = $ stack_name, dc = internal\nobjectClass: OrganizationRole\ncn: ldapadmin\ndescription: Admin LDAP","html":"<p>dn: cn = ldapadmin, dc = $ stack_name, dc = internal\nobjectClass: OrganizationRole\ncn: ldapadmin\ndescription: Admin LDAP</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"dn: ou = Users, dc = $ stack_name, dc = internal\nobjectClass: organizationUnit\nou: Utilisateurs\nEOF\n    # Appliquer la structure des répertoires\n    ldapadd -x -W -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /root/struct.ldif -y /root/.ldappasswd\n    # Enregistrez le nom d&#39;hôte du contrôleur dans un emplacement partagé pour une utilisation ultérieure\n    echo &quot;ldap_server = $ (nom d&#39;hôte)&quot;&gt; /home/.ldap","html":"<p>dn: ou = Users, dc = $ stack_name, dc = internal\nobjectClass: organizationUnit\nou: Utilisateurs\nEOF\n    # Appliquer la structure des répertoires\n    ldapadd -x -W -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /root/struct.ldif -y /root/.ldappasswd\n    # Enregistrez le nom d&#039;hôte du contrôleur dans un emplacement partagé pour une utilisation ultérieure\n    echo &quot;ldap_server = $ (nom d&#039;hôte)&quot;&gt; /home/.ldap</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"install_client_packages () \n    miam -y installer openldap-clients nss-pam-ldapd","html":"<p>install_client_packages () \n    miam -y installer openldap-clients nss-pam-ldapd</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"prepare_ldap_client () \n    source / etc / parallelcluster / cfnconfig\n    source /home/.ldap\n    authconfig --enableldap\n               --enableldapauth\n               --ldapserver = $ ldap_server\n               --ldapbasedn = &quot;dc = $ stack_name, dc = internal&quot;\n               --enablemkhomedir\n               --mettre à jour\n    systemctl redémarrage nslcd","html":"<p>prepare_ldap_client () \n    source / etc / parallelcluster / cfnconfig\n    source /home/.ldap\n    authconfig --enableldap\n               --enableldapauth\n               --ldapserver = $ ldap_server\n               --ldapbasedn = &quot;dc = $ stack_name, dc = internal&quot;\n               --enablemkhomedir\n               --mettre à jour\n    systemctl redémarrage nslcd</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"### Corps principal","html":"<p>### Corps principal</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"# Charger les variables d&#39;environnement depuis ParallelCluster\nsource / etc / parallelcluster / cfnconfig\n# Si le script est en cours d&#39;exécution sur le contrôleur, configurez le serveur LDAP\nsi [ $cfn_node_type  == 'MasterServer' ]; puis\n    install_server_packages\n    prepare_ldap_server","html":"<p># Charger les variables d&#039;environnement depuis ParallelCluster\nsource / etc / parallelcluster / cfnconfig\n# Si le script est en cours d&#039;exécution sur le contrôleur, configurez le serveur LDAP\nsi [ $cfn_node_type  == &#039;MasterServer&#039; ]; puis\n    install_server_packages\n    prepare_ldap_server</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"Fi","html":"<p>Fi</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"# Pour les nœuds de contrôleur et de calcul, activez l&#39;authentification LDAP\ninstall_client_packages\nprepare_ldap_client","html":"<p># Pour les nœuds de contrôleur et de calcul, activez l&#039;authentification LDAP\ninstall_client_packages\nprepare_ldap_client</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"Lorsque le script est exécuté sur l&#39;instance de contrôleur, le install_server_packages et prepare_ldap_server les fonctions s&#39;exécutent en premier, suivies de install_client_packages et prepare_ldap_client les fonctions. Toutes ces étapes se produisent pendant le processus de création de cluster initial. Lors des lancements d&#39;instance suivants (c&#39;est-à-dire lorsque le cluster évolue pour répondre aux demandes des travaux soumis), le processus de post-installation sur les nœuds de calcul exécutera uniquement le install_client_packages et prepare_ldap_client pas.\nC&#39;est tout! Une fois le lancement du cluster terminé, il sera prêt à accueillir de nouveaux utilisateurs.\nProcessus de post-installation\nAvant d&#39;ajouter des utilisateurs, parcourons le processus de post-installation étape par étape. passez à la section suivante si vous souhaitez simplement continuer à utiliser votre cluster.\nDans le prepare_ldap_server fonction, nous commençons par démarrer la giflé démon &#8211; c&#39;est le service OpenLDAP &#8211; qui maintiendra une base de données d&#39;utilisateurs et permettra aux clients de s&#39;authentifier.\nEnsuite, nous générons une chaîne aléatoire à utiliser comme mot de passe de configuration LDAP et la plaçons dans le répertoire de base racine pour réutiliser plus tard. Nous générons également un hachage approprié à partir du mot de passe à insérer dans LDAP. La configuration LDAP initiale définit le olcSuffix, olcRootDN, et olcRootPW paramètres aux valeurs que nous choisissons. Dans ce cas, les affectations de variables importantes sont cn = ldapadmin, dc = $ stack_name, dc = internal et $ LDAP_HASH.\nNous sommes libres de modifier le nom commun du compte administrateur LDAP à partir de ldapadmin à tout ce que nous choisissons, et ajustez également les composants du domaine de $ stack_name et interne selon nos propres préférences. Le point clé est de s&#39;assurer que nos valeurs choisies sont cohérentes tout au long du script. le ldapmodify La commande applique ces paramètres au service LDAP en cours d&#39;exécution.\nEnsuite, nous importons une configuration de base de données par défaut à partir des fichiers fournis avec le package de serveur LDAP, et nous assurons le LDAP l&#39;utilisateur du service possède tous les fichiers pertinents. La dernière étape de configuration du serveur consiste à définir et à appliquer une structure de répertoire utilisateur simple. Cela définit les fichiers liés les uns aux autres et leur permet d&#39;être regroupés en unités organisationnelles. Pour cet exemple minimal, nous n&#39;avons besoin que des définitions de schéma COSINE et NIS, qui sont fournies dans le cadre de l&#39;installation LDAP. Ceux-ci décrivent la configuration minimale requise pour ajouter un utilisateur à LDAP. Notre structure de répertoires (spécifiée dans le struct.ldif fichier créé en ligne) contient une seule unité organisationnelle pour nos utilisateurs AWS ParallelCluster.\nAvant de passer à la configuration du client, nous enregistrons le nom d&#39;hôte du serveur LDAP dans un emplacement partagé qui sera accessible aux clients sur les instances de calcul. Dans ce cas, nous pouvons placer un fichier dans le /Accueil répertoire, car il sera partagé avec le reste du cluster via NFS.\nle prepare_ldap_client La fonction établit la connexion entre les clients, exécutés sur l&#39;instance de contrôleur ainsi que sur toutes les futures instances de calcul, et le serveur LDAP &#8211; dans ce cas, à l&#39;aide de variables définies à la fois dans un emplacement AWS ParallelCluster standard (/ etc / parallelcluster / cfnconfig) et le /home/.ldap fichier que nous avons créé lors de la préparation du serveur.\nAjout d&#39;utilisateurs de cluster\nUne fois que l&#39;instance de contrôleur de cluster démarre et que la configuration LDAP est terminée, nous devons ajouter des utilisateurs au service d&#39;annuaire. Connectez-vous au cluster en tant qu&#39;utilisateur par défaut (centos dans ce cas) avec la commande:","html":"<p>Lorsque le script est exécuté sur l&#039;instance de contrôleur, le install_server_packages et prepare_ldap_server les fonctions s&#039;exécutent en premier, suivies de install_client_packages et prepare_ldap_client les fonctions. Toutes ces étapes se produisent pendant le processus de création de cluster initial. Lors des lancements d&#039;instance suivants (c&#039;est-à-dire lorsque le cluster évolue pour répondre aux demandes des travaux soumis), le processus de post-installation sur les nœuds de calcul exécutera uniquement le install_client_packages et prepare_ldap_client pas.\nC&#039;est tout! Une fois le lancement du cluster terminé, il sera prêt à accueillir de nouveaux utilisateurs.\nProcessus de post-installation\nAvant d&#039;ajouter des utilisateurs, parcourons le processus de post-installation étape par étape. passez à la section suivante si vous souhaitez simplement continuer à utiliser votre cluster.\nDans le prepare_ldap_server fonction, nous commençons par démarrer la giflé démon &#8211; c&#039;est le service OpenLDAP &#8211; qui maintiendra une base de données d&#039;utilisateurs et permettra aux clients de s&#039;authentifier.\nEnsuite, nous générons une chaîne aléatoire à utiliser comme mot de passe de configuration LDAP et la plaçons dans le répertoire de base racine pour réutiliser plus tard. Nous générons également un hachage approprié à partir du mot de passe à insérer dans LDAP. La configuration LDAP initiale définit le olcSuffix, olcRootDN, et olcRootPW paramètres aux valeurs que nous choisissons. Dans ce cas, les affectations de variables importantes sont cn = ldapadmin, dc = $ stack_name, dc = internal et $ LDAP_HASH.\nNous sommes libres de modifier le nom commun du compte administrateur LDAP à partir de ldapadmin à tout ce que nous choisissons, et ajustez également les composants du domaine de $ stack_name et interne selon nos propres préférences. Le point clé est de s&#039;assurer que nos valeurs choisies sont cohérentes tout au long du script. le ldapmodify La commande applique ces paramètres au service LDAP en cours d&#039;exécution.\nEnsuite, nous importons une configuration de base de données par défaut à partir des fichiers fournis avec le package de serveur LDAP, et nous assurons le LDAP l&#039;utilisateur du service possède tous les fichiers pertinents. La dernière étape de configuration du serveur consiste à définir et à appliquer une structure de répertoire utilisateur simple. Cela définit les fichiers liés les uns aux autres et leur permet d&#039;être regroupés en unités organisationnelles. Pour cet exemple minimal, nous n&#039;avons besoin que des définitions de schéma COSINE et NIS, qui sont fournies dans le cadre de l&#039;installation LDAP. Ceux-ci décrivent la configuration minimale requise pour ajouter un utilisateur à LDAP. Notre structure de répertoires (spécifiée dans le struct.ldif fichier créé en ligne) contient une seule unité organisationnelle pour nos utilisateurs AWS ParallelCluster.\nAvant de passer à la configuration du client, nous enregistrons le nom d&#039;hôte du serveur LDAP dans un emplacement partagé qui sera accessible aux clients sur les instances de calcul. Dans ce cas, nous pouvons placer un fichier dans le /Accueil répertoire, car il sera partagé avec le reste du cluster via NFS.\nle prepare_ldap_client La fonction établit la connexion entre les clients, exécutés sur l&#039;instance de contrôleur ainsi que sur toutes les futures instances de calcul, et le serveur LDAP &#8211; dans ce cas, à l&#039;aide de variables définies à la fois dans un emplacement AWS ParallelCluster standard (/ etc / parallelcluster / cfnconfig) et le /home/.ldap fichier que nous avons créé lors de la préparation du serveur.\nAjout d&#039;utilisateurs de cluster\nUne fois que l&#039;instance de contrôleur de cluster démarre et que la configuration LDAP est terminée, nous devons ajouter des utilisateurs au service d&#039;annuaire. Connectez-vous au cluster en tant qu&#039;utilisateur par défaut (centos dans ce cas) avec la commande:</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"pcluster ssh \nSinon, utilisez état du cluster     pour obtenir l&#39;adresse IP publique et connectez-vous à cette instance via SSH à l&#39;aide de la commande:","html":"<p>pcluster ssh \nSinon, utilisez état du cluster     pour obtenir l&#039;adresse IP publique et connectez-vous à cette instance via SSH à l&#039;aide de la commande:</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"ssh -i  centos @\nSi vous avez utilisé une paire de clés publique / privée générée localement et stockée à l&#39;emplacement par défaut (~ / .ssh), vous pouvez omettre -je     section de la commande.\nUne fois connecté, créez un script bash avec le contenu suivant (nous appellerons ce script add-user.sh):","html":"<p>ssh -i  centos @\nSi vous avez utilisé une paire de clés publique / privée générée localement et stockée à l&#039;emplacement par défaut (~ / .ssh), vous pouvez omettre -je     section de la commande.\nUne fois connecté, créez un script bash avec le contenu suivant (nous appellerons ce script add-user.sh):</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"#! / bin / bash","html":"<p>#! / bin / bash</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"# N&#39;agissez que si deux arguments sont fournis et que l&#39;UID est suffisamment élevé\nsi [ $# -eq 2 ] &amp;&amp; [ \"$2\" -eq \"$2\" ] 2&gt; / dev / null &amp;&amp; [ \"$2\" -gt 1000 ]; puis\n  NOM D&#39;UTILISATEUR = 1 $\n  USERID = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être une chaîne &quot;\n  écho &quot; doit être un entier supérieur à 1 000 &quot;\n  sortie 1\nFi","html":"<p># N&#039;agissez que si deux arguments sont fournis et que l&#039;UID est suffisamment élevé\nsi [ $# -eq 2 ] &amp;&amp; [ &quot;$2&quot; -eq &quot;$2&quot; ] 2&gt; / dev / null &amp;&amp; [ &quot;$2&quot; -gt 1000 ]; puis\n  NOM D&#039;UTILISATEUR = 1 $\n  USERID = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être une chaîne &quot;\n  écho &quot; doit être un entier supérieur à 1 000 &quot;\n  sortie 1\nFi</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"# Charger les variables d&#39;environnement qui identifient le type d&#39;instance\nsource / etc / parallelcluster / cfnconfig","html":"<p># Charger les variables d&#039;environnement qui identifient le type d&#039;instance\nsource / etc / parallelcluster / cfnconfig</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"# Ecrire une configuration d&#39;objet LDAP minimale pour un utilisateur\nchat &lt; /tmp/$USERNAME.ldif\ndn: uid = $ USERNAME, ou = Users, dc = $ stack_name, dc = internal\nobjectClass: haut\nobjectClass: compte\nobjectClass: posixAccount\nobjectClass: shadowAccount\ncn: $ USERNAME\nuid: $ USERNAME\nuidNumber: $ USERID\ngidNumber: 100\nhomeDirectory: / home / $ USERNAME\nloginShell: / bin / bash\nEOF","html":"<p># Ecrire une configuration d&#039;objet LDAP minimale pour un utilisateur\nchat &lt; /tmp/$USERNAME.ldif\ndn: uid = $ USERNAME, ou = Users, dc = $ stack_name, dc = internal\nobjectClass: haut\nobjectClass: compte\nobjectClass: posixAccount\nobjectClass: shadowAccount\ncn: $ USERNAME\nuid: $ USERNAME\nuidNumber: $ USERID\ngidNumber: 100\nhomeDirectory: / home / $ USERNAME\nloginShell: / bin / bash\nEOF</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"# Ajouter l&#39;utilisateur à LDAP\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /tmp/$USERNAME.ldif -y /root/.ldappasswd","html":"<p># Ajouter l&#039;utilisateur à LDAP\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /tmp/$USERNAME.ldif -y /root/.ldappasswd</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"# Ranger et vérifier que l&#39;entrée a réussi\nrm /tmp/$USERNAME.ldif\ngetent passwd $ 1\nRendre le script exécutable (chmod + x add-user.sh). L&#39;ajout d&#39;un utilisateur à LDAP ne nécessite pas de privilèges root en général, mais dans ce cas, notre seul enregistrement du ldapadmin le mot de passe est dans le fichier /root/.ldappasswd. Nous devrons utiliser sudo lors de l&#39;exécution du script. Transmettez votre nom d&#39;utilisateur et votre UID comme arguments, par exemple:","html":"<p># Ranger et vérifier que l&#039;entrée a réussi\nrm /tmp/$USERNAME.ldif\ngetent passwd $ 1\nRendre le script exécutable (chmod + x add-user.sh). L&#039;ajout d&#039;un utilisateur à LDAP ne nécessite pas de privilèges root en général, mais dans ce cas, notre seul enregistrement du ldapadmin le mot de passe est dans le fichier /root/.ldappasswd. Nous devrons utiliser sudo lors de l&#039;exécution du script. Transmettez votre nom d&#039;utilisateur et votre UID comme arguments, par exemple:</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"sudo ./add-user.sh alice 3000\nTous les utilisateurs créés de cette manière appartiendront au utilisateurs groupe (GID 100). Si nécessaire, vous pouvez modifier ce paramètre pour affecter les utilisateurs à différents groupes. Notez que la création de groupe n&#39;est pas automatique; tous les groupes personnalisés doivent être créés avant d&#39;ajouter les utilisateurs.\nAu lieu d&#39;utiliser le processus scripté décrit précédemment, vous pouvez récupérer le mot de passe LDAP du fichier et le stocker en dehors du cluster en utilisant vos mécanismes de protection par mot de passe habituels. Ensuite, vous exécuterez ldapadd sur une invite de commande en tant qu&#39;utilisateur régulier (non root). Dans ce cas, vous devrez vous assurer qu&#39;une configuration d&#39;objet LDAP valide est disponible, ainsi qu&#39;un fichier contenant le mot de passe, puis exécuter:","html":"<p>sudo ./add-user.sh alice 3000\nTous les utilisateurs créés de cette manière appartiendront au utilisateurs groupe (GID 100). Si nécessaire, vous pouvez modifier ce paramètre pour affecter les utilisateurs à différents groupes. Notez que la création de groupe n&#039;est pas automatique; tous les groupes personnalisés doivent être créés avant d&#039;ajouter les utilisateurs.\nAu lieu d&#039;utiliser le processus scripté décrit précédemment, vous pouvez récupérer le mot de passe LDAP du fichier et le stocker en dehors du cluster en utilisant vos mécanismes de protection par mot de passe habituels. Ensuite, vous exécuterez ldapadd sur une invite de commande en tant qu&#039;utilisateur régulier (non root). Dans ce cas, vous devrez vous assurer qu&#039;une configuration d&#039;objet LDAP valide est disponible, ainsi qu&#039;un fichier contenant le mot de passe, puis exécuter:</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"source / etc / parallelcluster / cfnconfig\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f  -y \nUne fois qu&#39;un utilisateur est ajouté, son compte sera présent dans le système (confirmé par getent passwd ou sudo getent shadow), mais leur répertoire personnel n&#39;existera pas encore; le répertoire personnel est généralement créé lors de la première connexion. À ce stade, vos utilisateurs ne pourront toujours pas se connecter au cluster via SSH, car il n&#39;y a aucune entrée dans leur ~ / .ssh / clés_autorisées fichier. La connexion à l&#39;aide d&#39;un mot de passe n&#39;est pas non plus possible, à la fois parce que nous n&#39;avons pas configuré de mot de passe pour l&#39;utilisateur et parce que l&#39;authentification par mot de passe est désactivée par défaut dans la configuration du démon AWS ParallelCluster SSH.\nNotez que nous pouvons incorporer des clés SSH dans la configuration LDAP en utilisant un schéma plus complexe. Ce serait le choix le plus approprié si vous implémentez un serveur LDAP distinct fournissant des informations d&#39;identification pour plusieurs clusters ou pour d&#39;autres instances qui n&#39;ont pas de répertoires personnels partagés. Pour éviter une complexité supplémentaire dans cet exemple simple, nous allons plutôt copier une clé publique SSH, fournie par l&#39;utilisateur potentiel, à l&#39;emplacement approprié.\nEn supposant que nous soyons toujours connectés en tant que centos et ont enregistré la clé publique pour le nouveau Alice utilisateur à ~ / alice.pub, enregistrez le script suivant sous add-key.sh et exécutez via sudo ./add-key.sh alice alice.pub:","html":"<p>source / etc / parallelcluster / cfnconfig\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f  -y \nUne fois qu&#039;un utilisateur est ajouté, son compte sera présent dans le système (confirmé par getent passwd ou sudo getent shadow), mais leur répertoire personnel n&#039;existera pas encore; le répertoire personnel est généralement créé lors de la première connexion. À ce stade, vos utilisateurs ne pourront toujours pas se connecter au cluster via SSH, car il n&#039;y a aucune entrée dans leur ~ / .ssh / clés_autorisées fichier. La connexion à l&#039;aide d&#039;un mot de passe n&#039;est pas non plus possible, à la fois parce que nous n&#039;avons pas configuré de mot de passe pour l&#039;utilisateur et parce que l&#039;authentification par mot de passe est désactivée par défaut dans la configuration du démon AWS ParallelCluster SSH.\nNotez que nous pouvons incorporer des clés SSH dans la configuration LDAP en utilisant un schéma plus complexe. Ce serait le choix le plus approprié si vous implémentez un serveur LDAP distinct fournissant des informations d&#039;identification pour plusieurs clusters ou pour d&#039;autres instances qui n&#039;ont pas de répertoires personnels partagés. Pour éviter une complexité supplémentaire dans cet exemple simple, nous allons plutôt copier une clé publique SSH, fournie par l&#039;utilisateur potentiel, à l&#039;emplacement approprié.\nEn supposant que nous soyons toujours connectés en tant que centos et ont enregistré la clé publique pour le nouveau Alice utilisateur à ~ / alice.pub, enregistrez le script suivant sous add-key.sh et exécutez via sudo ./add-key.sh alice alice.pub:</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"#! / bin / bash","html":"<p>#! / bin / bash</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"# N&#39;agissez que si deux arguments sont fournis et le second est un fichier local\nsi [ $# -eq 2 ] &amp;&amp; [ -f \"$2\" ] ; puis\n  NOM D&#39;UTILISATEUR = 1 $\n  KEYFILE = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être un compte utilisateur &quot;\n  écho &quot; doit être un fichier de clé publique SSH &quot;\n  sortie 1\nFi","html":"<p># N&#039;agissez que si deux arguments sont fournis et le second est un fichier local\nsi [ $# -eq 2 ] &amp;&amp; [ -f &quot;$2&quot; ] ; puis\n  NOM D&#039;UTILISATEUR = 1 $\n  KEYFILE = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être un compte utilisateur &quot;\n  écho &quot; doit être un fichier de clé publique SSH &quot;\n  sortie 1\nFi</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"# Créez le répertoire home et .ssh de l&#39;utilisateur, configurez le fichier authorized_keys\n# Notez que cela écrasera toutes les clés existantes si elles sont utilisées plusieurs fois\nmkhomedir_helper $ USERNAME\nmkdir -p /home/$USERNAME/.ssh\ncat $ KEYFILE&gt; /home/$USERNAME/.ssh/authorized_keys\nchmod 600 /home/$USERNAME/.ssh/authorized_keys\nchown -R $ USERNAME: utilisateurs / domicile / $ USERNAME\nLe propriétaire de la clé privée correspondante alice.pub peut maintenant SSH dans le cluster en utilisant le nom d&#39;utilisateur Alice. Grâce à l&#39;utilisation répétée de add-user.sh et add-key.sh, l&#39;administrateur du cluster peut ajouter autant de comptes supplémentaires que nécessaire en ajustant simplement les arguments de chaque script et en s&#39;assurant que chaque ensemble de nom d&#39;utilisateur, d&#39;ID utilisateur et de fichier de clé publique est unique.\nLes utilisateurs créés de cette manière ne pourront pas utiliser sudo pour assumer les privilèges root; vous devez réserver les actions administratives par défaut centos utilisateur. Pour une utilisation régulière des clusters HPC (soumission de travaux au planificateur, connexion aux nœuds de calcul via SSH à partir du contrôleur, utilisation du contenu des systèmes de fichiers locaux et réseau), ces comptes ont un comportement essentiellement identique à celui des comptes créés à l&#39;aide du adduser commander.\nConclusion\nDans cet article, nous avons décrit un mécanisme simple pour provisionner plusieurs utilisateurs dans AWS ParallelCluster à l&#39;aide d&#39;un serveur OpenLDAP installé localement sur le contrôleur. Avec une complexité minimale, nous avons configuré la structure de répertoires pour fournir un accès SSH aux utilisateurs HPC.\nImage de vedette via Pixabay.","html":"<p># Créez le répertoire home et .ssh de l&#039;utilisateur, configurez le fichier authorized_keys\n# Notez que cela écrasera toutes les clés existantes si elles sont utilisées plusieurs fois\nmkhomedir_helper $ USERNAME\nmkdir -p /home/$USERNAME/.ssh\ncat $ KEYFILE&gt; /home/$USERNAME/.ssh/authorized_keys\nchmod 600 /home/$USERNAME/.ssh/authorized_keys\nchown -R $ USERNAME: utilisateurs / domicile / $ USERNAME\nLe propriétaire de la clé privée correspondante alice.pub peut maintenant SSH dans le cluster en utilisant le nom d&#039;utilisateur Alice. Grâce à l&#039;utilisation répétée de add-user.sh et add-key.sh, l&#039;administrateur du cluster peut ajouter autant de comptes supplémentaires que nécessaire en ajustant simplement les arguments de chaque script et en s&#039;assurant que chaque ensemble de nom d&#039;utilisateur, d&#039;ID utilisateur et de fichier de clé publique est unique.\nLes utilisateurs créés de cette manière ne pourront pas utiliser sudo pour assumer les privilèges root; vous devez réserver les actions administratives par défaut centos utilisateur. Pour une utilisation régulière des clusters HPC (soumission de travaux au planificateur, connexion aux nœuds de calcul via SSH à partir du contrôleur, utilisation du contenu des systèmes de fichiers locaux et réseau), ces comptes ont un comportement essentiellement identique à celui des comptes créés à l&#039;aide du adduser commander.\nConclusion\nDans cet article, nous avons décrit un mécanisme simple pour provisionner plusieurs utilisateurs dans AWS ParallelCluster à l&#039;aide d&#039;un serveur OpenLDAP installé localement sur le contrôleur. Avec une complexité minimale, nous avons configuré la structure de répertoires pour fournir un accès SSH aux utilisateurs HPC.\nImage de vedette via Pixabay.</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]"},{"id":"text-2","heading":"Text","content":"Une demande courante des utilisateurs d&#39;AWS ParallelCluster est d&#39;avoir la possibilité de déployer plusieurs comptes utilisateur POSIX. Le wiki sur la page GitHub du projet décrit un mécanisme simple pour y parvenir, et un article de blog précédent, «AWS ParallelCluster avec AWS Directory Services Authentication», explique comment intégrer AWS ParallelCluster à AWS Directory Service. Cependant, certains clients peuvent préférer un service d&#39;annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique. Cela élimine la nécessité d&#39;arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d&#39;Active Directory.\nUn environnement AWS ParallelCluster multi-utilisateurs est idéal pour les cas dans lesquels une équipe de scientifiques ou d&#39;ingénieurs collabore étroitement et a besoin de partager des ressources, telles que des données ou un budget de compte. L&#39;utilisation d&#39;un seul ensemble de systèmes de fichiers facilite la gestion des clusters pour l&#39;administrateur, en particulier s&#39;ils sont nouveaux sur AWS. Lorsque le temps de mise en solution et les dépenses totales doivent être soigneusement équilibrés, il est également utile de faire exécuter les tâches de plusieurs utilisateurs dans un seul planificateur.\nDans cet article, nous décrivons comment activer le service d&#39;annuaire OpenLDAP sur le nœud principal du cluster. Cette activation peut créer et synchroniser une collection locale d&#39;utilisateurs.\nLe processus documenté ici s&#39;applique aux clusters déployés à l&#39;aide du système d&#39;exploitation CentOS 7, pour AWS ParallelCluster version 2.8.1. D&#39;autres systèmes d&#39;exploitation peuvent suivre un processus similaire, mais nécessiteront des modifications mineures des commandes utilisées pour installer les packages pertinents (par exemple, en utilisant apt-get au lieu de Miam).\nAprès avoir installé et configuré l&#39;outil de ligne de commande AWS ParallelCluster, définissez les paramètres de configuration post_installer et s3_read_resource (ou s3_read_write_resource) pour permettre à un script d&#39;être exécuté sur la tête du cluster et de calculer les nœuds au moment du démarrage. Voici un exemple de fichier de configuration minimale pour déployer un cluster basé sur Slurm à l&#39;aide d&#39;instances C5n.18xlarge, parfaitement adaptées à la mise à l&#39;échelle des charges de travail HPC:"},{"id":"text-3","heading":"Text","content":"[aws]"},{"id":"text-4","heading":"Text","content":"aws_region_name = eu-west-1\n[global]\nupdate_check = vrai\nsanity_check = vrai\ncluster_template = par défaut"},{"id":"text-5","heading":"Text","content":"[cluster default]\nnom_clé = \nmaster_instance_type = c5.xlarge\ncompute_instance_type = c5n.18xlarge\nenable_efa = calculer\nplacement_group = DYNAMIQUE\nplacement = calculer\ndisable_hyperthreading = true\npost_install = s3: ///post-install.sh\ns3_read_resource = arn: aws: s3 :::/ *\ninitial_queue_size = 0\nmax_queue_size = 20\nkeep_initial_size = false\nplanificateur = slurm\ncluster_type = ondemand\nmaster_root_volume_size = 340\ncompute_root_volume_size = 340\nbase_os = centos7\nvpc_settings = std-vpc"},{"id":"text-6","heading":"Text","content":"[vpc std-vpc]\nvpc_id = \nmaster_subnet_id = \ncompute_subnet_id ="},{"id":"text-7","heading":"Text","content":"Le script de post-installation unique contient toutes les étapes d&#39;installation et de déploiement associées au serveur OpenLDAP:"},{"id":"text-8","heading":"Text","content":"#! / bin / bash\nexec&gt;&gt; (tee /var/log/post-install.log|logger -t données-utilisateur -s 2&gt; / dev / console) 2&gt; &amp; 1"},{"id":"text-9","heading":"Text","content":"### Fonctions utilitaires"},{"id":"text-10","heading":"Text","content":"install_server_packages () \n    yum -y installer openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel"},{"id":"text-11","heading":"Text","content":"prepare_ldap_server ()  awk &#39;print $ 1&#39;&gt; /root/.ldappasswd\n    chmod 400 /root/.ldappasswd\n    # Utilisez le mot de passe pour générer un hachage de mot de passe LDAP\n    LDAP_HASH = $ (slappasswd -T /root/.ldappasswd)\n    # Spécification de la configuration LDAP initiale\n    chat &lt; /root/ldapdb.ldif\ndn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcSuffix\nolcSuffix: dc = $ stack_name, dc = internal"},{"id":"text-12","heading":"Text","content":"dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootDN\nolcRootDN: cn = ldapadmin, dc = $ stack_name, dc = internal"},{"id":"text-13","heading":"Text","content":"dn: olcDatabase = 2 hdb, cn = config\ntype de changement: modifier\nremplacer: olcRootPW\nolcRootPW: $ LDAP_HASH\nEOF\n    # Appliquer les paramètres LDAP\n    ldapmodify -Y EXTERNAL -H ldapi: /// -f /root/ldapdb.ldif\n    # Appliquer les paramètres de base de données LDAP\n    cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG\n    chown ldap: ldap / var / lib / ldap / *\n    # Appliquer un ensemble minimal de schémas LDAP\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/cosine.ldif\n    ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/nis.ldif\n    # Spécifiez une structure de répertoire minimale\n    chat &lt; /root/struct.ldif\ndn: dc = $ stack_name, dc = internal\ndc: $ stack_name\nobjectClass: haut\nobjectClass: domaine"},{"id":"text-14","heading":"Text","content":"dn: cn = ldapadmin, dc = $ stack_name, dc = internal\nobjectClass: OrganizationRole\ncn: ldapadmin\ndescription: Admin LDAP"},{"id":"text-15","heading":"Text","content":"dn: ou = Users, dc = $ stack_name, dc = internal\nobjectClass: organizationUnit\nou: Utilisateurs\nEOF\n    # Appliquer la structure des répertoires\n    ldapadd -x -W -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /root/struct.ldif -y /root/.ldappasswd\n    # Enregistrez le nom d&#39;hôte du contrôleur dans un emplacement partagé pour une utilisation ultérieure\n    echo &quot;ldap_server = $ (nom d&#39;hôte)&quot;&gt; /home/.ldap"},{"id":"text-16","heading":"Text","content":"install_client_packages () \n    miam -y installer openldap-clients nss-pam-ldapd"},{"id":"text-17","heading":"Text","content":"prepare_ldap_client () \n    source / etc / parallelcluster / cfnconfig\n    source /home/.ldap\n    authconfig --enableldap\n               --enableldapauth\n               --ldapserver = $ ldap_server\n               --ldapbasedn = &quot;dc = $ stack_name, dc = internal&quot;\n               --enablemkhomedir\n               --mettre à jour\n    systemctl redémarrage nslcd"},{"id":"text-18","heading":"Text","content":"### Corps principal"},{"id":"text-19","heading":"Text","content":"# Charger les variables d&#39;environnement depuis ParallelCluster\nsource / etc / parallelcluster / cfnconfig\n# Si le script est en cours d&#39;exécution sur le contrôleur, configurez le serveur LDAP\nsi [ $cfn_node_type  == 'MasterServer' ]; puis\n    install_server_packages\n    prepare_ldap_server"},{"id":"text-20","heading":"Text","content":"Fi"},{"id":"text-21","heading":"Text","content":"# Pour les nœuds de contrôleur et de calcul, activez l&#39;authentification LDAP\ninstall_client_packages\nprepare_ldap_client"},{"id":"text-22","heading":"Text","content":"Lorsque le script est exécuté sur l&#39;instance de contrôleur, le install_server_packages et prepare_ldap_server les fonctions s&#39;exécutent en premier, suivies de install_client_packages et prepare_ldap_client les fonctions. Toutes ces étapes se produisent pendant le processus de création de cluster initial. Lors des lancements d&#39;instance suivants (c&#39;est-à-dire lorsque le cluster évolue pour répondre aux demandes des travaux soumis), le processus de post-installation sur les nœuds de calcul exécutera uniquement le install_client_packages et prepare_ldap_client pas.\nC&#39;est tout! Une fois le lancement du cluster terminé, il sera prêt à accueillir de nouveaux utilisateurs.\nProcessus de post-installation\nAvant d&#39;ajouter des utilisateurs, parcourons le processus de post-installation étape par étape. passez à la section suivante si vous souhaitez simplement continuer à utiliser votre cluster.\nDans le prepare_ldap_server fonction, nous commençons par démarrer la giflé démon &#8211; c&#39;est le service OpenLDAP &#8211; qui maintiendra une base de données d&#39;utilisateurs et permettra aux clients de s&#39;authentifier.\nEnsuite, nous générons une chaîne aléatoire à utiliser comme mot de passe de configuration LDAP et la plaçons dans le répertoire de base racine pour réutiliser plus tard. Nous générons également un hachage approprié à partir du mot de passe à insérer dans LDAP. La configuration LDAP initiale définit le olcSuffix, olcRootDN, et olcRootPW paramètres aux valeurs que nous choisissons. Dans ce cas, les affectations de variables importantes sont cn = ldapadmin, dc = $ stack_name, dc = internal et $ LDAP_HASH.\nNous sommes libres de modifier le nom commun du compte administrateur LDAP à partir de ldapadmin à tout ce que nous choisissons, et ajustez également les composants du domaine de $ stack_name et interne selon nos propres préférences. Le point clé est de s&#39;assurer que nos valeurs choisies sont cohérentes tout au long du script. le ldapmodify La commande applique ces paramètres au service LDAP en cours d&#39;exécution.\nEnsuite, nous importons une configuration de base de données par défaut à partir des fichiers fournis avec le package de serveur LDAP, et nous assurons le LDAP l&#39;utilisateur du service possède tous les fichiers pertinents. La dernière étape de configuration du serveur consiste à définir et à appliquer une structure de répertoire utilisateur simple. Cela définit les fichiers liés les uns aux autres et leur permet d&#39;être regroupés en unités organisationnelles. Pour cet exemple minimal, nous n&#39;avons besoin que des définitions de schéma COSINE et NIS, qui sont fournies dans le cadre de l&#39;installation LDAP. Ceux-ci décrivent la configuration minimale requise pour ajouter un utilisateur à LDAP. Notre structure de répertoires (spécifiée dans le struct.ldif fichier créé en ligne) contient une seule unité organisationnelle pour nos utilisateurs AWS ParallelCluster.\nAvant de passer à la configuration du client, nous enregistrons le nom d&#39;hôte du serveur LDAP dans un emplacement partagé qui sera accessible aux clients sur les instances de calcul. Dans ce cas, nous pouvons placer un fichier dans le /Accueil répertoire, car il sera partagé avec le reste du cluster via NFS.\nle prepare_ldap_client La fonction établit la connexion entre les clients, exécutés sur l&#39;instance de contrôleur ainsi que sur toutes les futures instances de calcul, et le serveur LDAP &#8211; dans ce cas, à l&#39;aide de variables définies à la fois dans un emplacement AWS ParallelCluster standard (/ etc / parallelcluster / cfnconfig) et le /home/.ldap fichier que nous avons créé lors de la préparation du serveur.\nAjout d&#39;utilisateurs de cluster\nUne fois que l&#39;instance de contrôleur de cluster démarre et que la configuration LDAP est terminée, nous devons ajouter des utilisateurs au service d&#39;annuaire. Connectez-vous au cluster en tant qu&#39;utilisateur par défaut (centos dans ce cas) avec la commande:"},{"id":"text-23","heading":"Text","content":"pcluster ssh \nSinon, utilisez état du cluster     pour obtenir l&#39;adresse IP publique et connectez-vous à cette instance via SSH à l&#39;aide de la commande:"},{"id":"text-24","heading":"Text","content":"ssh -i  centos @\nSi vous avez utilisé une paire de clés publique / privée générée localement et stockée à l&#39;emplacement par défaut (~ / .ssh), vous pouvez omettre -je     section de la commande.\nUne fois connecté, créez un script bash avec le contenu suivant (nous appellerons ce script add-user.sh):"},{"id":"text-25","heading":"Text","content":"#! / bin / bash"},{"id":"text-26","heading":"Text","content":"# N&#39;agissez que si deux arguments sont fournis et que l&#39;UID est suffisamment élevé\nsi [ $# -eq 2 ] &amp;&amp; [ \"$2\" -eq \"$2\" ] 2&gt; / dev / null &amp;&amp; [ \"$2\" -gt 1000 ]; puis\n  NOM D&#39;UTILISATEUR = 1 $\n  USERID = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être une chaîne &quot;\n  écho &quot; doit être un entier supérieur à 1 000 &quot;\n  sortie 1\nFi"},{"id":"text-27","heading":"Text","content":"# Charger les variables d&#39;environnement qui identifient le type d&#39;instance\nsource / etc / parallelcluster / cfnconfig"},{"id":"text-28","heading":"Text","content":"# Ecrire une configuration d&#39;objet LDAP minimale pour un utilisateur\nchat &lt; /tmp/$USERNAME.ldif\ndn: uid = $ USERNAME, ou = Users, dc = $ stack_name, dc = internal\nobjectClass: haut\nobjectClass: compte\nobjectClass: posixAccount\nobjectClass: shadowAccount\ncn: $ USERNAME\nuid: $ USERNAME\nuidNumber: $ USERID\ngidNumber: 100\nhomeDirectory: / home / $ USERNAME\nloginShell: / bin / bash\nEOF"},{"id":"text-29","heading":"Text","content":"# Ajouter l&#39;utilisateur à LDAP\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f /tmp/$USERNAME.ldif -y /root/.ldappasswd"},{"id":"text-30","heading":"Text","content":"# Ranger et vérifier que l&#39;entrée a réussi\nrm /tmp/$USERNAME.ldif\ngetent passwd $ 1\nRendre le script exécutable (chmod + x add-user.sh). L&#39;ajout d&#39;un utilisateur à LDAP ne nécessite pas de privilèges root en général, mais dans ce cas, notre seul enregistrement du ldapadmin le mot de passe est dans le fichier /root/.ldappasswd. Nous devrons utiliser sudo lors de l&#39;exécution du script. Transmettez votre nom d&#39;utilisateur et votre UID comme arguments, par exemple:"},{"id":"text-31","heading":"Text","content":"sudo ./add-user.sh alice 3000\nTous les utilisateurs créés de cette manière appartiendront au utilisateurs groupe (GID 100). Si nécessaire, vous pouvez modifier ce paramètre pour affecter les utilisateurs à différents groupes. Notez que la création de groupe n&#39;est pas automatique; tous les groupes personnalisés doivent être créés avant d&#39;ajouter les utilisateurs.\nAu lieu d&#39;utiliser le processus scripté décrit précédemment, vous pouvez récupérer le mot de passe LDAP du fichier et le stocker en dehors du cluster en utilisant vos mécanismes de protection par mot de passe habituels. Ensuite, vous exécuterez ldapadd sur une invite de commande en tant qu&#39;utilisateur régulier (non root). Dans ce cas, vous devrez vous assurer qu&#39;une configuration d&#39;objet LDAP valide est disponible, ainsi qu&#39;un fichier contenant le mot de passe, puis exécuter:"},{"id":"text-32","heading":"Text","content":"source / etc / parallelcluster / cfnconfig\nldapadd -x -D &quot;cn = ldapadmin, dc = $ stack_name, dc = internal&quot; -f  -y \nUne fois qu&#39;un utilisateur est ajouté, son compte sera présent dans le système (confirmé par getent passwd ou sudo getent shadow), mais leur répertoire personnel n&#39;existera pas encore; le répertoire personnel est généralement créé lors de la première connexion. À ce stade, vos utilisateurs ne pourront toujours pas se connecter au cluster via SSH, car il n&#39;y a aucune entrée dans leur ~ / .ssh / clés_autorisées fichier. La connexion à l&#39;aide d&#39;un mot de passe n&#39;est pas non plus possible, à la fois parce que nous n&#39;avons pas configuré de mot de passe pour l&#39;utilisateur et parce que l&#39;authentification par mot de passe est désactivée par défaut dans la configuration du démon AWS ParallelCluster SSH.\nNotez que nous pouvons incorporer des clés SSH dans la configuration LDAP en utilisant un schéma plus complexe. Ce serait le choix le plus approprié si vous implémentez un serveur LDAP distinct fournissant des informations d&#39;identification pour plusieurs clusters ou pour d&#39;autres instances qui n&#39;ont pas de répertoires personnels partagés. Pour éviter une complexité supplémentaire dans cet exemple simple, nous allons plutôt copier une clé publique SSH, fournie par l&#39;utilisateur potentiel, à l&#39;emplacement approprié.\nEn supposant que nous soyons toujours connectés en tant que centos et ont enregistré la clé publique pour le nouveau Alice utilisateur à ~ / alice.pub, enregistrez le script suivant sous add-key.sh et exécutez via sudo ./add-key.sh alice alice.pub:"},{"id":"text-33","heading":"Text","content":"#! / bin / bash"},{"id":"text-34","heading":"Text","content":"# N&#39;agissez que si deux arguments sont fournis et le second est un fichier local\nsi [ $# -eq 2 ] &amp;&amp; [ -f \"$2\" ] ; puis\n  NOM D&#39;UTILISATEUR = 1 $\n  KEYFILE = 2 $\nautre\n  echo &quot;Utilisation:` basename $ 0`  &quot;\n  écho &quot; doit être un compte utilisateur &quot;\n  écho &quot; doit être un fichier de clé publique SSH &quot;\n  sortie 1\nFi"},{"id":"text-35","heading":"Text","content":"# Créez le répertoire home et .ssh de l&#39;utilisateur, configurez le fichier authorized_keys\n# Notez que cela écrasera toutes les clés existantes si elles sont utilisées plusieurs fois\nmkhomedir_helper $ USERNAME\nmkdir -p /home/$USERNAME/.ssh\ncat $ KEYFILE&gt; /home/$USERNAME/.ssh/authorized_keys\nchmod 600 /home/$USERNAME/.ssh/authorized_keys\nchown -R $ USERNAME: utilisateurs / domicile / $ USERNAME\nLe propriétaire de la clé privée correspondante alice.pub peut maintenant SSH dans le cluster en utilisant le nom d&#39;utilisateur Alice. Grâce à l&#39;utilisation répétée de add-user.sh et add-key.sh, l&#39;administrateur du cluster peut ajouter autant de comptes supplémentaires que nécessaire en ajustant simplement les arguments de chaque script et en s&#39;assurant que chaque ensemble de nom d&#39;utilisateur, d&#39;ID utilisateur et de fichier de clé publique est unique.\nLes utilisateurs créés de cette manière ne pourront pas utiliser sudo pour assumer les privilèges root; vous devez réserver les actions administratives par défaut centos utilisateur. Pour une utilisation régulière des clusters HPC (soumission de travaux au planificateur, connexion aux nœuds de calcul via SSH à partir du contrôleur, utilisation du contenu des systèmes de fichiers locaux et réseau), ces comptes ont un comportement essentiellement identique à celui des comptes créés à l&#39;aide du adduser commander.\nConclusion\nDans cet article, nous avons décrit un mécanisme simple pour provisionner plusieurs utilisateurs dans AWS ParallelCluster à l&#39;aide d&#39;un serveur OpenLDAP installé localement sur le contrôleur. Avec une complexité minimale, nous avons configuré la structure de répertoires pour fournir un accès SSH aux utilisateurs HPC.\nImage de vedette via Pixabay."},{"id":"text-36","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2020/08/Managing-AWS-ParallelCluster-SSH-users-with-OpenLDAP.png"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2020/08/29/gestion-des-utilisateurs-aws-parallelcluster-ssh-avec-openldap-idk-dev-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2020/08/29/gestion-des-utilisateurs-aws-parallelcluster-ssh-avec-openldap-idk-dev-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2020/08/29/gestion-des-utilisateurs-aws-parallelcluster-ssh-avec-openldap-idk-dev-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}