Recupero dei metadati delle istanze

Il servizio IMDS (Instance Metadata Service) fornisce informazioni su un'istanza in esecuzione, inclusi una vasta gamma di dettagli sull'istanza, sulle schede VNIC (Virtual Network Interface Card) collegate, sui collegamenti dei volumi abilitati per il multipath e su eventuali metadati personalizzati definiti dall'utente. IMDS fornisce inoltre informazioni al cloud-init che è possibile utilizzare per vari task di inizializzazione del sistema.

È possibile trovare alcune di queste informazioni nella console nella pagina Dettagli istanza oppure ottenere tutte queste informazioni eseguendo il login all'istanza e utilizzando il servizio metadati. Il servizio viene eseguito su ogni istanza ed è un endpoint HTTP in ascolto su 169.254.169.254. Se un'istanza dispone di più VNIC, è necessario inviare la richiesta utilizzando la VNIC primaria.

Importante

Per aumentare la sicurezza delle richieste di metadati, si consiglia di aggiornare tutte le applicazioni in modo che utilizzino l'endpoint IMDS versione 2, se supportato dall'immagine. Quindi, disabilitare le richieste a IMDS versione 1.

Per le autorizzazioni, vedere Criteri IAM necessari per l'utilizzo delle istanze.

Aggiornamento al servizio di metadati dell'istanza v2

Il servizio metadati dell'istanza è disponibile in due versioni, la versione 1 e la versione 2. IMDSv2 offre una maggiore sicurezza rispetto a v1.

Quando si disabilita IMDSv1 e si consentono richieste solo a IMDSv2, cambiano le seguenti cose:

  • Tutte le richieste devono essere effettuate agli endpoint v2 (/opc/v2). Le richieste agli endpoint v1 (/opc/v1 e /openstack) vengono rifiutate con un errore 404 non trovato.
  • Tutte le richieste agli endpoint v2 devono includere un'intestazione di autorizzazione. Le richieste che non includono l'intestazione di autorizzazione vengono rifiutate.
  • Le richieste inoltrate utilizzando le intestazioni HTTP Forwarded, X-Forwarded-For o X-Forwarded-Host vengono rifiutate.

Per eseguire l'upgrade del servizio di metadati dell'istanza in un'istanza di computazione, attenersi ai passi di alto livello riportati di seguito.

  1. Verificare che l'istanza utilizzi un'immagine che supporta IMDSv2.
  2. Identificare le richieste agli endpoint v1 legacy.
  3. Eseguire la migrazione di tutte le applicazioni per supportare gli endpoint v2.
  4. Disabilitare tutte le richieste agli endpoint v1 precedenti.

Immagini supportate per IMDSv2

IMDSv2 è supportato sulle seguenti immagini della piattaforma:

  • Immagini di Oracle Autonomous Linux 8.x
  • Immagini di Oracle Autonomous Linux 7.x rilasciate a giugno 2020 o release successive
  • Immagini di Oracle Linux 8.x e Oracle Linux 7.x rilasciate a luglio 2020 o versioni successive

Altre immagini della piattaforma, la maggior parte delle immagini personalizzate e la maggior parte delle immagini del Marketplace non supportano IMDSv2. Le immagini Linux personalizzate potrebbero supportare IMDSv2 se l'inizializzazione cloud viene aggiornata alla versione 20.3 o successiva e l'agente Oracle Cloud viene aggiornato alla versione 0.0.19 o successiva. Le immagini Windows personalizzate potrebbero supportare IMDSv2 se Oracle Cloud Agent viene aggiornato alla versione 1.0.0.0 o successiva; cloudbase-init non supporta IMDSv2.

Identificazione delle richieste agli endpoint IMDSv1 precedenti

Per identificare gli endpoint IMDS specifici a cui vengono effettuate le richieste e gli agenti che effettuano le richieste, utilizzare la metrica InstanceMetadataRequests.

Per identificare le versioni di IMDS abilitate per un'istanza, effettuare una delle operazioni riportate di seguito.

  • Uso della console:
    1. Apri il menu di navigazione e seleziona Computazione. In Computazione, selezionare Istanze.
    2. Fare clic sull'istanza a cui si è interessati.
    3. Nella sezione Dettagli istanza, accanto al servizio metadati istanza, prendere nota dei numeri di versione.
  • Utilizzo dell'API: utilizzare l'operazione GetInstance o l'operazione ListInstances. Nella risposta, l'attributo areLegacyImdsEndpointsDisabled nell'oggetto InstanceOptions restituisce false se per l'istanza sono abilitati sia IMDSv1 che IMDSv2. Restituisce true se IMDSv1 è disabilitato.

