Hur man kommer åt och använder DigitalOcean Droplet Metadata

0
147

DigitalOcean-droppar har metadata som avslöjar information om beräkningsinstansen och dess miljö. Du kan tillhandahålla din egen godtyckliga data för att göra anpassade värden tillgängliga inifrån din droppe.

Standardmetadata

Standardmetadata som är tillgänglig på varje droppe låter dig fråga nyckelinformation såsom DigitalOcean datacenterregion, nätverksgränssnittsadresser och taggar tilldelade i kontrollpanelen eller via API:et.

En droppe kan hämta sin egen metadata genom att anropa den speciella nätverksadressen, 169.254.169.254. Anslut till din droppe via SSH och använd curl-kommandot för att experimentera med tillgängliga API-slutpunkter.

Här är ett grundläggande exempel som ger en lista över metadatafält som stöds:

curl http://169.254.169.254/metadata/v1/

Du kan komma åt vilket som helst av fälten som ingår i denna slutpunkts utdata genom att lägga till fältnamnet till metadata-API:s basadress:

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

Det här exemplet ger droppens IP-adress i svaret.

Metadatafält

Följande metadatafält stöds för närvarande:

  • id – Droplets offentliga IP-adress.
  • värdnamn – Droplets värdnamn, matchar namnet som angavs när droppen skapades. Det kanske inte återspeglar namnet i /etc/hostname om du ändrar det manuellt senare.
  • användardata – Godtycklig användarlevererad data (se det senare avsnittet i den här guiden).
  • leverantörsdata – DigitalOcean-utfärdad data som används för att konfigurera droppen.
  • public-keys – SSH publika nycklar som lades till droppen när den skapades via kontrollpanelen eller API. Dessa nycklar läggs till rotkontot automatiskt.
  • region – DigitalOcean-datacentret som droppen finns i, till exempel nyc1 eller lon1.
  • gränssnitt – Ger information om droppens nätverksgränssnitt. Svaret kommer att innehålla privata och offentliga fält, vart och ett av en rad objekt som beskriver konfigurerade nätverksgränssnitt. Detaljerna inkluderar ipv4, för att få IP-adressen, och mac, droppens rapporterade MAC-adress på det nätverket.
  • floating_ip – När en DigitalOcean Floating IP tilldelas droppen, exponerar detta fält dess detaljer.
  • dns – Innehåller ett underfält namnservrar som listar namnservrarna som används av droppen när DNS-sökningar utförs.
  • taggar – Ger en lista över alla användarskapade taggar som tilldelats droppen.
  • funktioner – Ett objekt som beskriver DigitalOcean-funktioner som har aktiverats för droppen.

Fält som innehåller kapslade data eller är arrayer av objekt kan passeras med API-slutpunkter. Här är ett exempel som ger IP-adressen för droppens första privata nätverksgränssnitt:

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

Detta gör det enkelt att extrahera specifika värden för användning i dina skript. Du behöver inte alltid analysera JSON-svarskropparna manuellt.

När du väl har fått din droplets ID kan dina skript hänvisa till det vanliga DigitalOcean API för att få mer information eller utföra dropletåtgärder. Som ett exempel kanske du vill skapa en ögonblicksbild innan du kör en destruktiv sekvens av kommandon. Ditt skript kan använda metadata-API:et för att upptäcka dropp-ID:t det körs på, och sedan skicka ID:t till ögonblicksbilder REST API för att skapa en ny ögonblicksbild. Skriptet skulle fortfarande vara portabelt över olika droppar eftersom du inte hårdkodar ID:t.

Hämta all tillgänglig metadata

Du kan få all metadata som är associerad med en droppe genom att lägga till .json till bas-API-slutpunkten:

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

Detta ger ett JSON-objekt som innehåller alla fält beskrivits ovan. Fält med ett – (bindestreck) konverteras till att använda _ (understreck) istället i JSON.

Användardata

DigitalOcean låter dig tillhandahålla användardata när du skapar en ny droppe. Den kan tillhandahållas antingen via formuläret i kontrollpanelen eller med flaggan –user-data när du använder doctl compute droplet create. Användardata exponeras av användardatafältet i metadata-API:et.

Annons

Liksom andra former av metadata är användardata oföränderlig och kan inte ändras efter att droppen har skapats. Den används normalt för att konfigurera förstakörda paketinstallationer och konfigurationsändringar, men du kan också lägga till godtyckliga datafält som är meningsfulla för din organisation.

Användardata skickas till cloud-init. Det här programmet körs på en droppes första start och fungerar som en mekanism för att automatisera den initiala installationen. För att använda cloud-init, lägg till innehållet i en molnkonfigurationskompatibel YAML-fil till din droplets användardata. Det här exemplet uppdaterar alla befintliga paket, skriver en fil och skapar ett nytt användarkonto:

användare: namn: exempelgrupper: sudo-skal: /bin/bash write_files: – sökväg: /example.txt innehåll: “Godycklig data här” package_update: true

Övrigt Sätt att komma åt metadata

Metadata-API:et är en tjänst som bara är tillgänglig från en liten droppe. Du interagerar med den med hjälp av curl, alternativa HTTP-terminalklienter eller ditt programmeringsspråks HTTP-bibliotek i skript. DigitalOcean tillhandahåller ett officiellt klientbibliotek för Go som fungerar som ett grundläggande omslag runt API:t.

Du kan inte direkt fråga en droppes metadata från utsidan. Varken Doctl CLI eller det huvudsakliga DigitalOcean REST API stöder att hämta den exakta datastrukturen som exponeras av in-droplet-metadatatjänsten.

Om du vill komma åt droppdetaljer som nätverksgränssnitt, taggar och systemkonfiguration externt, måste du använda andra funktioner i API:et och Doctl. Kommandot doctl compute droplet get är en bra utgångspunkt som ger mycket av samma information som Metadata-tjänsten, såväl som några extra detaljer inklusive hårdvarurursgränser.

Sammanfattning

DigitalOcean Metadata-tjänsten är ett speciellt API som du kan komma åt från dina droppar. Det hjälper dig att bygga skript som behöver referera till nyckelattribut för din droppe, såsom dess ID, datacenterregion eller IP-adress.

Annons

Du kan lägga till din egen information till en droppe’ s metadata under skapandeprocessen. Metadata-API:et kommer att exponera det som användardatafältet. Detta innebär att du kan använda metadata som en grundläggande konfigurationslagring för dina skript och bootstrap-rutiner, vilket minskar behovet av att kopiera filer eller ställa in miljövariabler varje gång du skapar en ny droppe.

Metadata är alltid specifik för en individ liten droppe. API existerar för att tillhandahålla en droppintrospektionsmekanism. Använd det vanliga REST API, antingen direkt eller via Doctl, om du vill fråga ditt DigitalOcean-konto för att hitta andra droppar med liknande attribut.