Criando uma instância de serviço para MongoDBOps Manager programaticamente

Após a instalação MongoDB, é necessário criar pelo menos uma instância MongoDBOps Manager de serviço no projeto operandos. Se você é um Cloud Pak for Data usuário, pode usar a chamada /v3/service_instances da API REST para criar instâncias de serviço programaticamente.

Quem precisa concluir esta tarefa?
Para criar uma instância de serviço programaticamente usando a chamada /v3/service_instances da API REST, você deve ter a permissão Criar instâncias de serviço (can_provision) em IBM® Software Hub.
Quando você precisa concluir essa tarefa?
Conclua esta tarefa apenas se desejar criar uma instância de serviço programaticamente usando a chamada /v3/service_instances da API REST.
Métodos alternativos para criar uma instância de serviço

Informações necessárias para concluir esta tarefa

Analise as seguintes informações antes de criar uma instância de serviço para MongoDB :

Requisitos de Versão

Todos os componentes associados a uma instância do Cloud Pak for Data devem ser instalados ou criados na mesma versão. Por exemplo, se MongoDB estiver instalado na versão 5.3.1, você deve criar a instância do serviço na versão 5.3.1.

Importante: MongoDBOps Manager usa um número de versão diferente de Cloud Pak for Data. Este tópico inclui uma tabela que mostra a MongoDBOps Manager versão para cada atualização do Cloud Pak for Data. Use esta tabela para encontrar a versão correta com base na versão do Cloud Pak for Data que está instalada.
Variáveis de ambiente

Os comandos nesta tarefa utilizam variáveis de ambiente para que você possa executá-los exatamente como estão escritos.

  • Se você não tiver o script que define as variáveis de ambiente, consulte Configurando as variáveis de ambiente de instalação.
  • Para usar as variáveis de ambiente do script, você deve obter as variáveis de ambiente antes de executar os comandos nesta tarefa. Por exemplo, execute:
    source ./cpd_vars.sh

Antes de iniciar

Esta tarefa pressupõe que os seguintes pré-requisitos estejam atendidos:

Pré-requisito Onde Localizar Mais Informações
MongoDB está instalado. Se esta tarefa não estiver concluída, consulte Instalação MongoDB.
Você gerou uma chave API.

A chave API deve estar associada a um usuário que tenha a permissão Criar instâncias de serviço (can_provision) em IBM Software Hub.

Se essa tarefa não estiver concluída, consulte Gerando um token de autorização de API.

Procedimento

Conclua as seguintes tarefas para criar uma instância de serviço:

  1. Criando uma instância de serviço
  2. Validando se a instância do serviço foi criada
  3. O que fazer a seguir

Criando uma instância de serviço