Disabilitazione delle richieste agli endpoint IMDSv1 precedenti

Dopo aver eseguito la migrazione di tutte le applicazioni in modo che effettuino richieste solo agli endpoint IMDSv2, è necessario disabilitare tutte le richieste agli endpoint IMDSv1 legacy.
Importante

Prima di disabilitare le richieste a IMDSv1, verificare che l'istanza non utilizzi gli endpoint IMDSv1. Se l'istanza si basa ancora su IMDSv1 quando si disabilitano le richieste, alcune funzionalità potrebbero andare perdute.

Seguire una delle operazioni riportate di seguito.

  • Uso della console:
    1. Apri il menu di navigazione e seleziona Computazione. In Computazione, selezionare Istanze.
    2. Fare clic sull'istanza a cui si è interessati.
    3. Nella sezione Dettagli istanza, accanto al servizio metadati istanza, fare clic su Modifica.
    4. Per Versione IMDS consentita, selezionare l'opzione Solo versione 2.
    5. Fare clic su Salva modifiche
  • Utilizzo dell'API: utilizzare l'operazione UpdateInstance. Nel corpo della richiesta, nell'oggetto InstanceOptions, passare il valore true per l'attributo areLegacyImdsEndpointsDisabled.
Nota

Se si disabilita IMDSv1 in un'istanza che non supporta IMDSv2, potrebbe non essere possibile connettersi all'istanza all'avvio. Per abilitare nuovamente IMDSv1: utilizzando la console, nella pagina Dettagli istanza, accanto a Servizio metadati istanza, fare clic su Modifica. Selezionare l'opzione Versione 1 e versione 2, salvare le modifiche e quindi riavviare l'istanza. Utilizzando l'API, utilizzare l'operazione UpdateInstance.

Limitazione richiesta

Oracle Cloud Infrastructure applica la limitazione alle richieste di servizio dei metadati delle istanze per evitare l'uso accidentale o abusivo delle risorse. Per evitare limitazioni, invece di eseguire query sulle credenziali di sicurezza per ogni transazione, inserire nella cache le credenziali fino a quando non sono prossime alla scadenza.

Se fai troppe richieste troppo velocemente, potresti vedere alcuni avere successo e altri fallire. In caso di limitazione, Oracle consiglia di riprovare utilizzando un back-off esponenziale.

Recupero dei metadati delle istanze nelle immagini della piattaforma

È possibile ottenere i metadati delle istanze per le immagini della piattaforma utilizzando cURL nelle istanze Linux. Nelle istanze di Windows è possibile utilizzare cURL (se supportato dalla versione di Windows) o un browser Internet.

Tutte le richieste al servizio di metadati dell'istanza v2 devono includere l'intestazione seguente:

Authorization: Bearer Oracle

I metadati dell'istanza a cui si accede utilizzando IMDSv2 sono disponibili nei seguenti URL radice:

  • Tutte le informazioni sull'istanza:

    http://169.254.169.254/opc/v2/instance/
  • Informazioni sulle VNIC collegate all'istanza:

    http://169.254.169.254/opc/v2/vnics/
  • Informazioni su un volume collegato all'istanza con un collegamento abilitato per multipath:

    http://169.254.169.254/opc/v2/volumeAttachments/

I metadati dell'istanza a cui si accede utilizzando IMDSv1 sono disponibili nei seguenti URL radice. Nessuna intestazione necessaria.

  • Tutte le informazioni sull'istanza:

    http://169.254.169.254/opc/v1/instance/
  • Informazioni sulle VNIC collegate all'istanza:

    http://169.254.169.254/opc/v1/vnics/
  • Informazioni su un volume collegato all'istanza con un collegamento abilitato per multipath:

    http://169.254.169.254/opc/v1/volumeAttachments/

I valori per chiavi di metadati specifiche sono disponibili come percorsi secondari sotto l'URL radice.

Per ottenere i metadati dell'istanza per le istanze Linux

  1. Connettersi a un'istanza Linux utilizzando SSH.
  2. Utilizzare cURL per inviare una richiesta GET all'URL dei metadati dell'istanza a cui si è interessati. Ad esempio:

    curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/

Per ottenere i metadati dell'istanza per le istanze Windows

I passi per ottenere i metadati su un'istanza di Windows dipendono dalla versione del servizio di metadati dell'istanza da cui si richiedono i metadati.

