Création d'un hôte

Pour permettre aux volumes de stockage en bloc d'être mappés et accessibles par vos serveurs ou applications, vous pouvez créer un hôte à l'aide de l'interface utilisateur, de l'interface de programmation, de l'API ou de Terraform.

Un hôte désigne un système, tel qu'un serveur ou une machine virtuelle ( VM ), qui se connecte à des volumes de stockage via le protocole NVMe-oF. En créant un hôte et en y mappant des volumes, vous permettez à vos charges de travail de lire et d'écrire des données sur ces volumes par le biais de connexions sécurisées et gérées.

Avant de créer un hôte, vous devez configurer l'initiateur NVME-oF. Cet initiateur d' NVME-oF s est nécessaire pour associer un volume à un hôte. Voir la section « Configuration des initiateurs d' NVMe-oF ». Une fois l'initiateur NVME-oF configuré, notez l'adresse host nqn.

Création d'un hôte dans l'interface utilisateur

Utilisez la console d' IBM Cloud s pour créer un hôte pour un déploiement.

  1. Dans la console d' IBM Cloud, icône Lien externe, cliquez sur Déploiements > Nom du lien.

  2. Cliquez sur Block Storage > Hosts.

  3. Cliquez sur Créer un hôte.

  4. Saisissez un nom d'hôte unique et l'identifiant d'hôte Host NQN.

    Le nom d'hôte doit être unique dans l'ensemble du déploiement. Par exemple, si vous créez deux hôtes qui font partie du même déploiement et qui portent le même nom, le message d'erreur "Host name already exists" (nom d'hôte existant) s'affiche.

  5. Cliquez sur Suivant.

  6. Sélectionnez un ou plusieurs volumes pour les mapper sur l'hôte.

  7. Cliquez sur Créer. La page Hôte s'actualise et le nouvel hôte apparaît en tête de la liste des hôtes.

Création d'hôtes à partir de l'interface de ligne de commande

Pour créer des hôtes à l'aide de l'interface de ligne de commande (CLI) à partir d'un objet modèle d'hôte, exécutez la commande suivante.

Créer un hôte sans PSK (Pre-shared key)

Créer un hôte sans chiffrement PSK lorsque la sécurité au niveau du réseau est déjà en place. Ce protocole utilise le protocole standard « NVMe-oF » ( ) sans chiffrement au niveau de la couche de transport. Indiquez uniquement le nom d'hôte et le NQN :

ic sds host-create --name host-1 --nqn nqn.2014-06.org:9345 --url $sds_endpoint
HOST_ONE=$(ibmcloud sds hosts --output json | jq -r '.Hosts[] | select(.Host_Name=="host-1").Host_ID')
ic sds host --host-id $HOST_ONE

Créer un hôte avec PSK (Pre-shared key)

Créez un hôte avec un chiffrement PSK afin d'activer la fonction « TLS » pour la connexion NVMe-oF. Cette solution est recommandée pour les environnements de production nécessitant un niveau de sécurité renforcé. Le format PSK est « NVMeTLSkey-1:01:<base64-encoded-key>: », où la clé est une valeur de type « base64-encoded » de 32 octets :

ic sds host-create --name host-2 --nqn nqn.2014-06.org:9345 --psk "NVMeTLSkey-1:01:YzrPElk4OYy1uUERriPwiiyEJE/+J5ckYpLB+5NHMsR2iBuT:" --url $sds_endpoint
HOST_TWO=$(ibmcloud sds hosts --output json | jq -r '.Hosts[] | select(.Host_Name=="host-2").Host_ID')

Les noms d'hôte valides peuvent comporter une combinaison de caractères alphanumériques en minuscules (a-z, 0-9) et de tirets (-), pour un total maximal de 63 caractères. Les noms d'hôte doivent commencer par une lettre minuscule. Les tirets ne peuvent pas être utilisés pour commencer ou terminer le nom. Les noms d'hôte doivent être uniques dans l'ensemble de l'infrastructure. Par exemple, si vous créez deux hôtes portant le même nom dans le même déploiement, une erreur « Host name already exists » s'affiche.

