Creare un host

Per consentire la mappatura dei volumi di storage a blocchi e l'accesso ai server o alle applicazioni, è possibile creare un host utilizzando l'interfaccia utente, la CLI, le API o Terraform.

Un host è un sistema, ad esempio un server o una macchina virtuale ( VM ), che si connette ai volumi di archiviazione tramite il protocollo NVMe-oF. Creando un host e mappando i volumi su di esso, si consente ai carichi di lavoro di leggere e scrivere i dati su tali volumi attraverso connessioni sicure e gestite.

Prima di creare un host, è necessario configurare l'iniziatore NVME-oF. Questo iniziatore NVME-oF è necessario per associare un volume a un host. Vedere la sezione " Configurazione degli iniziatori NVMe-oF ". Dopo aver configurato l'iniziatore NVME-oF, prendere nota dell' host nqn.

Creazione di un host nell'interfaccia utente

Utilizzare la console di gestione dell' IBM Cloud e per creare un host per una distribuzione.

  1. Nella console IBM Cloud Icona collegamento esterno, fare clic su Distribuzioni > Nome collegamento.

  2. Fare clic su Block Storage > Host.

  3. Fare clic su Crea host.

  4. Immettere un nome host univoco e l'identificatore host Host NQN.

    Il nome host deve essere univoco nell'intera distribuzione. Ad esempio, se si creano due host che fanno parte della stessa distribuzione e hanno lo stesso nome, viene visualizzato l'errore "Nome host già esistente".

  5. Fai clic su Next.

  6. Selezionare uno o più volumi per mapparli sull'host.

  7. Fai clic su Crea. La pagina Host si aggiorna e il nuovo host appare all'inizio dell'elenco degli host.

Creazione di host tramite la CLI

Per creare host utilizzando l'interfaccia della riga di comando (CLI) da un oggetto modello host, eseguire il seguente comando.

Creare un host senza PSK (chiave precondivisa)

Creare un host senza crittografia PSK quando è già in atto una sicurezza a livello di rete. Questo utilizza il protocollo standard NVMe-oF senza crittografia a livello di trasporto. Inserisci solo il nome host e l'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

Creare l'host con PSK (chiave pre-condivisa)

Creare un host con crittografia PSK per abilitare l' TLS e per la connessione NVMe-oF. Questa soluzione è consigliata per gli ambienti di produzione che richiedono un livello di sicurezza più elevato. Il formato PSK è NVMeTLSkey-1:01:<base64-encoded-key>:, dove la chiave è un valore di tipo " base64-encoded " da 32 byte:

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')

I nomi host validi possono includere una combinazione di caratteri alfanumerici minuscoli (a-z, 0-9) e il trattino (-), per un massimo di 63 caratteri. I nomi degli host devono iniziare con una lettera minuscola. Non è possibile utilizzare trattini all'inizio o alla fine del nome. I nomi host devono essere univoci nell'intera infrastruttura. Ad esempio, se si creano due host con lo stesso nome nella stessa distribuzione, viene visualizzato un errore " Host name already exists ".

Vedi il seguente esempio.

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 lunghezza massima supportata dell'NQN è di 223 byte.

$sds_endpoint è una variabile d'ambiente che punta all'endpoint fornito al momento della configurazione di IBM Storage Ceph as a Service. È nella forma dell' URL. Ad esempio, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1. È possibile impostare URL una sola volta, in modo da non doverlo specificare a ogni comando. Per indicazioni su come impostare l' URL, vedere Comandi di configurazione.

È inoltre possibile utilizzare l'alias sds in alternativa a software-defined-storage e hstc in alternativa a host-create per le azioni CLI.

Creazione di host tramite l'API

È possibile creare host chiamando direttamente le API REST dell'host. Per ulteriori informazioni, consultare il riferimento API IBM Storage Ceph as a Service.

Assicurati di aver definito le variabili per il token IAM e l'endpoint API. Inoltre, assicurati di avere a portata di mano l' nqn e host. L' nqn e host può essere recuperato dall'iniziatore NVMe come descritto in Informazioni sulle mappature dell'host del volume.

Invia una richiesta di creazione host ( POST /hosts ). Specificare un nqn obbligatorio, un volume_id e un host name facoltativi. volume_id e host name sono facoltativi.

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 è una variabile d'ambiente che punta all'endpoint fornito al momento della configurazione di IBM Storage Ceph as a Service. È nella forma dell' URL. Ad esempio, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1. È possibile impostare URL una sola volta, in modo da non doverlo specificare a ogni comando. Per indicazioni su come impostare l' URL, vedere Comandi di configurazione.

I nomi host validi possono includere una combinazione di caratteri alfanumerici minuscoli (a-z, 0-9) e il trattino (-), per un massimo di 63 caratteri. I nomi degli host devono iniziare con una lettera minuscola. Non è possibile utilizzare trattini all'inizio o alla fine del nome. I nomi host devono essere univoci nell'intera infrastruttura. Ad esempio, se si creano due host con lo stesso nome nella stessa distribuzione, viene visualizzato un errore " Host name already exists ".

Una risposta efficace si presenta così:

{
  "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
      }
    }
  ]
}

Creare host con Terraform

Per creare un host usando Terraform, è necessario avere a portata di mano il sito host nqn. Per informazioni su come trovare il sito host nqn, vedere Configurazione degli iniziatori NVMe-oF.

  1. Creare un'istanza di host nel file main.tf utilizzando l'argomento risorsa ibm_sds_host. Nell'esempio seguente, l'istanza host è denominata rispettivamente sds_host_instance.

     resource "ibm_sds_host" "sds_host_instance" {
       name = "demo-host"
       nqn = "<hostNQN>"
     }
    
  2. Dopo aver completato la creazione del file di configurazione, inizializzare la CLI di Terraform. Per ulteriori informazioni, vedere Inizializzazione delle directory di lavoro.

    terraform init
    
  3. Predisporre le risorse dal file main.tf. Per ulteriori informazioni, vedere Provisioning dell'infrastruttura con Terraform.

    1. Eseguire terraform plan per generare un piano di esecuzione di Terraform per visualizzare in anteprima le azioni proposte.
       terraform plan
    
    1. Eseguire terraform apply per creare le risorse definite nel piano.
       terraform apply
    
  4. Alla domanda "Si desidera eseguire queste azioni?", rispondere "Sì" per procedere con la creazione del volume.

    Per i dettagli, vedere l'esempio di output.

    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 è una variabile d'ambiente che punta all'endpoint fornito al momento della configurazione di IBM Storage Ceph as a Service. È nella forma dell' URL. Ad esempio, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1.

Passi successivi