Per ottenere i metadati dell'istanza di Windows mediante IMDSv2:

  1. Connettersi a un'istanza di Windows utilizzando una connessione Desktop remoto.
  2. A seconda che la versione di Windows includa cURL, effettuare una delle operazioni riportate di seguito.

    • Se la versione di Windows include cURL, utilizzare cURL per inviare una richiesta GET all'URL dei metadati dell'istanza a cui si è interessati. Ad esempio:

      curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    • Se la versione di Windows non include cURL, è possibile ottenere i metadati delle istanze nel browser Internet. Passare all'URL dei metadati dell'istanza a cui si è interessati e passare una richiesta che include l'intestazione di autorizzazione. Per ulteriori informazioni sull'inclusione delle intestazioni in una richiesta, vedere le istruzioni del browser. Potrebbe essere necessario installare un'estensione browser di terze parti che consente di includere le intestazioni delle richieste.

Per ottenere i metadati dell'istanza di Windows mediante IMDSv1:

  1. Connettersi a un'istanza di Windows utilizzando una connessione Desktop remoto.
  2. Aprire un browser Internet, quindi passare all'URL dei metadati dell'istanza a cui si è interessati.

Riprova per metadati istanza

Il servizio di metadati dell'istanza subisce periodicamente brevi periodi di inattività per la manutenzione. Pertanto, quando si tenta di accedere agli endpoint IMDS, questi potrebbero non essere disponibili. Come best practice, implementa la logica dei nuovi tentativi quando accedi agli endpoint IMDS. Si consiglia di eseguire un nuovo tentativo fino a tre volte con un timeout di 30 secondi se si riceve una risposta 404, 429 o 5xx. Per ulteriori informazioni ed esempi, consultare la documentazione di SDK for Java.

Chiavi metadati

I metadati dell'istanza includono chiavi di metadati predefinite definite da Compute e che non possono essere modificate, nonché chiavi di metadati personalizzate create dall'utente.

Alcune voci di metadati sono directory che contengono chiavi di metadati aggiuntive. Nelle tabelle seguenti, le voci con barra finale indicano una directory. Ad esempio, regionInfo/ è una directory che contiene altre chiavi di metadati.

Chiavi metadati per un'istanza

I metadati riportati di seguito sono disponibili su un'istanza. I percorsi sono relativi a http://169.254.169.254/opc/v2/instance/.

Voce metadati Descrizione
availabilityDomain

Il dominio di disponibilità in cui è in esecuzione l'istanza. Questo nome include il prefisso specifico della tenancy per il nome del dominio di disponibilità.

Esempio: Uocm:PHX-AD-1

faultDomain

Il nome del dominio di errore in cui è in esecuzione l'istanza.

Esempio: FAULT-DOMAIN-1

compartmentId

L'OCID del compartimento che contiene l'istanza.

displayName Nome riconoscibile dall'utente dell'istanza.
hostname Il nome host dell'istanza.
id OCID dell'istanza.
image OCID dell'immagine utilizzata per avviare l'istanza.
metadata/

Directory contenente i metadati personalizzati forniti per l'istanza.

Per eseguire una query sui metadati per una chiave di metadati personalizzata specifica, utilizzare metadata/<key-name> , dove <key-name> è il nome della chiave definita durante la creazione dell'istanza.

metadata/ssh_authorized_keys Per le istanze Linux, la chiave SSH pubblica fornita durante la creazione dell'istanza.
metadata/user_data Dati utente che devono essere utilizzati da cloud-init o cloudbase-init per eseguire script personalizzati o fornire una configurazione personalizzata.
region

L'area che contiene il dominio di disponibilità in cui è in esecuzione l'istanza.

Per le aree us-phoenix-1 e us-ashburn-1 vengono restituiti rispettivamente i valori phx e iad. Per tutte le altre aree, viene restituito l'identificativo completo dell'area.

Esempi: phx, eu-frankfurt-1

canonicalRegionName

Identificativo dell'area per l'area che contiene il dominio di disponibilità in cui è in esecuzione l'istanza.

Esempio: us-phoenix-1

ociAdName

Il dominio di disponibilità in cui è in esecuzione l'istanza. Questo nome viene utilizzato internamente e corrisponde all'etichetta del centro dati.

Esempio: phx-ad-1

regionInfo/ Directory contenente le informazioni sull'area che contiene il dominio di disponibilità in cui è in esecuzione l'istanza.
regionInfo/realmKey

La chiave per il realm in cui si trova l'area.

Esempio: oc1

regionInfo/realmDomainComponent

