Recuperando Metadados da Instância de Dentro da Instância

No Private Cloud Appliance, o Serviço de Metadados da Instância (IMDS) fornece informações sobre uma instância em execução aos usuários que estão conectados a essa instância. O IMDS também fornece informações para executar cloud-init, que você pode usar para várias tarefas de inicialização do sistema.

Observação

Para acessar metadados do IMDS, use uma imagem de instância fornecida pela Oracle.

Os metadados do IMDS incluem informações da instância, como as seguintes:

  • A chave pública SSH que permite que os usuários façam log-in na instância

  • VNICs anexadas à instância, IDs de VNIC

  • Blocos CIDR da instância

Em geral, os metadados da instância do IMDS incluem as seguintes informações:

  • As mesmas informações que você vê na página de detalhes de uma instância na UI da Web do serviço Compute e na saída da CLI do OCI get da instância.

  • Informações personalizadas que você adiciona a uma instância usando as opções --metadata, --extended-metadata, --ssh-authorized-keys-file e --user-data-file do comando launch da instância. Não é possível atualizar esses metadados após a inicialização da instância. Para um usuário conectado à instância, os metadados da instância são somente para leitura.

Fazendo Upgrade para Pontos Finais do IMDS Versão 2

O Serviço de Metadados da Instância está disponível em duas versões: 1 e 2.

Importante

Para aumentar a segurança das solicitações de metadados, faça upgrade de todos os aplicativos para usar os pontos finais do IMDS versão 2, se suportados pela imagem. Em seguida, desative o uso de pontos finais do IMDS versão 1.

Os pontos finais do IMDS versão 2 (IMDSv2) são suportados nas imagens do Oracle Linux listadas na Matriz do Sistema Operacional Convidado. Outras imagens da plataforma e a maioria das outras imagens não suportam o IMDSv2.

Para cada instância, execute as seguintes etapas para fazer upgrade para IMDSv2:

  1. Identifique aplicativos que estão fazendo solicitações IMDSv1.

    Por exemplo, cloud-init faz solicitações para pontos finais da instância /v#.

  2. Migre os aplicativos identificados para suportar pontos finais IMDSv2.

    Ao usar pontos finais /v2, inclua o cabeçalho "Autorização: Oracle do Portador". Consulte os exemplos em Recuperando Metadados da Instância do IMDS.

  3. Desative os pontos finais IMDSv1.

    Execute uma das etapas a seguir, conforme descrito em Criando uma Instância.

    • Na página de detalhes de uma instância, em Detalhes da Instância, verifique o valor dos Pontos Finais do Serviço de Metadados da Instância Legada. Se o valor dos Pontos Finais do Serviço de Metadados da Instância Legada estiver Ativado, selecione Editar no menu Controles e marque a caixa de seleção Pontos Finais do Serviço de Metadados da Instância Legada Desativados.

    • Na saída de instance list ou instance get, em instance-options, verifique o valor de are-legacy-imds-endpoints-disabled. Se o valor de are-legacy-imds-endpoints-disabled for null ou false, use o comando instance update para especificar a seguinte opção:

      --instance-options '{"areLegacyImdsEndpointsDisabled": true}'

    Solicitações futuras para pontos finais legados (v1) serão rejeitadas com um erro 404 não encontrado.

Recuperando Metadados da Instância do IMDS

Para recuperar os metadados da instância do IMDS, siga estas etapas:

  1. Faça log-in na instância.

  2. Use um comando cURL para recuperar as informações de metadados do ponto final HTTP.

    As informações são fornecidas por meio de um ponto final HTTP que faz listening em 169.254.169.254. Se uma instância tiver várias VNICs, envie a solicitação usando a VNIC principal.

    Use o comando instance para recuperar os metadados da instância. Use o comando vnics para recuperar os dados da VNIC.

    Se você estiver usando pontos finais /v2, conforme mostrado nos exemplos a seguir, deverá incluir o cabeçalho "Autorização: Oracle do Portador".

    Exemplo: Metadados da Instância

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    {
        "availabilityDomain": "AD-1",
        "faultDomain": "FAULT-DOMAIN-1",
        "compartmentId": "ocid1.compartment.unique_ID",
        "displayName": "dev1",
        "hostname": "hostname",
        "id": "ocid1.instance.unique_ID",
        "image": "ocid1.image.unique_ID",
        "metadata": {
            "ssh_authorized_keys": "public_SSH_key"
        },
        "region": "PCA",
        "canonicalRegionName": "PCA",
        "ociAdName": "PCA",
        "regionInfo": null,
        "shape": "VM.PCAStandard.E5.Flex",
        "state": "RUNNING",
        "timeCreated": 1634943279000,
        "agentConfig": null
    }

    Para recuperar um único valor, especifique o nome da chave, conforme mostrado no exemplo a seguir.

    Exemplo: Metadados de VNIC

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/
    [
        {
            "vnicId": "ocid1.vnic.unique_ID",
            "privateIp": "privateIp",
            "vlanTag": 0,
            "macAddr": "00:13:97:9f:16:32",
            "virtualRouterIp": "virtualRouterIp",
            "subnetCidrBlock": "subnetCidrBlock"
        }
    ]

    Você pode exibir todos os dados de uma das várias VNICs especificando o índice de array para esses dados da VNIC ou pode recuperar um único valor para essa VNIC especificada:

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/0/privateIp
    privateIp