Para criar uma instância de serviço:

  1. Mude para o diretório em sua estação de trabalho onde deseja criar o arquivo JSON que define a carga útil da instância do serviço.
  2. Defina as variáveis de ambiente usadas para preencher a carga JSON para o MongoDBOps Manager .
    1. Defina a variável OPS_MGR_NAME de ambiente como o nome exclusivo que você deseja usar como nome de exibição para o Ops Manager:
      export OPS_MGR_NAME="<display-name>"

      Este nome é exibido na página Instâncias do cliente IBM Software Hub web.

      O nome de exibição é um string e pode conter apenas caracteres alfanuméricos minúsculos (a-z, 0-9), traços (-) e pontos (.).

      O nome de exibição deve começar e terminar com um caractere alfanumérico.

    2. Defina a variável OPS_MGR_DESCRIPTION de ambiente para a descrição que você deseja usar para o Ops Manager:
      export OPS_MGR_DESCRIPTION="<description>"

      Essa descrição é exibida na página Instâncias do cliente IBM Software Hub web.

      A descrição é um string e pode conter caracteres alfanuméricos, espaços, traços, sublinhados e pontos. Certifique-se de colocar o nome de exibição entre aspas, conforme mostrado no comando export anterior.

    3. Defina a variável OPS_MGR_VERSION de ambiente para uma versão que corresponda à versão do IBM Software Hub seu cluster:
      export OPS_MGR_VERSION=<version>

      Use a tabela a seguir para determinar os valores disponíveis:

      Versão IBM Software Hub Versão Ops Manager
      5.3.1 7.0.15, 8.0.6
      5.3.0 7.0.15, 8.0.6
    4. Defina a variável OPS_MGR_USERNAME de ambiente com o nome que você deseja usar para acessar o Ops Manager:
      export OPS_MGR_USERNAME=<username>
    5. Defina a variável OPS_MGR_PASSWORD de ambiente com a senha que você deseja usar para acessar o Ops Manager:
      export OPS_MGR_PASSWORD=<password>

      A senha deve ter pelo menos 8 caracteres e conter pelo menos uma letra, um número e um caractere especial.

    6. Defina a variável OPS_MGR_ON_DEDICATED de ambiente com base na sua intenção de implantar em Ops Manager nós dedicados:
      export MGR_ON_DEDICATED=<boolean>
      • Especifique true para executar Ops Manager em nós dedicados.
      • Especifique false para executar o Ops Manager em nós onde outros pods estão sendo executados.

      Para mais informações, consulte Configurando notas dedicadas para sua MongoDB implantação.

    7. Defina a variável AUTO_DELETE_RESOURCES de ambiente com base na sua preferência de excluir automaticamente as reivindicações de volume persistente (PVCs) e os segredos associados ao Ops Manager quando você excluir uma Ops Manager instância.
      export AUTO_DELETE_RESOURCES=<boolean>
      • Especifique true para excluir automaticamente os recursos quando você excluir uma instância de serviço.
        Importante: a exclusão é permanente. Os dados nos PVCs e segredos não podem ser recuperados.
      • Especifique false para preservar os recursos ao excluir uma instância de serviço.
    8. Defina a variável MD_INSTANCE_REPLICAS de ambiente para o número de réplicas dos Ops Manager metadados a serem criados:
      export MD_INSTANCE_REPLICAS=<integer>

      Especifique um número inteiro entre 1 e 50. Especifique duas ou mais réplicas para alta disponibilidade. O valor recomendado é 3.

    9. Defina a variável MD_REPLICA_CPU de ambiente com base no número de CPUs que você deseja alocar para cada réplica Ops Manager de metadados:
      export MD_REPLICA_CPU=<integer>

      Especifique um número inteiro entre 1 e 16.

    10. Defina a variável MD_REPLICA_MEMORY de ambiente com base na quantidade de memória que deseja alocar para cada réplica Ops Manager de metadados:
      export MD_REPLICA_MEMORY=<integer>

      Especifique um número inteiro entre 1 e 64.

    11. Defina a variável MD_STORAGE_SIZE de ambiente com base na quantidade de metadados que você planeja armazenar, incluindo backups:
      export MD_STORAGE_SIZE=<integer>

      Especifique um número inteiro entre 1 e 300.

    12. Defina a variável MD_STORAGE_UNIT de ambiente:
      export MD_STORAGE_UNIT=<unit>

      Especifique Gi para gibibytes, Ti para tebibytes ou Pi para pebibytes.

    13. Defina a variável MGR_INSTANCE_REPLICAS de ambiente para o número de réplicas do Ops Manager que deseja criar:
      export MGR_INSTANCE_REPLICAS=<integer>

      Especifique um número inteiro entre 1 e 50. Especifique duas ou mais réplicas para alta disponibilidade. O valor recomendado é 3.

    14. Defina a variável MGR_REPLICA_CPU de ambiente com base no número de CPUs que você deseja alocar para cada Ops Manager réplica:
      export MGR_REPLICA_CPU=<integer>

      Especifique um número inteiro entre 1 e 16.

    15. Defina a variável MGR_REPLICA_MEMORY de ambiente com base na quantidade de memória que você deseja alocar para cada Ops Manager réplica:
      export MGR_REPLICA_MEMORY=<integer>

      Especifique um número inteiro entre 1 e 64.

    16. Defina a variável MGR_STORAGE_SIZE de ambiente com base no número de bancos de dados que você planeja gerenciar a partir desta instância do Ops Manager:
      export MGR_STORAGE_SIZE=<integer>

      Especifique um número inteiro entre 1 e 1000.

    17. Defina a variável MGR_STORAGE_UNIT de ambiente:
      export MD_STORAGE_UNIT=<unit>

      Especifique Gi para gibibytes, Ti para tebibytes ou Pi para pebibytes.

  3. Crie o mongodb-ops-mgr.json arquivo de carga útil:
    cat << EOF > ./mongodb-ops-mgr.json
    {
        "addon_type": "opsmanager",
        "display_name": "${OPS_MGR_NAME}",
        "namespace": "${PROJECT_CPD_INST_OPERANDS}",
        "addon_version": "${VERSION}",
        "create_arguments": {
            "description": "${OPS_MGR_DESCRIPTION}",
             "metadata":{
               "opsusername":"${OPS_MGR_USERNAME}",
               "opspassword":"${OPS_MGR_PASSWORD}"
             },
         "parameters": {
           "mgrapplyondedicated": "${OPS_MGR_ON_DEDICATED}",
           "mgrforcedeleteresources": "${AUTO_DELETE_RESOURCES}",
           "mdnumberofnodes": "${MD_INSTANCE_REPLICAS}",
           "mdcorespernode": "${MD_REPLICA_CPU}",
           "mdmemorypernode": "${MD_REPLICA_MEMORY}",
           "mdsize": "${MD_STORAGE_SIZE}",
           "mdunit": "${MD_STORAGE_UNIT}",
           "mdstorageclass": "${STG_CLASS_FILE}",
           "mgrnumberofnodes": "${MGR_INSTANCE_REPLICAS}",
           "mgrcorespernode": "${MGR_REPLICA_CPU}",
           "mgrmemorypernode": "${MGR_REPLICA_MEMORY}",
           "mgrsize": "${MGR_STORAGE_SIZE}",
           "mgrunit": "${MGR_STORAGE_UNIT}",
           "mgrstorageclass": "${STG_CLASS_FILE}"
           "mgrversion": "${OPS_MGR_VERSION}",
        }
      }
    }
    EOF
    As seguintes variáveis de ambiente utilizam os valores já definidos no script de variáveis de ambiente da sua instalação:
    • ${PROJECT_CPD_INST_OPERANDS}
    • ${STG_CLASS_FILE}
  4. Defina a variável PAYLOAD_FILE de ambiente como o nome completo do arquivo de carga JSON em sua estação de trabalho:
    export PAYLOAD_FILE=<fully-qualified-JSON-file-name>
  5. Defina as variáveis de ambiente usadas para se conectar à instância onde você deseja criar IBM Software Hub a instância do serviço:
    1. Defina a variável CPD_ROUTE de ambiente:
      export CPD_ROUTE=$(oc get route cpd -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath={".spec.host"})

      O comando usa a PROJECT_CPD_INST_OPERANDS variável, que já está definida no script de variáveis de ambiente da sua instalação.

    2. Defina a variável API_KEY de ambiente para a chave da API que você criou:
      export API_KEY=<your_api_key>
  6. Crie a instância do serviço a partir do arquivo de carga útil.

    O comando que você executa depende se a instância em IBM Software Hub que deseja criar a instância do serviço usa um certificado autoassinado ou um certificado assinado por uma autoridade certificadora confiável.


    A instância utiliza um certificado assinado por uma autoridade certificadora confiável
    curl --request POST \
    --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \
    --header "Authorization: ZenApiKey ${API_KEY}" \
    --header 'Content-Type: application/json' \
    --data @${PAYLOAD_FILE}

    A instância usa um certificado autoassinado (padrão)
    curl -k --request POST \
    --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \
    --header "Authorization: ZenApiKey ${API_KEY}" \
    --header 'Content-Type: application/json' \
    --data @${PAYLOAD_FILE}

    Se a solicitação foi bem-sucedida, o comando retorna um dos seguintes códigos HTTP de resposta:
    • 200 - A solicitação foi concluída com sucesso e a instância do serviço foi provisionada.
    • 202 - A solicitação foi enviada com sucesso. A instância do serviço está sendo provisionada.

    Se a solicitação não foi bem-sucedida, use o código HTTP de resposta para determinar o motivo.

