Recuperando Metadados da Instância de Dentro dela

No Compute Cloud@Customer, o Serviço de Metadados da Instância (IMDS) fornece informações sobre uma instância em execução aos usuários que fizeram log-in nessa 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 VNICs

  • 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 Console do Compute Cloud@Customer e na saída da CLI 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 leitura.

Fazendo Upgrade para Pontos Finais do IMDS Versão 2

O Serviço de Metadados da Instância está disponível nas 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 IMDS versão 2, se suportados pela imagem. Em seguida, desative o uso dos 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 os 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 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}'

    As futuras solicitações 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 login 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, inclua o cabeçalho "Autorização: Portador Oracle".

    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 de 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