Come accedere e utilizzare i metadati dei droplet di DigitalOcean

0
55

Le gocce di DigitalOcean possiedono metadati che rivelano informazioni sull'istanza di calcolo e sul suo ambiente. Puoi fornire i tuoi dati arbitrari per rendere i valori personalizzati accessibili dall'interno del tuo droplet.

Metadati predefiniti

I metadati predefiniti disponibili su ogni droplet ti consentono di eseguire query informazioni chiave come la regione del centro dati DigitalOcean, gli indirizzi dell'interfaccia di rete e i tag assegnati nel pannello di controllo o tramite l'API.

Una goccia può recuperare i propri metadati chiamando l'indirizzo di rete speciale, 169.254.169.254. Connettiti al tuo droplet su SSH e usa il comando curl per sperimentare gli endpoint API disponibili.

Ecco un esempio di base che fornisce un elenco di campi di metadati supportati:

curl http://169.254.169.254/metadata/v1/

È possibile accedere a qualsiasi campo incluso nell'output di questo endpoint aggiungendo il nome del campo all'URL di base dell'API dei metadati:

curl http://169.254.169.254/metadata/v1/id Advertisement

Questo esempio fornirà l'indirizzo IP del droplet nella sua risposta.

Campi di metadati

I seguenti campi di metadati sono attualmente supportati:

  • id – Indirizzo IP pubblico del droplet.
  • nome host – Il nome host del droplet, che corrisponde al nome fornito durante la creazione del droplet. Potrebbe non riflettere il nome in /etc/hostname se lo cambi manualmente in un secondo momento.
  • user-data – Dati arbitrari forniti dall'utente (vedere la sezione successiva di questa guida).
  • dati-fornitore – Dati emessi da DigitalOcean utilizzati per configurare il droplet.
  • chiavi-pubbliche – Chiavi pubbliche SSH che sono state aggiunte al droplet quando è stato creato tramite il pannello di controllo o l'API. Queste chiavi vengono aggiunte automaticamente all'account root.
  • region – Il datacenter DigitalOcean in cui risiede la goccia, come nyc1 o lon1.
  • interfacce – Fornisce i dettagli delle interfacce di rete del droplet. La risposta conterrà campi privati ​​e pubblici, ciascuno un array di oggetti che descrivono le interfacce di rete configurate. I dettagli includono ipv4, per ottenere l'indirizzo IP, e mac, l'indirizzo MAC segnalato dal droplet su quella rete.
  • floating_ip – Quando un IP mobile DigitalOcean viene assegnato al droplet, questo campo ne espone i dettagli.
  • dns – Contiene un sottocampo server dei nomi che elenca i server dei nomi utilizzati dal droplet durante l'esecuzione delle ricerche DNS.
  • tags – Fornisce un elenco di tutti i tag creati dall'utente assegnati al droplet.
  • caratteristiche – Un oggetto che descrive le funzionalità di DigitalOcean che sono state attivate per il droplet.

I campi che contengono dati nidificati o sono array di oggetti possono essere attraversati utilizzando gli endpoint API. Ecco un esempio che fornisce l'indirizzo IP della prima interfaccia di rete privata del droplet:

curl http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address

Ciò semplifica l'estrazione di valori specifici da utilizzare negli script. Non è sempre necessario analizzare manualmente i corpi di risposta JSON.

Una volta ottenuto l'ID del tuo droplet, i tuoi script potrebbero rinviare alla normale API DigitalOcean per ottenere maggiori informazioni o eseguire azioni droplet. Ad esempio, potresti voler creare un'istantanea prima di eseguire una sequenza distruttiva di comandi. Il tuo script potrebbe utilizzare l'API dei metadati per scoprire l'ID droplet su cui è in esecuzione, quindi passare l'ID all'API REST delle istantanee per creare una nuova istantanea. Lo script sarebbe comunque trasferibile su droplet diversi poiché non stai codificando l'ID.

Ottenere tutti i metadati disponibili

Tu può ottenere tutti i metadati associati a un droplet aggiungendo .json all'endpoint API di base:

curl http://169.254.169.254/metadata/v1.json

Questo fornirà un oggetto JSON contenente tutti i campi descritto sopra. I campi con un carattere – (trattino) verranno convertiti per utilizzare _ (trattino basso) invece nel JSON.

Dati utente

DigitalOcean ti consente di fornire dati utente quando crei un nuovo droplet. Può essere fornito tramite il modulo nel pannello di controllo o con il flag –user-data quando si utilizza doctl compute droplet create. I dati utente sono esposti dal campo user-data nell'API dei metadati.

Annuncio

Come altre forme di metadati, i dati dell'utente sono immutabili e non possono essere modificati dopo la creazione del droplet. Normalmente viene utilizzato per configurare le installazioni dei pacchetti di prima esecuzione e le modifiche alla configurazione, ma puoi anche aggiungere campi dati arbitrari che abbiano senso per la tua organizzazione.

I dati utente vengono passati a cloud-init. Questo programma viene eseguito al primo avvio di una gocciolina e funge da meccanismo per automatizzare la configurazione iniziale. Per utilizzare cloud-init, aggiungi il contenuto di un file YAML compatibile con cloud-config ai dati utente del tuo droplet. Questo esempio aggiorna tutti i pacchetti esistenti, scrive un file e crea un nuovo account utente:

utenti: nome: esempio gruppi: sudo shell: /bin/bash write_files: – percorso: /example.txt contenuto: “Dati arbitrari qui” package_update: true

Altro Modi per accedere ai metadati

L'API dei metadati è un servizio disponibile solo all'interno di un droplet. Interagisci con esso utilizzando curl, client HTTP del terminale alternativo o la libreria HTTP del tuo linguaggio di programmazione all'interno degli script. DigitalOcean fornisce una libreria client ufficiale per Go che funge da wrapper di base attorno all'API.

Non è possibile interrogare direttamente i metadati di un droplet dall'esterno. Né la Doctl CLI né la principale API REST di DigitalOcean supportano il recupero dell'esatta struttura di dati esposta dal servizio di metadati in-droplet.

Se desideri accedere ai dettagli del droplet come interfacce di rete, tag e configurazione del sistema esternamente, dovrai utilizzare altre funzionalità dell'API e Doctl. Il comando doctl compute droplet get è un buon punto di partenza che fornisce molte delle stesse informazioni del servizio Metadata, oltre ad alcuni dettagli aggiuntivi inclusi i limiti delle risorse hardware.

Riepilogo

Il servizio DigitalOcean Metadata è un'API speciale a cui puoi accedere dall'interno dei tuoi droplet. Ti aiuta a creare script che devono fare riferimento agli attributi chiave del tuo droplet, come il suo ID, la regione del datacenter o l'indirizzo IP.

Pubblicità

Puoi aggiungere le tue informazioni a un droplet’ s metadati durante il processo di creazione. L'API dei metadati lo esporrà come campo dati utente. Ciò significa che puoi utilizzare i metadati come archivio di configurazione di base per i tuoi script e le routine di bootstrap, riducendo la necessità di copiare file o impostare variabili di ambiente ogni volta che crei un nuovo droplet.

I metadati sono sempre specifici per un individuo gocciolina. L'API esiste per fornire un meccanismo di introspezione delle goccioline. Utilizza la normale API REST, direttamente o tramite Doctl, se desideri interrogare il tuo account DigitalOcean per trovare altre gocce con attributi simili.