Usar a Interface de Linha de Comando do Oracle Cloud Infrastructure para gerenciar o Oracle Exadata Database Service on Cloud@Customer

Introdução

A Interface de Linha de Comando (CLI da OCI) da Oracle Cloud Infrastructure é uma ótima ferramenta para gerenciar seus recursos na OCI, incluindo os recursos do Oracle Exadata Database Service on Cloud@Customer. A CLI da OCI permite orquestrar e automatizar operações da OCI com facilidade e eficiência. Como a CLI do OCI chama a API REST do OCI, isso significa que a CLI do OCI e a API REST do OCI são compatíveis, mesmo que a sintaxe seja diferente. Você pode usar a CLI do OCI durante o desenvolvimento de automações da API REST do OCI para tentativa e erro e, em seguida, implantar suas automações com menos esforço.

Esta é uma série de duas partes, em que nesta primeira parte estamos apresentando os conceitos básicos da CLI da OCI, enquanto na segunda parte estamos nos concentrando mais nos comandos e fluxos de trabalho específicos do Oracle Exadata Database Service on Cloud@Customer.

Observação: A CLI do OCI também é necessária ao usar o Dimensionamento Dinâmico com o plug-in remoto, mas o próprio Dimensionamento Dinâmico não será abordado neste tutorial.

Objetivos

Pré-requisitos

Tarefa 1: Instalar a CLI do OCI

A CLI da OCI é criada no SDK (Software Development Kit) da OCI para Python e executada em Mac, Windows ou Linux. O código Python faz chamadas para APIs do OCI para fornecer a funcionalidade implementada para os vários serviços, incluindo o Oracle Exadata Database Service on Cloud@Customer e o Oracle Autonomous Database on Exadata Cloud@Customer.

  1. Faça download da CLI do OCI para seu sistema operacional aqui: repositório da CLI GitHub do OCI.

  2. Siga as instruções de instalação de acordo com o seu sistema operacional.

  3. Execute o comando a seguir para verificar sua instalação.

    $ oci --version
    
  4. Configure uma configuração usando a caixa de diálogo de configuração que contém as credenciais necessárias para trabalhar com o OCI.

    $ oci setup config
    
  5. Verifique seu arquivo de configuração.

    Por exemplo:

    [DEFAULT]
    user=ocid1.user.oc1..<unique_ID>
    fingerprint=<your_fingerprint>
    key_file=~/.oci/oci_api_key.pem
    tenancy=ocid1.tenancy.oc1..<unique_ID>
    # Some comment
    region=us-ashburn-1
    
  6. Execute o comando a seguir para verificar sua conectividade, que mostrará o namespace da sua tenancy.

    $ oci os ns get
    
  7. Execute o comando a seguir para listar seus compartimentos disponíveis.

    $ oci iam compartment list
    

    Isso gerará a seguinte resposta JSON:

    {
     "data": [
    {
           "compartment-id": "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq",
           "defined-tags": {
                     "Oracle-Tags": {
                                    "CreatedBy": "default/some-email@oracle.com",
                                    "CreatedOn": "2023-11-10T13:27:32.885Z"
    }
    },
    "description": "Compartment for Exadata Infrastructure",
    "freeform-tags": {},
    "id": "ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdh7q",
    "inactive-status": null,
    "is-accessible": null,
    "lifecycle-state": "ACTIVE",
    "name": "ExaInfra",
    "time-created": "2023-11-10T13:27:32.945000+00:00"
         }
         ]
    }
    

    Observação: Observe que a saída foi truncada para mostrar apenas o primeiro compartimento.

  8. Execute o comando a seguir para listar todas as solicitações de serviço em um compartimento.

    $ oci work-requests work-request list --compartment-id ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdh7q
    

Use a Formatação de Saída para Filtrar e Formatar as Saídas de Comando para suas Necessidades

Como você viu nos exemplos anteriores, a resposta JSON dos comandos da CLI do OCI pode ser extensa, difícil de seguir e não é fácil de ler.

No prompt de comando do Linux, por exemplo, você sempre pode canalizar a saída para ferramentas elétricas como grep para filtrar sua resposta.

Use o comando a seguir para listar todos os clusters de VMs em um compartimento específico e filtrar por id.

$ oci db vm-cluster list --compartment-id <OCID> | grep \"id\"

Isso gerará a seguinte resposta:

"id":"ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
"id":"ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"

No entanto, a CLI do OCI incorporou a funcionalidade de consulta com o parâmetro --query, no qual você pode especificar quais campos deseja consultar.

  1. Execute o comando a seguir com o parâmetro --query.

    $ oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"id\"]"
    

    A resposta JSON será:

    [
         [
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
         ],
         [
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"
          ]
    ]
    
  2. Você pode especificar facilmente campos adicionais atrás de --query para criar uma consulta mais complexa.

    $ oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"hostname\" , \"id\"]"
    

    A resposta JSON será:

    [
         [
    "fraexaclu1-uvlkz",
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
         ],
         [
    "fraexaclu2-2uyfk",
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"
         ]
        ]	
    
  3. Você pode obter uma saída mais amigável usando o parâmetro da tabela --output.

    $oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"hostname\" , \"id\"]" --output table
    

    A resposta será:

    +----------------------------------------------------------------------------------------------------------------------+
    | Column1          |  Column2                                                                                          |
    +----------------------------------------------------------------------------------------------------------------------+
    | fraexaclu1-uvlkz | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq |
    | fraexaclu2-2uyfk | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra |
    +------------------+---------------------------------------------------------------------------------------------------+
    
  4. Você também pode especificar os cabeçalhos das colunas usando o parâmetro --query.

    $ oci db vm-cluster list --compartment-id <OCID> --query "data[].{\"Hostname\" : \"hostname\" , \"OCID\" : \"id\" }" --output table
    

    A resposta será:

    +----------------------------------------------------------------------------------------------------------------------+
    | Hostname          | OCID                                                                                             |
    +----------------------------------------------------------------------------------------------------------------------+
    | fraexaclu1-uvlkz | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq |
    | fraexaclu2-2uyfk | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra |
    +------------------+---------------------------------------------------------------------------------------------------+
    

    Observação: É importante entender a correlação entre a sintaxe usada com o parâmetro --query e a resposta JSON. Os subcomandos da CLI do OCI, como list, geralmente retornam muitos resultados, enquanto os subcomandos da CLI do OCI, como get, retornam apenas um resultado.

    • Onde a resposta JSON mostra que os dados são uma lista ou matriz, conforme especificado por um [.

      [opc@jens-oci-1 ~]$ oci db vm-cluster list
      {
           "data": [
                {
      

      A sintaxe da consulta será semelhante a esta:

      --query "data[].[ field1 , field2 ]"
      
    • Onde a resposta JSON mostra que os dados são um único objeto.

      [opc@jens-oci-1 ~]$ oci db vm-cluster get
      {
           "data": {
      

      Em seguida, a sintaxe do comando get terá esta aparência:

      --query "data.[ field1 , field2 ]"
      

Usar a Assistência de Entrada para Simplificar o Uso da CLI do OCI

Há várias maneiras diferentes de obter assistência de entrada com a CLI da OCI para casos de uso ad-hoc e automatizados.

Confirmações

Mais Recursos de Aprendizado

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.