DigitalOcean Droplet-metagegevens openen en gebruiken

0
161

DigitalOcean-druppels bevatten metadata die informatie onthullen over de rekeninstantie en zijn omgeving. U kunt uw eigen willekeurige gegevens opgeven om aangepaste waarden toegankelijk te maken vanuit uw druppel.

Standaardmetagegevens

Met de standaardmetagegevens die beschikbaar zijn op elke druppel, kunt u query's uitvoeren belangrijke informatie zoals de DigitalOcean-datacenterregio, netwerkinterface-adressen en tags toegewezen in het controlepaneel of via de API.

Een droplet kan zijn eigen metadata ophalen door het speciale netwerkadres, 169.254.169.254. Maak via SSH verbinding met je droplet en gebruik de curl-opdracht om te experimenteren met de beschikbare API-eindpunten.

Hier is een basisvoorbeeld met een lijst van ondersteunde metadatavelden:

curl http://169.254.169.254/metadata/v1/

U kunt toegang krijgen tot alle velden in de uitvoer van dit eindpunt door de veldnaam toe te voegen aan de basis-URL van de metadata-API:

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

Dit voorbeeld geeft het IP-adres van de droplet in zijn antwoord.

Metadatavelden

De volgende metadatavelden worden momenteel ondersteund:

  • id – Het openbare IP-adres van de druppel.
  • hostnaam – De hostnaam van de druppel, die overeenkomt met de naam die is opgegeven bij het maken van de druppel. Het komt mogelijk niet overeen met de naam in /etc/hostname als u het later handmatig wijzigt.
  • user-data – Willekeurige door de gebruiker aangeleverde gegevens (zie de latere sectie in deze handleiding).
  • leveranciersgegevens – Door DigitalOcean uitgegeven gegevens die worden gebruikt om de droplet te configureren.
  • public-keys – Openbare SSH-sleutels die aan de droplet zijn toegevoegd toen deze werd gemaakt via het configuratiescherm of de API. Deze sleutels worden automatisch aan het root-account toegevoegd.
  • regio – Het DigitalOcean-datacenter waarin de druppel zich bevindt, zoals nyc1 of lon1.
  • interfaces – Geeft details over de netwerkinterfaces van de droplet. Het antwoord bevat privé- en openbare velden, elk een reeks objecten die geconfigureerde netwerkinterfaces beschrijven. De details omvatten ipv4, om het IP-adres te verkrijgen, en mac, het door de droplet gerapporteerde MAC-adres op dat netwerk.
  • floating_ip – Wanneer een DigitalOcean Floating IP aan de druppel wordt toegewezen, geeft dit veld de details ervan weer.
  • dns – Bevat een subveld nameservers dat de naamservers vermeldt die door de droplet worden gebruikt bij het uitvoeren van DNS-lookups.
  • tags – Biedt een lijst met alle door de gebruiker gemaakte tags die aan de droplet zijn toegewezen.
  • kenmerken – Een object dat DigitalOcean-functies beschrijft die voor de druppel zijn geactiveerd.

Velden die geneste gegevens bevatten of arrays van objecten zijn, kunnen worden doorlopen met behulp van API-eindpunten. Hier is een voorbeeld dat het IP-adres van de eerste privé-netwerkinterface van de droplet levert:

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

Dit maakt het gemakkelijk om specifieke waarden te extraheren voor gebruik in uw scripts. U hoeft de JSON-antwoordteksten niet altijd handmatig te ontleden.

Zodra u de ID van uw droplet hebt verkregen, kunnen uw scripts worden uitgesteld naar de reguliere DigitalOcean API om meer informatie te verkrijgen of om droplet-acties uit te voeren. U wilt bijvoorbeeld een momentopname maken voordat u een destructieve reeks opdrachten uitvoert. Uw script kan de metadata-API gebruiken om de druppel-ID te ontdekken waarop het draait, en vervolgens de ID doorgeven aan de REST-API voor snapshots om een ​​nieuwe snapshot te maken. Het script is nog steeds overdraagbaar over verschillende droplets, aangezien je de ID niet hardcodeert.