Consultez l'exemple suivant.

ibmcloud software-defined-storage host-create \
  --nqn "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002122" \
  --name "dummy-host" \
  --volume-mappings '[{"volume": {"id": "r134-2ca809e8-3e63-44bc-916e-1eae49302aae"}}]'
  --url $sds_endpoint
...
Host_ID           r134-0dcd5d2d-07db-4457-ab0b-1fc3eef28c66
Host_Name         dummy-host
Host_NQN          nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002122
PSK_Enabled       false
Created_At        2025-02-28T10:05:30.000Z
Volume_Mappings
                  Namespace_ID        -
                  Namespace_UUID      -
                  Status              pending
                  Subsystem_NQN       -
                  Volume_ID           r134-2ca809e8-3e63-44bc-916e-1eae49302aae
                  Volume_Mapping_ID   r134-95b99022-3cf7-42be-9c18-5b6e3fa30bfa
                  Volume_Name         dividend-abet-getting-presume

La longueur maximale du NQN est de 223 octets.

$sds_endpoint est une variable d'environnement qui pointe vers le point de terminaison qui vous a été fourni lors de la configuration de IBM Storage Ceph as a Service. Il se présente sous la forme d' URL. Par exemple, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1. Vous pouvez définir l'adresse URL une seule fois, de sorte qu'il n'est pas nécessaire de la spécifier à chaque commande. Pour savoir comment définir l' URL, consultez la section Commandes de configuration.

Vous pouvez également utiliser l'alias sds comme alternative à software-defined-storage et hstc comme alternative à host-create pour les actions CLI.

Création d'hôtes via l'API

Vous pouvez créer des hôtes en appelant directement les API REST de l'hôte. Pour plus d'informations, consultez la référence API IBM Storage Ceph as a Service.

Assurez-vous d'avoir défini les variables pour le jeton IAM et le point de terminaison de l'API. Assurez-vous également d'avoir l' nqn s d'hôte à portée de main. L' nqn e hôte peut être récupérée à partir de l'initiateur NVMe comme décrit dans À propos des mappages d'hôtes de volume.

Envoyez une requête « POST /hosts » pour créer un hôte. Spécifiez un nqn obligatoire, un volume_id et un host name facultatifs. volume_id et host name sont facultatifs.

curl -X POST $sds_endpoint/hosts\
 -H "Authorization: $IAM_TOKEN" \
 -H "IBM-API-Version: 2025-02-01" \
 -d '{
 		"volume_mappings": [
 			{
 				"volume": {
 					"id": "r134-b05d91af-6393-4652-aada-13fd4fdbd065"
 					}
 			},
 			{
 				"volume": {
 					"id": "r134-601e431b-22ab-47a1-b0c1-411049b432a0"
 					}
 			}
 		],
 	"name": "host1",
  "psk": "NVMeTLSkey-1:01:5CBxDU8ejK+PrqIjTau0yDHnBV2CdfvP6hGmqnPdKhJ9tfi2:",
 	"nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149"}'

$sds_endpoint est une variable d'environnement qui pointe vers le point de terminaison qui vous a été fourni lors de la configuration de IBM Storage Ceph as a Service. Il se présente sous la forme d' URL. Par exemple, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1. Vous pouvez définir l'adresse URL une seule fois, de sorte qu'il n'est pas nécessaire de la spécifier à chaque commande. Pour savoir comment définir l' URL, consultez la section Commandes de configuration.

Les noms d'hôte valides peuvent comporter une combinaison de caractères alphanumériques en minuscules (a-z, 0-9) et de tirets (-), pour un total maximal de 63 caractères. Les noms d'hôte doivent commencer par une lettre minuscule. Les tirets ne peuvent pas être utilisés pour commencer ou terminer le nom. Les noms d'hôte doivent être uniques dans l'ensemble de l'infrastructure. Par exemple, si vous créez deux hôtes portant le même nom dans le même déploiement, une erreur « Host name already exists » s'affiche.

