Recupero dei metadati dell'istanza dall'istanza

In Compute Cloud@Customer, IMDS (Instance Metadata Service) fornisce le informazioni su un'istanza in esecuzione agli utenti che hanno eseguito il login a tale istanza. IMDS fornisce inoltre informazioni al cloud-init che è possibile utilizzare per vari task di inizializzazione del sistema.

Nota

Per accedere ai metadati IMDS, utilizzare un'immagine dell'istanza fornita da Oracle.

I metadati IMDS includono informazioni sull'istanza come quelle riportate di seguito.

  • Chiave pubblica SSH che consente agli utenti di eseguire il login all'istanza

  • VNIC collegate all'istanza, ID VNIC

  • Blocchi CIDR istanza

In generale, i metadati dell'istanza IMDS includono le informazioni riportate di seguito.

  • Le stesse informazioni visualizzate nella pagina dei dettagli di un'istanza nella console di Compute Cloud@Customer e nell'output dell'interfaccia CLI dell'istanza get.

  • Informazioni personalizzate aggiunte a un'istanza utilizzando le opzioni --metadata, --extended-metadata, --ssh-authorized-keys-file e --user-data-file del comando launch dell'istanza. Impossibile aggiornare questi metadati dopo l'avvio dell'istanza. Per un utente che ha eseguito il login all'istanza, i metadati dell'istanza sono di sola lettura.

Aggiornamento agli endpoint IMDS versione 2

Il servizio metadati istanza è disponibile in due versioni: versione 1 e versione 2.

Importante

Per aumentare la sicurezza delle richieste di metadati, eseguire l'upgrade di tutte le applicazioni in modo che utilizzino gli endpoint IMDS versione 2, se supportati dall'immagine. Disabilitare quindi l'uso degli endpoint IMDS versione 1.

Gli endpoint IMDS versione 2 (IMDSv2) sono supportati nelle immagini Oracle Linux elencate nella Matrice del sistema operativo guest. Altre immagini della piattaforma e la maggior parte delle altre immagini non supportano IMDSv2.

Per ogni istanza, eseguire i passi riportati di seguito per eseguire l'upgrade a IMDSv2.

  1. Identificare le applicazioni che effettuano richieste IMDSv1.

    Ad esempio, cloud-init effettua richieste agli endpoint dell'istanza /v#.

  2. Eseguire la migrazione delle applicazioni identificate per supportare gli endpoint IMDSv2.

    Quando si utilizzano gli endpoint /v2, è necessario includere l'intestazione "Autorizzazione: Oracle servizio di trasporto". Vedere gli esempi in Recupero dei metadati dell'istanza IMDS.

  3. Disabilitare gli endpoint IMDSv1.

    Eseguire una delle seguenti operazioni, come descritto nella sezione Creazione di un'istanza.

    • Nella pagina dei dettagli di un'istanza, in Dettagli istanza, controllare il valore degli endpoint del servizio di metadati dell'istanza precedente. Se il valore degli endpoint del servizio metadati delle istanze precedenti è Abilitato, selezionare Modifica nel menu Controlli e selezionare la casella per gli endpoint del servizio metadati delle istanze precedenti disabilitati.

    • Nell'output di instance list o instance get, in instance-options, controllare il valore di are-legacy-imds-endpoints-disabled. Se il valore di are-legacy-imds-endpoints-disabled è null o false, utilizzare il comando instance update per specificare l'opzione seguente:

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

    Le richieste future agli endpoint legacy (v1) verranno rifiutate con un errore 404 non trovato.

Recupero dei metadati dell'istanza IMDS

Per recuperare i metadati dell'istanza IMDS, attenersi alla procedura riportata di seguito.

  1. Eseguire il login all'istanza.

  2. Utilizzare un comando cURL per recuperare le informazioni sui metadati dall'endpoint HTTP.

    Le informazioni vengono fornite tramite un endpoint HTTP in ascolto su 169.254.169.254. Se un'istanza dispone di più VNIC, devi inviare la richiesta utilizzando la VNIC primaria.

    Utilizzare il comando instance per recuperare i metadati dell'istanza. Utilizzare il comando vnics per recuperare i dati della VNIC.

    Se si utilizzano gli endpoint /v2, come illustrato negli esempi riportati di seguito, è necessario includere l'intestazione "Autorizzazione: Oracle servizio di trasporto".

    Esempio: metadati dell'istanza

    $ 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
    }

    Per recuperare un singolo valore, specificare il nome della chiave come mostrato nell'esempio seguente.

    Esempio: metadati 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"
        }
    ]

    È possibile visualizzare tutti i dati per una o più VNIC specificando l'indice di array per i dati VNIC specificati oppure è possibile recuperare un singolo valore per la VNIC specificata:

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