Alle beschikbare metadata verkrijgen

Jij kan alle metadata die aan een druppel zijn gekoppeld ophalen door .json toe te voegen aan het basis-API-eindpunt:

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

Dit levert een JSON-object op dat alle velden bevat hierboven omschreven. Velden met een – (koppelteken) worden geconverteerd om in plaats daarvan _ (underscore) in de JSON te gebruiken.

Gebruikersgegevens

DigitalOcean stelt u in staat gebruikersgegevens te verstrekken wanneer u een nieuwe druppel maakt. Het kan worden geleverd via het formulier in het configuratiescherm of met de vlag –user-data wanneer u doctl compute droplet create gebruikt. Gebruikersgegevens worden weergegeven door het veld voor gebruikersgegevens in de metadata-API.

Advertentie

Net als andere vormen van metadata zijn gebruikersgegevens onveranderlijk en kunnen ze niet worden gewijzigd nadat de druppel is gemaakt. Het wordt normaal gesproken gebruikt om eerste-run pakketinstallaties en configuratiewijzigingen te configureren, maar u kunt ook willekeurige gegevensvelden toevoegen die logisch zijn voor uw organisatie.

Gebruikersgegevens worden doorgegeven aan cloud-init. Dit programma draait op de eerste keer opstarten van een druppel en fungeert als een mechanisme om de eerste installatie te automatiseren. Om cloud-init te gebruiken, voegt u de inhoud van een cloud-config-compatibel YAML-bestand toe aan de gebruikersgegevens van uw droplet. Dit voorbeeld werkt alle bestaande pakketten bij, schrijft een bestand en maakt een nieuw gebruikersaccount aan:

gebruikers: naam: voorbeeldgroepen: sudo shell: /bin/bash write_files: – pad: /example.txt inhoud: “willekeurige gegevens hier” package_update: true

Overig Manieren om toegang te krijgen tot metadata

De metadata-API is een service die alleen beschikbaar is vanuit een druppel. Je communiceert ermee met behulp van curl, alternatieve terminal-HTTP-clients of de HTTP-bibliotheek van je programmeertaal in scripts. DigitalOcean biedt een officiële clientbibliotheek voor Go die fungeert als een basiswikkel rond de API.

U kunt de metadata van een druppel niet rechtstreeks van buitenaf opvragen. Noch de Doctl CLI, noch de belangrijkste DigitalOcean REST API ondersteunen het ophalen van de exacte gegevensstructuur die wordt weergegeven door de in-droplet-metadataservice.

Als u extern toegang wilt hebben tot droplet-details, zoals netwerkinterfaces, tags en systeemconfiguratie, moet u andere functies van de API en Doctl gebruiken. De opdracht doctl compute droplet get is een goed startpunt dat veel van dezelfde informatie biedt als de Metadata-service, evenals enkele extra details, waaronder limieten voor hardwarebronnen.

Samenvatting

De DigitalOcean Metadata-service is een speciale API waartoe u toegang hebt vanuit uw droplets. Het helpt je bij het bouwen van scripts die moeten verwijzen naar de belangrijkste kenmerken van je droplet, zoals de ID, datacenterregio of IP-adres.

Advertentie

Je kunt je eigen informatie aan een droplet toevoegen’ s metadata tijdens het creatieproces. De metadata-API zal deze weergeven als het gebruikersgegevensveld. Dit betekent dat je metadata kunt gebruiken als een basisconfiguratiearchief voor je scripts en bootstrap-routines, waardoor het minder nodig is om bestanden te kopiëren of omgevingsvariabelen in te stellen telkens wanneer je een nieuwe droplet maakt.

Metadata is altijd specifiek voor een persoon druppel. De API bestaat om een ​​mechanisme voor druppelintrospectie te bieden. Gebruik de reguliere REST API, rechtstreeks of via Doctl, als u uw DigitalOcean-account wilt doorzoeken om andere druppels met vergelijkbare kenmerken te vinden.