Une réponse qui aboutit se présente comme suit :

{
  "id": "r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d",
  "name": "host1",
  "nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149",
  "created_at": "2025-02-27T10:55:07Z",
  "href": "$sds_endpoint/hosts/r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d",
  "volume_mappings": [
    {
      "id": "r134-dfb2c915-4788-4cb3-b1d5-8e00ee09e780",
      "status": "pending",
      "href": "$sds_endpoint/hosts/r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d/volume_mappings/r134-dfb2c915-4788-4cb3-b1d5-8e00ee09e780",
      "volume": {
        "name": "seventy-banked-pry-punt",
        "id": "r134-b05d91af-6393-4652-aada-13fd4fdbd065"
      },
      "host": {
        "name": "host1",
        "nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149",
        "id": "r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d"
      }
    },
    {
      "id": "r134-b557c11f-6c90-48e5-93b3-deac047e815c",
      "status": "pending",
      "href": "$sds_endpoint/hosts/r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d/volume_mappings/r134-b557c11f-6c90-48e5-93b3-deac047e815c",
      "volume": {
        "name": "new-vol",
        "id": "r134-601e431b-22ab-47a1-b0c1-411049b432a0"
      },
      "host": {
        "name": "host1",
        "nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149",
        "id": "r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d"
        "psk_enabled": true
      }
    }
  ]
}

Créer des hôtes avec Terraform

Pour créer un hôte à l'aide de Terraform, vous devez avoir le site host nqn à portée de main. Pour savoir comment trouver l'adresse host nqn, voir Configuration des initiateurs NVMe-oF.

  1. Créez une instance d'hôte dans votre fichier main.tf en utilisant l'argument de ressource ibm_sds_host. L'instance hôte dans l'exemple suivant est nommée sds_host_instance respectivement.

     resource "ibm_sds_host" "sds_host_instance" {
       name = "demo-host"
       nqn = "<hostNQN>"
     }
    
  2. Une fois que vous avez terminé de construire votre fichier de configuration, initialisez le CLI Terraform. Pour plus d'informations, voir Initialisation des répertoires de travail.

    terraform init
    
  3. Fournir les ressources à partir du fichier main.tf. Pour plus d'informations, voir Provisionnement de l'infrastructure avec Terraform.

    1. Exécutez terraform plan pour générer un plan d'exécution Terraform afin de prévisualiser les actions proposées.
       terraform plan
    
    1. Exécutez le site terraform apply pour créer les ressources définies dans le plan.
       terraform apply
    
  4. Répondez à la question "Voulez-vous effectuer ces actions?" par "Oui" pour procéder à la création du volume.

    Voir l'exemple de sortie pour plus de détails.

    ibm_sds_host.sds_host_instance: Creating...
    ibm_sds_host.sds_host_instance: Creation complete after 1s [id=r134-e8b82dc5-e081-422e-9709-a44ec63f56af]
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    Outputs:
    ibm_sds_host = {
      "created_at" = "2025-03-10T14:58:33.000Z"
      "href" = "$sds_endpoint/hosts/r134-e8b82dc5-e081-422e-9709-a44ec63f56af"
      "id" = "r134-e8b82dc5-e081-422e-9709-a44ec63f56af"
      "name" = "demo-host"
      "nqn" = "nqn.2014-06.org:9345"
      "sds_endpoint" = tostring(null)
      "volume_mappings" = tolist([])
    }
    

$sds_endpoint est une variable d'environnement qui pointe vers le point de terminaison qui vous a été fourni lors de la configuration de IBM Storage Ceph as a Service. Il se présente sous la forme d' URL. Par exemple, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1.

Etapes suivantes