

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation d'instances autonomes comme nœuds de connexion AWS PCS
<a name="working-with_login-nodes_standalone"></a>

Vous pouvez configurer des instances EC2 indépendantes pour interagir avec le planificateur AWS Slurm d'un cluster PCS. Cela est utile pour créer des nœuds de connexion, des postes de travail ou des hôtes de gestion de flux de travail dédiés qui fonctionnent avec des clusters AWS PCS mais fonctionnent en dehors de la gestion AWS PCS. Pour ce faire, chaque instance autonome doit :

1. Installez une version compatible du logiciel Slurm.

1. Être capable de se connecter au point de terminaison Slurmctld du cluster AWS PCS.

1. Configurez correctement les démons Slurm Auth et Cred Kiosk (`sackd`) avec le point de terminaison et le secret du cluster AWS PCS. Pour plus d'informations, consultez [sackd](https://slurm.schedmd.com/sackd.html) dans la documentation de Slurm.

 Ce didacticiel vous aide à configurer une instance indépendante qui se connecte à un cluster AWS PCS. 

**Contents**
+ [Étape 1 — Récupérez l'adresse et le secret du cluster AWS PCS cible](working-with_login-nodes_standalone_get-addr.md)
+ [Étape 2 — Lancer une instance EC2](working-with_login-nodes_standalone_launch.md)
+ [Étape 3 — Installation de Slurm sur l'instance](working-with_login-nodes_standalone_install-slurm.md)
+ [Étape 4 — Récupérez et stockez le secret du cluster](working-with_login-nodes_standalone_get-secret.md)
+ [Étape 5 — Configuration de la connexion au cluster AWS PCS](working-with_login-nodes_standalone_configure-connection.md)
+ [Étape 6 — (Facultatif) Testez la connexion](working-with_login-nodes_standalone_test.md)

# Étape 1 — Récupérez l'adresse et le secret du cluster AWS PCS cible
<a name="working-with_login-nodes_standalone_get-addr"></a>

Récupérez les détails du cluster AWS PCS cible à l' AWS CLI aide de la commande suivante. Avant d'exécuter la commande, effectuez les remplacements suivants :
+ *region-code*Remplacez-le par celui Région AWS où s'exécute le cluster cible.
+ Remplacer *cluster-ident* par le nom ou l'identifiant du cluster cible

```
aws pcs get-cluster --region region-code --cluster-identifier cluster-ident
```

La commande renverra une sortie similaire à celle de cet exemple.

```
{
    "cluster": {
        "name": "get-started",
        "id": "pcs_123456abcd",
        "arn": "arn:aws:pcs:us-east-1:111122223333:cluster/pcs_123456abcd",
        "status": "ACTIVE",
        "createdAt": "2024-12-17T21:03:52+00:00",
        "modifiedAt": "2024-12-17T21:03:52+00:00",
        "scheduler": {
            "type": "SLURM",
            "version": "25.05"
        },
        "size": "SMALL",
        "slurmConfiguration": {
            "authKey": {
                "secretArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:pcs!slurm-secret-pcs_123456abcd-a12ABC",
                "secretVersion": "ef232370-d3e7-434c-9a87-ec35c1987f75"
            }
        },
        "networking": {
            "subnetIds": [
                "subnet-0123456789abcdef0"
            ],
            "securityGroupIds": [
                "sg-0123456789abcdef0"
            ]
        },
        "endpoints": [
            {
                "type": "SLURMCTLD",
                "privateIpAddress": "10.3.149.220",
                "port": "6817"
            }
        ]
    }
}
```

Dans cet exemple, le point de terminaison du contrôleur Slurm du cluster possède une adresse IP de `10.3.149.220` et s'exécute sur le port. `6817` Il `secretArn` sera utilisé dans les étapes ultérieures pour récupérer le secret du cluster. L'adresse IP et le port seront utilisés ultérieurement pour configurer le `sackd` service. 

# Étape 2 — Lancer une instance EC2
<a name="working-with_login-nodes_standalone_launch"></a>

**Pour lancer une instance EC2**

1. Ouvrez la [console Amazon EC2](https://console.aws.amazon.com/ec2).

1. Dans le volet de navigation, choisissez **Instances**, puis **Launch Instances** (Lancer des instances) pour ouvrir le nouvel assistant de lancement d’instance.

1. (Facultatif) Dans la section **Nom et balises**, saisissez un nom pour l'instance, par exemple`PCS-LoginNode`. Le nom est attribué à l’instance en tant qu’identification de ressource (`Name=PCS-LoginNode`).

1. Dans la section **Images de l'application et du système** d'exploitation, sélectionnez une AMI pour l'un des systèmes d'exploitation pris en charge par AWS PCS. Pour de plus amples informations, veuillez consulter [Systèmes d’exploitation pris en charge](working-with_ami_installers.md#working-with_ami_installers_os).

1. Dans la section **Type d’instance**, sélectionnez un type d’instance pris en charge. Pour de plus amples informations, veuillez consulter [Types d’instance pris en charge](working-with_ami_installers.md#working-wth_ami_installers_instance-types).

1. Dans la section **Paire de clés**, sélectionnez la paire de clés SSH à utiliser pour l'instance.

1. Dans la section **Paramètres réseau** :

   1. Choisissez **Modifier**.

     1. Sélectionnez le VPC de votre cluster AWS PCS.

     1. Pour **Firewall (security groups)** (Pare-feu (groupes de sécurité), choisissez **Select existing security group** (Sélectionner un groupe de sécurité existant).

        1. Sélectionnez un groupe de sécurité qui autorise le trafic entre l'instance et le contrôleur Slurm du cluster AWS PCS cible. Pour de plus amples informations, veuillez consulter [Exigences et considérations relatives aux groupes de sécurité](working-with_networking_sg.md#working-with_networking_sg-requirements).

        1. (Facultatif) Sélectionnez un groupe de sécurité qui autorise l'accès SSH entrant à votre instance.

1. Dans la section **Stockage**, configurez les volumes de stockage selon vos besoins. Assurez-vous de configurer suffisamment d'espace pour installer les applications et les bibliothèques afin d'activer votre cas d'utilisation.

1.  Sous **Avancé**, choisissez un rôle IAM qui autorise l'accès au secret du cluster. Pour de plus amples informations, veuillez consulter [Obtenez le secret du cluster Slurm](working-with_clusters_secrets_get.md). 

1.  Dans le volet **Résumé**, choisissez **Launch instance**. 

# Étape 3 — Installation de Slurm sur l'instance
<a name="working-with_login-nodes_standalone_install-slurm"></a>

Lorsque l'instance est lancée et devient active, connectez-vous à celle-ci en utilisant le mécanisme de votre choix. Utilisez le programme d'installation de Slurm fourni par AWS pour installer Slurm sur l'instance. Pour de plus amples informations, veuillez consulter [Installateur Slurm](working-with_ami_installers.md#working-with_ami_installers_slurm).

Téléchargez le programme d'installation de Slurm, décompressez-le et utilisez le `installer.sh` script pour installer Slurm. Pour de plus amples informations, veuillez consulter [Étape 3 — Installation de Slurm](working-with_ami_custom_install-slurm.md).

# Étape 4 — Récupérez et stockez le secret du cluster
<a name="working-with_login-nodes_standalone_get-secret"></a>

Ces instructions nécessitent le AWS CLI. Pour plus d'informations, voir [Installation ou mise à jour vers la dernière version du AWS CLI dans le](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) *guide de AWS Command Line Interface l'utilisateur de la version 2*.

Enregistrez le secret du cluster à l'aide des commandes suivantes.
+ Créez le répertoire de configuration pour Slurm.

  ```
  sudo mkdir -p /etc/slurm
  ```
+ Récupérez, décodez et stockez le secret du cluster. Avant d'exécuter cette commande, *region-code* remplacez-la par la région dans laquelle s'exécute le cluster cible et *secret-arn* remplacez-la par la valeur `secretArn` récupérée à l'[étape 1](working-with_login-nodes_standalone_get-addr.md).

  ```
  aws secretsmanager get-secret-value \
   --region region-code \
   --secret-id 'secret-arn' \
   --version-stage AWSCURRENT \
   --query 'SecretString' \
   --output text | base64 -d | sudo tee /etc/slurm/slurm.key
  ```
**Avertissement**  
Dans un environnement multi-utilisateurs, tout utilisateur ayant accès à l'instance peut être en mesure de récupérer le secret du cluster s'il peut accéder au service de métadonnées d'instance (IMDS). Cela pourrait à son tour leur permettre de se faire passer pour d'autres utilisateurs. Envisagez de restreindre l'accès à l'IMDS aux utilisateurs root ou administratifs uniquement. Vous pouvez également envisager d'utiliser un mécanisme différent qui ne repose pas sur le profil de l'instance pour récupérer et configurer le secret.
+ Définissez la propriété et les autorisations sur le fichier clé de Slurm.

  ```
  sudo chmod 0600 /etc/slurm/slurm.key
  sudo chown slurm:slurm /etc/slurm/slurm.key
  ```
**Note**  
La clé Slurm doit appartenir à l'utilisateur et au groupe sous lesquels le `sackd` service s'exécute. 

# Étape 5 — Configuration de la connexion au cluster AWS PCS
<a name="working-with_login-nodes_standalone_configure-connection"></a>

Pour établir une connexion au cluster AWS PCS, lancez-le `sackd` en tant que service système en suivant ces étapes.

**Note**  
 Si vous utilisez Slurm 25.05 ou une version ultérieure, vous pouvez utiliser un script pour configurer votre nœud de connexion afin qu'il se connecte à plusieurs clusters. Pour de plus amples informations, veuillez consulter [Connexion d'un nœud de connexion autonome à plusieurs clusters dans AWS PCS](multi-cluster-login-script.md). 

1. Configurez le fichier d'environnement du `sackd` service à l'aide de la commande suivante. Avant d'exécuter la commande, remplacez *ip-address* et par *port* les valeurs extraites des points de terminaison à l'[étape 1](working-with_login-nodes_standalone_get-addr.md).

   ```
   sudo echo "SACKD_OPTIONS='--conf-server=ip-address:port'" > /etc/sysconfig/sackd
   ```

1. Créez un fichier `systemd` de service pour gérer le `sackd` processus.

   ```
   sudo cat << EOF > /etc/systemd/system/sackd.service
   [Unit]
   Description=Slurm auth and cred kiosk daemon
   After=network-online.target remote-fs.target
   Wants=network-online.target
   ConditionPathExists=/etc/sysconfig/sackd
   
   [Service]
   Type=notify
   EnvironmentFile=/etc/sysconfig/sackd
   User=slurm
   Group=slurm
   RuntimeDirectory=slurm
   RuntimeDirectoryMode=0755
   ExecStart=/opt/aws/pcs/scheduler/slurm-25.05/sbin/sackd --systemd \$SACKD_OPTIONS
   ExecReload=/bin/kill -HUP \$MAINPID
   KillMode=process
   LimitNOFILE=131072
   LimitMEMLOCK=infinity
   LimitSTACK=infinity
   
   [Install]
   WantedBy=multi-user.target
   EOF
   ```

1. Définissez la propriété du fichier `sackd` de service.

   ```
   sudo chown root:root /etc/systemd/system/sackd.service && \
       sudo chmod 0644 /etc/systemd/system/sackd.service
   ```

1. Activez le `sackd` service.

   ```
   sudo systemctl daemon-reload && sudo systemctl enable sackd
   ```

1. Lancez le service `sackd`.

   ```
   sudo systemctl start sackd
   ```

# Étape 6 — (Facultatif) Testez la connexion
<a name="working-with_login-nodes_standalone_test"></a>

Vérifiez que le `sackd` service est en cours d'exécution. Vous trouverez ci-après un exemple de sortie. S'il y a des erreurs, elles apparaissent généralement ici.

```
[root@ip-10-3-27-112 ~]# systemctl status sackd
[x] sackd.service - Slurm auth and cred kiosk daemon
   Loaded: loaded (/etc/systemd/system/sackd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2024-12-17 16:34:55 UTC; 8s ago
 Main PID: 9985 (sackd)
   CGroup: /system.slice/sackd.service
           └─9985 /opt/aws/pcs/scheduler/slurm-25.05/sbin/sackd --systemd --conf-server=10.3.149.220:6817

Dec 17 16:34:55 ip-10-3-27-112.ec2.internal systemd[1]: Starting Slurm auth and cred kiosk daemon...
Dec 17 16:34:55 ip-10-3-27-112.ec2.internal systemd[1]: Started Slurm auth and cred kiosk daemon.
Dec 17 16:34:55 ip-10-3-27-112.ec2.internal sackd[9985]: sackd: running
```

Vérifiez que les connexions au cluster fonctionnent à l'aide des commandes du client Slurm telles que `sinfo` et. `squeue` Voici un exemple de sortie de`sinfo`.

```
[root@ip-10-3-27-112 ~]# /opt/aws/pcs/scheduler/slurm-25.05/bin/sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
all up infinite 4 idle~ compute-[1-4]
```

Vous devriez également être en mesure de soumettre des offres d'emploi. Par exemple, une commande similaire à cet exemple lancerait une tâche interactive sur un nœud du cluster. 

```
/opt/aws/pcs/scheduler/slurm-25.05/bin/srun --nodes=1 -p all --pty bash -i
```