Recupero dei metadati dell'istanza
Il servizio IMDS (Instance Metadata Service) fornisce informazioni su un'istanza in esecuzione che includono numerosi dettagli sull'istanza, le relative schede VNIC (Virtual Network Interface Card) collegate, i collegamenti dei volumi abilitati per multipath e tutti i 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 è possibile ottenerle tutte 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, devi inviare la richiesta utilizzando la VNIC primaria.
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. Disabilitare quindi le richieste a IMDS versione 1.
Per le autorizzazioni, vedere Criterio IAM obbligatorio per l'utilizzo delle istanze.
Aggiornamento al servizio metadati istanza v2
Il servizio di metadati dell'istanza è disponibile in due versioni, la versione 1 e la versione 2. IMDSv2 offre maggiore sicurezza rispetto a v1.
Quando si disabilita IMDSv1 e si consentono le 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
oX-Forwarded-Host
vengono rifiutate.
Per aggiornare il servizio metadati dell'istanza in un'istanza di computazione, utilizzare i passi di alto livello riportati di seguito.
- Verificare che l'istanza utilizzi un'immagine che supporti IMDSv2.
- Identificare le richieste agli endpoint v1 precedenti.
- Eseguire la migrazione di tutte le applicazioni per supportare gli endpoint v2.
- Disabilitare tutte le richieste agli endpoint v1 precedenti.
Immagini supportate per IMDSv2
IMDSv2 è supportato nelle seguenti immagini della piattaforma:
- Immagini di Oracle Autonomous Linux 8.x
- Immagini di Oracle Autonomous Linux 7.x rilasciate a giugno 2020 o versioni successive
- Immagini 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 il cloud-init viene aggiornato 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 l'agente Oracle Cloud 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 di Console:
- Aprire il menu di navigazione e selezionare Computazione. In Computazione, selezionare Istanze.
- Fare clic sull'istanza a cui si è interessati.
- Nella sezione Dettagli istanza, accanto a Servizio metadati istanza, prendere nota dei numeri di versione.
- Utilizzo dell'interfaccia API: utilizzare l'operazione GetInstance o l'operazione ListInstances. Nella risposta, l'attributo
areLegacyImdsEndpointsDisabled
nell'oggettoInstanceOptions
restituiscefalse
se per l'istanza sono abilitati sia IMDSv1 che IMDSv2. Restituiscetrue
se IMDSv1 è disabilitato.
Disabilitazione delle richieste agli endpoint IMDSv1 precedenti
Verificare che l'istanza non utilizzi gli endpoint IMDSv1 prima di disabilitare le richieste a IMDSv1. Se l'istanza si basa ancora su IMDSv1 quando si disabilitano le richieste, è possibile che alcune funzionalità vadano perse.
Eseguire una delle operazioni riportate di seguito.
- Uso di Console:
- Aprire il menu di navigazione e selezionare Computazione. In Computazione, selezionare Istanze.
- Fare clic sull'istanza a cui si è interessati.
- Nella sezione Dettagli istanza, accanto a Servizio metadati istanza, fare clic su Modifica.
- Per Versione IMDS consentita, selezionare l'opzione Solo versione 2.
- Fare clic su Salva modifiche.
- Utilizzo dell'interfaccia API: utilizzare l'operazione UpdateInstance. Nell'oggetto
InstanceOptions
del corpo della richiesta, passare il valoretrue
per l'attributoareLegacyImdsEndpointsDisabled
.
Se si disabilita IMDSv1 in un'istanza che non supporta IMDSv2, potrebbe non essere possibile connettersi all'istanza quando viene avviata. Per riabilitare 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, quindi riavviare l'istanza. Utilizzando l'interfaccia API, utilizzare l'operazione UpdateInstance.
Limitazione richiesta
Oracle Cloud Infrastructure applica la limitazione alle richieste di servizio dei metadati dell'istanza per impedire l'uso accidentale o abusivo delle risorse. Per evitare limitazioni, invece di eseguire query sulle credenziali di sicurezza per ogni transazione, inserirle nella cache finché non sono prossime alla scadenza.
Se fai troppe richieste troppo velocemente, potresti vedere alcuni avere successo e altri fallire. Se si sta verificando una limitazione, Oracle consiglia di riprovare utilizzando un back-off esponenziale.
Recupero dei metadati dell'istanza sulle immagini della piattaforma
Puoi ottenere i metadati dell'istanza per le immagini della piattaforma utilizzando cURL sulle istanze Linux. Nelle istanze di Windows, è possibile utilizzare cURL (se supportato dalla versione di Windows) o un browser Internet.
Tutte le richieste al servizio metadati 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 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. Non è necessaria alcuna intestazione.
-
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 collegamento abilitato per multipath:
http://169.254.169.254/opc/v1/volumeAttachments/
I valori per le chiavi di metadati specifiche sono disponibili come percorsi secondari sotto l'URL root.
Per recuperare i metadati dell'istanza per le istanze Linux
- Connettersi a un'istanza Linux utilizzando SSH.
-
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 di Windows
I passi per ottenere i metadati in un'istanza Windows dipendono dalla versione del servizio di metadati dell'istanza da cui si richiedono i metadati.
Per ottenere i metadati dell'istanza Windows mediante IMDSv2:
- Connettersi a un'istanza di Windows utilizzando una connessione desktop remoto.
-
A seconda che la versione di Windows in uso includa cURL, effettuare una delle operazioni riportate di seguito.
-
Se la versione di Windows in uso 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 in uso non include cURL, è possibile ottenere i metadati dell'istanza 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 consenta di includere le intestazioni delle richieste.
-
Per ottenere i metadati dell'istanza Windows mediante IMDSv1:
- Connettersi a un'istanza di Windows utilizzando una connessione desktop remoto.
- Aprire un browser Internet e quindi passare all'URL dei metadati dell'istanza a cui si è interessati.
Nuovi tentativi per i metadati dell'istanza
Il servizio metadati dell'istanza subisce periodicamente brevi periodi di inattività per le attività di manutenzione. Pertanto, quando si tenta di accedere agli endpoint IMDS, 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 e per gli esempi, vedere la documentazione del SDK per Java.
Chiavi metadati
I metadati dell'istanza includono le chiavi di metadati predefinite definite da Compute e non modificabili, nonché le chiavi di metadati personalizzate create dall'utente.
Alcune voci di metadati sono directory che contengono chiavi di metadati aggiuntive. Nelle tabelle seguenti le voci che contengono una barra finale indicano una directory. Ad esempio, regionInfo/
è una directory che contiene altre chiavi di metadati.
Chiavi di metadati per un'istanza
Sono disponibili i seguenti metadati relativi a 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: |
faultDomain |
Il nome del dominio di errore in cui è in esecuzione l'istanza. Esempio: |
compartmentId |
L'OCID del compartimento che contiene l'istanza. |
displayName |
Il nome descrittivo dell'istanza. |
hostname |
Il nome host dell'istanza. |
id |
OCID dell'istanza. |
image |
L'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/ssh_authorized_keys |
Per le istanze Linux, la chiave SSH pubblica fornita durante la creazione dell'istanza. |
metadata/user_data |
Dati utente da utilizzare da cloud-init o cloudbase-init per eseguire script personalizzati o fornire una configurazione personalizzata. |
region |
L'area contenente il dominio di disponibilità in cui è in esecuzione l'istanza. Per le aree us-phoenix-1 e us-ashburn-1, vengono restituiti rispettivamente Esempi: |
canonicalRegionName |
L'identificativo dell'area per l'area che contiene il dominio di disponibilità in cui è in esecuzione l'istanza. Esempio: |
ociAdName |
Il dominio di disponibilità in cui è in esecuzione l'istanza. Questo nome viene utilizzato internamente e corrisponde all'etichetta del centro dati. Esempio: |
regionInfo/ |
Directory contenente informazioni sulla regione che contiene il dominio di disponibilità in cui è in esecuzione l'istanza. |
regionInfo/realmKey |
La chiave del reame in cui si trova l'area. Esempio: |
regionInfo/realmDomainComponent |
Il dominio per il realm. Esempio: |
regionInfo/regionKey |
La chiave di 3 lettere per l'area. Esempio: |
regionInfo/regionIdentifier |
L'identificativo dell'area. Esempio: |
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 del ciclo di vita corrente dell'istanza. Per un elenco di valori consentiti, vedere Istanza. Esempio: |
timeCreated |
La data e l'ora di creazione dell'istanza, nel formato dell'indicatore orario UNIX in millisecondi da Epoch. |
agentConfig/ |
Directory che contiene informazioni sul software e sui plugin dell'agente Oracle Cloud in esecuzione nell'istanza. |
agentConfig/monitoringDisabled |
Valore booleano che indica se il software dell'agente Oracle Cloud può raccogliere le 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 |
agentConfig/managementDisabled |
Valore booleano che indica se il software Oracle Cloud Agent può eseguire tutti i plugin di gestione disponibili. I plugin di gestione sono controllati da questo parametro e dalla configurazione per plugin nell'oggetto |
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 che contiene 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 |
freeformTags/ |
Directory che contiene qualsiasi tag in formato libero aggiunto all'istanza. |
definedTags/ |
Directory che contiene 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
I metadati riportati di seguito sono disponibili per le 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 |
L'indirizzo IP privato dell'oggetto privateIp primario nella VNIC. L'indirizzo si trova all'interno del CIDR della subnet della VNIC. |
vlanTag |
La tag VLAN assegnata da Oracle della VNIC collegata. Se la VNIC appartiene a una VLAN nell'ambito di Oracle Cloud VMware Solution, il valore |
macAddr |
L'indirizzo MAC della VNIC. Se la VNIC appartiene a una VLAN nell'ambito di Oracle Cloud VMware Solution, viene recuperato l'indirizzo MAC. Se la VNIC appartiene a una subnet, l'indirizzo MAC è un valore statico fornito da Oracle. |
virtualRouterIp |
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 istanze Bare Metal prevedono due NIC fisici attivi (0 e 1). Se aggiungi una VNIC secondaria a una di queste istanze, puoi specificare quale NIC utilizzerà la 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 metadati per volumi collegati a collegamenti abilitati per più percorsi
I metadati riportati di seguito sono disponibili per i 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 |
L'OCID del collegamento del volume. |
instanceId |
OCID dell'istanza. |
volumeId |
L'OCID del volume. |
ipv4 |
L'indirizzo IPv4 della destinazione iSCSI. |
iqn |
L'IQN della destinazione iSCSI. |
port |
La porta della destinazione iSCSI. |
multipathDevices |
Elenco 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 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 la configurazione della 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 avere maggiori informazioni su OCPUS, VNIC o su eventuali dettagli delle forme configurabili.
Sono disponibili i seguenti metadati relativi alle 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 |
Il numero di OCPU limitato dalla forma VM scelta e da qualsiasi quota OCPU impostata per la tenancy. |
networkingBandwidthInGbps |
Quantità di dati che possono essere trasferiti in una rete tra due punti. |
Memory |
Limite di memoria OCPU per la forma VM scelta. Per ulteriori informazioni, vedere Forme di calcolo. |
maxVnicAttachments |
Il numero massimo di collegamenti tra una VNIC e un'istanza. |
Utilizzare il seguente comando cURL 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
}