Criação de um host

Para permitir que os volumes de armazenamento em bloco sejam mapeados e acessados por seus servidores ou aplicativos, você pode criar um host usando a interface do usuário, a CLI, a API ou o Terraform.

Um host representa um sistema, como um servidor ou uma máquina virtual ( VM ), que se conecta a volumes de armazenamento por meio do protocolo NVMe-oF. Ao criar um host e mapear volumes para ele, você permite que suas cargas de trabalho leiam e gravem dados nesses volumes por meio de conexões seguras e gerenciadas.

Antes de criar um host, é necessário configurar o iniciador do serviço de gerenciamento de dispositivos ( NVME-oF ). Este iniciador do NVME-oF é necessário para mapear o volume a um host. Consulte “Configuração de iniciadores d NVMe-oF ”. Após configurar o iniciador do NVME-oF, anote o endereço host nqn.

Criação de um host na interface do usuário

Use o console IBM Cloud para criar um host para uma implementação.

  1. No console IBM Cloud Ícone de link externo, clique em Deployments > Name link.

  2. Clique em Block Storage > Hosts.

  3. Clique em Criar host.

  4. Insira um nome de host exclusivo e insira o identificador de host Host NQN.

    O nome do host deve ser exclusivo em toda a implementação. Por exemplo, se você criar dois hosts que estejam na mesma implantação e tenham o mesmo nome, será exibido o erro "O nome do host já existe".

  5. Clique em Avançar.

  6. Selecione um ou mais volumes para mapeá-los para o host.

  7. Clique em Criar. A página Host é atualizada e o novo host aparece no início da lista de hosts.

Criação de hosts pela CLI

Para criar hosts usando a interface de linha de comando (CLI) a partir de um objeto de modelo de host, execute o seguinte comando.

Criar host sem PSK (chave pré-compartilhada)

Crie um host sem criptografia PSK quando já houver segurança em nível de rede. Isso utiliza o protocolo padrão NVMe-oF sem criptografia na camada de transporte. Forneça apenas o nome do host e o 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

Criar host com PSK (chave pré-compartilhada)

Crie um host com criptografia PSK para habilitar o protocolo de autenticação por senha ( TLS ) para a conexão NVMe-oF. Isso é recomendado para ambientes de produção que exigem maior segurança. O formato PSK é NVMeTLSkey-1:01:<base64-encoded-key>:, em que a chave é um valor de 32 bytes do tipo “ base64-encoded ”:

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

Os nomes de host válidos podem incluir uma combinação de caracteres alfanuméricos em letras minúsculas (a-z, 0-9) e o hífen (-), com até 63 caracteres. Os nomes de host devem começar com uma letra minúscula. Hifens não podem ser usados para iniciar ou terminar o nome. Os nomes dos hosts devem ser únicos em toda a infraestrutura. Por exemplo, se você criar dois hosts com o mesmo nome na mesma implantação, será exibido um erro Host name already exists.

Consulte o exemplo a seguir.

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

O comprimento máximo suportado do NQN é de 223 bytes.

O $sds_endpoint é uma variável de ambiente que aponta para o endpoint fornecido a você quando o IBM Storage Ceph as a Service foi configurado. Ele está no formulário URL. Por exemplo, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1. Você pode definir o endereço URL uma vez, portanto, não é necessário especificá-lo em cada comando. Para obter orientação sobre como definir o URL, consulte Comandos de configuração.

Você também pode usar o alias sds como alternativa a software-defined-storage e hstc como alternativa a host-create para as ações da CLI.

Criação de hosts com a API

Você pode criar hosts chamando diretamente as APIs REST do Host. Para obter mais informações, consulte a referência da API IBM Storage Ceph as a Service.

Certifique-se de que você definiu as variáveis para o token IAM e o endpoint da API. Além disso, verifique se você tem o host nqn à mão. O host nqn pode ser obtido do iniciador NVMe, conforme descrito em Sobre mapeamentos de host de volume.

Envie uma solicitação de “ POST /hosts ” para criar um host. Especifique um nqn obrigatório, um volume_id e um host name opcionais. volume_id e host name são opcionais.

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"}'

O $sds_endpoint é uma variável de ambiente que aponta para o endpoint fornecido a você quando o IBM Storage Ceph as a Service foi configurado. Ele está no formulário URL. Por exemplo, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1. Você pode definir o endereço URL uma vez, portanto, não é necessário especificá-lo em cada comando. Para obter orientação sobre como definir o URL, consulte Comandos de configuração.

Os nomes de host válidos podem incluir uma combinação de caracteres alfanuméricos em letras minúsculas (a-z, 0-9) e o hífen (-), com até 63 caracteres. Os nomes de host devem começar com uma letra minúscula. Hifens não podem ser usados para iniciar ou terminar o nome. Os nomes dos hosts devem ser únicos em toda a infraestrutura. Por exemplo, se você criar dois hosts com o mesmo nome na mesma implantação, será exibido um erro Host name already exists.

Uma resposta bem-sucedida é semelhante a esta:

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

Criação de hosts usando o Terraform

Para criar um host usando o Terraform, você deve ter em mãos o endereço host nqn. Para obter orientação sobre como localizar o host nqn, consulte Configuração dos iniciadores do NVMe-oF.

  1. Crie uma instância de host em seu arquivo main.tf usando o argumento de recurso ibm_sds_host. A instância do host no exemplo a seguir é denominada sds_host_instance, respectivamente.

     resource "ibm_sds_host" "sds_host_instance" {
       name = "demo-host"
       nqn = "<hostNQN>"
     }
    
  2. Depois de concluir a criação do arquivo de configuração, inicialize a CLI do Terraform. Para obter mais informações, consulte Inicialização de diretórios de trabalho.

    terraform init
    
  3. Provisione os recursos do arquivo main.tf. Para obter mais informações, consulte Provisionamento de infraestrutura com o Terraform.

    1. Execute terraform plan para gerar um plano de execução do Terraform para visualizar as ações propostas.
       terraform plan
    
    1. Execute o site terraform apply para criar os recursos definidos no plano.
       terraform apply
    
  4. Responda à pergunta "Do you want to perform these actions?" com "Yes" para prosseguir com a criação do volume.

    Veja o exemplo de saída para obter detalhes.

    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([])
    }
    

O $sds_endpoint é uma variável de ambiente que aponta para o endpoint fornecido a você quando o IBM Storage Ceph as a Service foi configurado. Ele está no formulário URL. Por exemplo, https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1.

Próximas etapas