Il dominio per il realm.

Esempio: oraclecloud.com

regionInfo/regionKey

La chiave di 3 lettere per l'area.

Esempio: PHX

regionInfo/regionIdentifier

Identificativo dell'area.

Esempio: us-phoenix-1

shape La forma dell'istanza. La forma determina il numero di CPU e la quantità di memoria allocata all'istanza. È possibile enumerare tutte le forme disponibili chiamando l'operazione ListShapes.
state

Lo stato corrente del ciclo di vita dell'istanza. Per un elenco dei valori consentiti, vedere Istanza.

Esempio: Running

timeCreated La data e l'ora di creazione dell'istanza, nel formato dell'indicatore orario UNIX in millisecondi dall'epoca.
agentConfig/ Directory contenente informazioni sul software e sui plugin dell'agente Oracle Cloud in esecuzione sull'istanza.
agentConfig/monitoringDisabled

Valore booleano che indica se il software dell'agente Oracle Cloud può raccogliere metriche delle prestazioni e monitorare l'istanza utilizzando i plugin di monitoraggio.

I plugin di monitoraggio sono controllati da questo parametro e dalla configurazione per plugin nell'oggetto pluginsConfig.

agentConfig/managementDisabled

Valore booleano che indica se il software dell'agente Oracle Cloud può eseguire tutti i plugin di gestione disponibili.

I plugin di gestione sono controllati da questo parametro e dalla configurazione per plugin nell'oggetto pluginsConfig.

agentConfig/allPluginsDisabled Valore booleano che indica se l'agente Oracle Cloud può eseguire tutti i plugin disponibili. Ciò include i plugin di gestione e monitoraggio.
agentConfig/pluginsConfig/ Directory contenente le informazioni sui plugin gestiti dall'agente Oracle Cloud nell'istanza.
agentConfig/pluginsConfig/name Il nome del plugin.
agentConfig/pluginsConfig/desiredState

Indica se il plugin deve essere abilitato o disabilitato.

Per abilitare i plugin di monitoraggio e gestione, anche gli attributi monitoringDisabled e managementDisabled devono essere impostati su false.

freeformTags/ Directory contenente le tag in formato libero aggiunte all'istanza.
definedTags/ Directory contenente le tag definite aggiunte all'istanza.

Di seguito è riportata una risposta di esempio che mostra tutte le informazioni per un'istanza.

{
  "availabilityDomain" : "EMIr:PHX-AD-1",
  "faultDomain" : "FAULT-DOMAIN-3",
  "compartmentId" : "ocid1.tenancy.oc1..exampleuniqueID",
  "displayName" : "my-example-instance",
  "hostname" : "my-hostname",
  "id" : "ocid1.instance.oc1.phx.exampleuniqueID",
  "image" : "ocid1.image.oc1.phx.exampleuniqueID",
  "metadata" : {
    "ssh_authorized_keys" : "example-ssh-key"
  },
  "region" : "phx",
  "canonicalRegionName" : "us-phoenix-1",
  "ociAdName" : "phx-ad-1",
  "regionInfo" : {
    "realmKey" : "oc1",
    "realmDomainComponent" : "oraclecloud.com",
    "regionKey" : "PHX",
    "regionIdentifier" : "us-phoenix-1"
  },
  "shape" : "VM.Standard.E3.Flex",
  "state" : "Running",
  "timeCreated" : 1600381928581,
  "agentConfig" : {
    "monitoringDisabled" : false,
    "managementDisabled" : false,
    "allPluginsDisabled" : false,
    "pluginsConfig" : [ {
      "name" : "OS Management Service Agent",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Custom Logs Monitoring",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Compute Instance Run Command",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Compute Instance Monitoring",
      "desiredState" : "ENABLED"
    } ]
  },
  "freeformTags": {
    "Department": "Finance"
  },
  "definedTags": {
    "Operations": {
      "CostCenter": "42"
    }
  }
}

Chiavi di metadati per le VNIC collegate

Sono disponibili i metadati seguenti relativi alle VNIC collegate all'istanza. I percorsi sono relativi a http://169.254.169.254/opc/v2/vnics/.

Voce metadati Descrizione
vnicId OCID della VNIC.
privateIp Indirizzo IP privato dell'oggetto privateIp primario nella VNIC. L'indirizzo si trova all'interno del CIDR della subnet della VNIC.
vlanTag

Tag VLAN assegnata da Oracle della VNIC collegata.

Se la VNIC appartiene a una VLAN nell'ambito di Oracle Cloud VMware Solution, il valore vlanTag è invece il valore dell'attributo vlanTag per la VLAN. Vedere Vlan.