Validando se a instância do serviço foi criada

Para validar que a instância do serviço foi criada:

  1. Defina a variável INSTANCE_ID de ambiente para o ID que foi retornado pelo POSTcURL comando:
    export INSTANCE_ID=<ID-from-response>
  2. Obtenha o status da instância do serviço.

    O comando que você executa depende se a instância em IBM Software Hub que deseja criar a instância do serviço usa um certificado autoassinado ou um certificado assinado por uma autoridade certificadora confiável.


    A instância utiliza um certificado assinado por uma autoridade certificadora confiável
    curl --request GET \
      --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \
      --header "Authorization: ZenApiKey ${API_KEY}" \
      --header 'Content-Type: application/json'

    A instância usa um certificado autoassinado (padrão)
    curl -k --request GET \
      --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \
      --header "Authorization: ZenApiKey ${API_KEY}" \
      --header 'Content-Type: application/json'

    • Se a solicitação foi bem-sucedida, o comando retorna o seguinte código HTTP de resposta: 200
      Encontre o provision_status parâmetro na resposta JSON.
      • Se o valor for PROVISIONED, a instância do serviço foi criada com sucesso.
      • Se o valor for PROVISION_IN_PROGRESS, aguarde alguns minutos e execute o comando novamente.
      • Se o valor for FAILED, verifique os registros dos pods zen-core-api zen-watcher e para possíveis causas.
    • Se a solicitação não foi bem-sucedida, use o código HTTP de resposta para determinar o motivo.

O quê fazer em seguida

Depois de provisionar o MongoDB Ops Manager, você pode implantar uma ou mais MongoDB instâncias de banco de dados. Para obter mais informações, consulte Criando uma instância de serviço para um MongoDB programaticamente.