Gestion des utilisateurs AWS ParallelCluster SSH avec OpenLDAP: idk.dev – Serveur d’impression
[bzkshopping keyword= »Minecraft » count= »8″ template= »grid »]
Une demande courante des utilisateurs d'AWS ParallelCluster est d'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'annuaire traditionnel hébergé localement sur le cluster pour permettre une administration plus pratique. Cela élimine la nécessité d'arrêter et de redémarrer le nœud principal ou de connaître les détails de la gestion d'Active Directory.
Un environnement AWS ParallelCluster multi-utilisateurs est idéal pour les cas dans lesquels une équipe de scientifiques ou d'ingénieurs collabore étroitement et a besoin de partager des ressources, telles que des données ou un budget de compte. L'utilisation d'un seul ensemble de systèmes de fichiers facilite la gestion des clusters pour l'administrateur, en particulier s'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.
Dans cet article, nous décrivons comment activer le service d'annuaire OpenLDAP sur le nœud principal du cluster. Cette activation peut créer et synchroniser une collection locale d'utilisateurs.
Le processus documenté ici s'applique aux clusters déployés à l'aide du système d'exploitation CentOS 7, pour AWS ParallelCluster version 2.8.1. D'autres systèmes d'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
).
Après avoir installé et configuré l'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'ê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'aide d'instances C5n.18xlarge, parfaitement adaptées à la mise à l'échelle des charges de travail HPC:
[aws]
aws_region_name = eu-west-1
[global]
update_check = vrai
sanity_check = vrai
cluster_template = par défaut
[cluster default]
nom_clé =
master_instance_type = c5.xlarge
compute_instance_type = c5n.18xlarge
enable_efa = calculer
placement_group = DYNAMIQUE
placement = calculer
disable_hyperthreading = true
post_install = s3: ///post-install.sh
s3_read_resource = arn: aws: s3 :::/ *
initial_queue_size = 0
max_queue_size = 20
keep_initial_size = false
planificateur = slurm
cluster_type = ondemand
master_root_volume_size = 340
compute_root_volume_size = 340
base_os = centos7
vpc_settings = std-vpc
[vpc std-vpc]
vpc_id =
master_subnet_id =
compute_subnet_id =
Le script de post-installation unique contient toutes les étapes d'installation et de déploiement associées au serveur OpenLDAP:
#! / bin / bash
exec>> (tee /var/log/post-install.log|logger -t données-utilisateur -s 2> / dev / console) 2> & 1
### Fonctions utilitaires
install_server_packages ()
yum -y installer openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
prepare_ldap_server () awk 'print $ 1'> /root/.ldappasswd
chmod 400 /root/.ldappasswd
# Utilisez le mot de passe pour générer un hachage de mot de passe LDAP
LDAP_HASH = $ (slappasswd -T /root/.ldappasswd)
# Spécification de la configuration LDAP initiale
chat <<-EOF > /root/ldapdb.ldif
dn: olcDatabase = 2 hdb, cn = config
type de changement: modifier
remplacer: olcSuffix
olcSuffix: dc = $ stack_name, dc = internal
dn: olcDatabase = 2 hdb, cn = config
type de changement: modifier
remplacer: olcRootDN
olcRootDN: cn = ldapadmin, dc = $ stack_name, dc = internal
dn: olcDatabase = 2 hdb, cn = config
type de changement: modifier
remplacer: olcRootPW
olcRootPW: $ LDAP_HASH
EOF
# Appliquer les paramètres LDAP
ldapmodify -Y EXTERNAL -H ldapi: /// -f /root/ldapdb.ldif
# Appliquer les paramètres de base de données LDAP
cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG
chown ldap: ldap / var / lib / ldap / *
# Appliquer un ensemble minimal de schémas LDAP
ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi: /// -f /etc/openldap/schema/nis.ldif
# Spécifiez une structure de répertoire minimale
chat <<-EOF > /root/struct.ldif
dn: dc = $ stack_name, dc = internal
dc: $ stack_name
objectClass: haut
objectClass: domaine
dn: cn = ldapadmin, dc = $ stack_name, dc = internal
objectClass: OrganizationRole
cn: ldapadmin
description: Admin LDAP
dn: ou = Users, dc = $ stack_name, dc = internal
objectClass: organizationUnit
ou: Utilisateurs
EOF
# Appliquer la structure des répertoires
ldapadd -x -W -D "cn = ldapadmin, dc = $ stack_name, dc = internal" -f /root/struct.ldif -y /root/.ldappasswd
# Enregistrez le nom d'hôte du contrôleur dans un emplacement partagé pour une utilisation ultérieure
echo "ldap_server = $ (nom d'hôte)"> /home/.ldap
install_client_packages ()
miam -y installer openldap-clients nss-pam-ldapd
prepare_ldap_client ()
source / etc / parallelcluster / cfnconfig
source /home/.ldap
authconfig --enableldap
--enableldapauth
--ldapserver = $ ldap_server
--ldapbasedn = "dc = $ stack_name, dc = internal"
--enablemkhomedir
--mettre à jour
systemctl redémarrage nslcd
### Corps principal
# Charger les variables d'environnement depuis ParallelCluster
source / etc / parallelcluster / cfnconfig
# Si le script est en cours d'exécution sur le contrôleur, configurez le serveur LDAP
si [ $cfn_node_type == 'MasterServer' ]; puis
install_server_packages
prepare_ldap_server
Fi
# Pour les nœuds de contrôleur et de calcul, activez l'authentification LDAP
install_client_packages
prepare_ldap_client
Lorsque le script est exécuté sur l'instance de contrôleur, le install_server_packages
et prepare_ldap_server
les fonctions s'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'instance suivants (c'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.
C'est tout! Une fois le lancement du cluster terminé, il sera prêt à accueillir de nouveaux utilisateurs.
Sommaire
Processus de post-installation
Avant d'ajouter des utilisateurs, parcourons le processus de post-installation étape par étape. passez à la section suivante si vous souhaitez simplement continuer à utiliser votre cluster.
Dans le prepare_ldap_server
fonction, nous commençons par démarrer la giflé
démon – c'est le service OpenLDAP – qui maintiendra une base de données d'utilisateurs et permettra aux clients de s'authentifier.
Ensuite, 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
.
Nous 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'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'exécution.
Ensuite, 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'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'être regroupés en unités organisationnelles. Pour cet exemple minimal, nous n'avons besoin que des définitions de schéma COSINE et NIS, qui sont fournies dans le cadre de l'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.
Avant de passer à la configuration du client, nous enregistrons le nom d'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.
le prepare_ldap_client
La fonction établit la connexion entre les clients, exécutés sur l'instance de contrôleur ainsi que sur toutes les futures instances de calcul, et le serveur LDAP – dans ce cas, à l'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.
Ajout d'utilisateurs de cluster
Une fois que l'instance de contrôleur de cluster démarre et que la configuration LDAP est terminée, nous devons ajouter des utilisateurs au service d'annuaire. Connectez-vous au cluster en tant qu'utilisateur par défaut (centos dans ce cas) avec la commande:
Commentaires
Laisser un commentaire