macAddr

Indirizzo MAC della VNIC.

Se la VNIC appartiene a una VLAN nell'ambito di Oracle Cloud VMware Solution, l'indirizzo MAC viene appreso. Se la VNIC appartiene a una subnet, l'indirizzo MAC è un valore statico fornito da Oracle.

virtualRouterIp L'indirizzo IP del router virtuale.
subnetCidrBlock Blocco CIDR della subnet.
nicIndex La scheda di interfaccia di rete fisica (NIC, Physical Network Interface Card) utilizzata dalla VNIC. Alcune forme di istanza Bare Metal hanno due NIC fisici attivi (0 e 1). Se aggiungi una VNIC secondaria a una di queste istanze, puoi specificare quale NIC verrà utilizzata dalla VNIC. Per ulteriori informazioni, consulta Schede di interfaccia di rete virtuali (VNIC).

Di seguito è riportata una risposta di esempio che mostra le VNIC collegate a un'istanza.

[ {
    "vnicId" : "ocid1.vnic.oc1.phx.exampleuniqueID",
    "privateIp" : "10.0.3.6",
    "vlanTag" : 11,
    "macAddr" : "00:00:00:00:00:01",
    "virtualRouterIp" : "10.0.3.1",
    "subnetCidrBlock" : "10.0.3.0/24",
    "nicIndex" : 0
}, {
    "vnicId" : "ocid1.vnic.oc1.phx.exampleuniqueID",
    "privateIp" : "10.0.4.3",
    "vlanTag" : 12,
    "macAddr" : "00:00:00:00:00:02",
    "virtualRouterIp" : "10.0.4.1",
    "subnetCidrBlock" : "10.0.4.0/24",
    "nicIndex" : 0
} ]

Chiavi di metadati per i volumi collegati con allegati abilitati per più percorsi

Sono disponibili i metadati seguenti relativi ai collegamenti di volumi abilitati per più percorsi collegati all'istanza. I percorsi sono relativi a http://169.254.169.254/opc/v2/volumeAttachments/.

Voce metadati Descrizione
id OCID del collegamento del volume.
instanceId OCID dell'istanza.
volumeId OCID del volume.
ipv4 Indirizzo IPv4 della destinazione iSCSI.
iqn L'IQN della destinazione iSCSI.
port La porta della destinazione iSCSI.
multipathDevices Lista di dispositivi multipath secondari con le proprietà ipv4, iqn e port.

Di seguito è riportata una risposta di esempio che mostra i collegamenti di volume abilitati per il multipath per un'istanza.

[
  {
    "id": "ocid1.volumeattachment.oc1.phx.exampleuniqueID",
    "instanceId": "ocid1.instance.oc1.phx.exampleuniqueID",
    "volumeId": "ocid1.volume.oc1.phx.exampleuniqueID",
    "ipv4": "169.254.2.2",
    "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
    "port": 3260,
    "multipathDevices":
    [
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      }
    ]
  }
]

Chiavi metadati per configurazione forma

Questo comando visualizza le OCPU disponibili in ogni forma di computazione. Queste informazioni sono utili per le forme flessibili in cui un'applicazione deve conoscere meglio OCPUS, VNIC o qualsiasi dettaglio di forma configurabile.

Sono disponibili i metadati riportati di seguito relativi alla sezione Forme di computazione collegate all'istanza. I percorsi sono relativi a http://169.254.169.254/opc/v2/instance/shapeConfig.

Voce metadati Descrizione
Shape Il nome dell'istanza.
OCPU Count Numero di OCPU limitate dalla forma VM scelta e da eventuali quote OCPU impostate per la tenancy.
networkingBandwidthInGbps Quantità di dati che possono essere trasferiti in una rete tra due punti.
Memory Il limite di memoria OCPU per la forma VM scelta. Per ulteriori informazioni, vedere Forme di computazione.
maxVnicAttachments Il numero massimo di collegamenti tra una VNIC e un'istanza.

Utilizzare il comando cURL seguente per inviare una richiesta GET ai metadati di configurazione della forma dell'istanza a cui si è interessati.

 curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254
/opc/v2/instance/shapeConfig

Di seguito è riportata una risposta di esempio che mostra i metadati di configurazione della forma per un'istanza Linux.


{
  "ocpus" : 4.0,
  "memoryInGBs" : 60.0,
  "networkingBandwidthInGbps" : 4.0,
  "maxVnicAttachments" : 4
}