Comment accéder et utiliser les métadonnées des gouttelettes DigitalOcean

0
47

Les gouttelettes DigitalOcean possèdent des métadonnées qui révèlent des informations sur l'instance de calcul et son environnement. Vous pouvez fournir vos propres données arbitraires pour rendre les valeurs personnalisées accessibles depuis votre droplet.

Métadonnées par défaut

Les métadonnées par défaut disponibles sur chaque droplet vous permettent d'interroger des informations clés telles que la région du centre de données DigitalOcean, les adresses d'interface réseau et les balises attribuées dans le panneau de commande ou via l'API.

Un droplet peut récupérer ses propres métadonnées en appelant l'adresse réseau spéciale, 169.254.169.254. Connectez-vous à votre droplet via SSH et utilisez la commande curl pour tester les points de terminaison d'API disponibles.

Voici un exemple de base qui fournit une liste des champs de métadonnées pris en charge :

curl http://169.254.169.254/metadata/v1/

Vous pouvez accéder à tous les champs inclus dans la sortie de ce point de terminaison en ajoutant le nom du champ à l'URL de base de l'API de métadonnées :

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

Cet exemple fournira l'adresse IP du droplet dans sa réponse.

Champs de métadonnées

Les champs de métadonnées suivants sont actuellement pris en charge :

  • id – L'adresse IP publique du droplet.
  • nom d'hôte – Le nom d'hôte du droplet, correspondant au nom fourni lors de la création du droplet. Il peut ne pas refléter le nom dans /etc/hostname si vous le modifiez manuellement plus tard.
  • user-data – Données arbitraires fournies par l'utilisateur (voir la section suivante de ce guide).
  • données du fournisseur – Données émises par DigitalOcean utilisées pour configurer le droplet.
  • public-keys – Clés publiques SSH qui ont été ajoutées au droplet lors de sa création via le panneau de configuration ou l'API. Ces clés sont ajoutées automatiquement au compte racine.
  • région – Le centre de données DigitalOcean dans lequel réside la gouttelette, comme nyc1 ou lon1.
  • interfaces – Fournit des détails sur les interfaces réseau du droplet. La réponse contiendra des champs privés et publics, chacun étant un tableau d'objets décrivant les interfaces réseau configurées. Les détails incluent ipv4, pour obtenir l'adresse IP, et mac, l'adresse MAC signalée par la gouttelette sur ce réseau.
  • floating_ip – Lorsqu'une adresse IP flottante DigitalOcean est attribuée au droplet, ce champ expose ses détails.
  • dns – Contient un sous-champ nameservers qui répertorie les serveurs de noms utilisés par le droplet lors des recherches DNS.
  • balises – Fournit une liste de toutes les balises créées par l'utilisateur et attribuées au droplet.
  • fonctionnalités – Un objet décrivant les fonctionnalités DigitalOcean qui ont été activées pour le droplet.

Les champs contenant des données imbriquées ou des tableaux d'objets peuvent être parcourus à l'aide des points de terminaison de l'API. Voici un exemple qui fournit l'adresse IP de la première interface réseau privée du droplet :

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

Cela facilite l'extraction de valeurs spécifiques à utiliser dans vos scripts. Vous n'avez pas toujours besoin d'analyser manuellement les corps de réponse JSON.

Une fois que vous avez obtenu l'ID de votre droplet, vos scripts peuvent s'en remettre à l'API DigitalOcean standard pour obtenir plus d'informations ou effectuer des actions de droplet. Par exemple, vous souhaiterez peut-être créer un instantané avant d'exécuter une séquence de commandes destructrice. Votre script peut utiliser l'API de métadonnées pour découvrir l'ID de droplet sur lequel il s'exécute, puis transmettre l'ID à l'API REST d'instantanés pour créer un nouvel instantané. Le script serait toujours portable sur différentes gouttelettes car vous ne codez pas en dur l'ID.

Obtenir toutes les métadonnées disponibles

Vous peut obtenir toutes les métadonnées associées à un droplet en ajoutant .json au point de terminaison de l'API de base :

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

Cela fournira un objet JSON contenant tous les champs décrit ci-dessus. Les champs avec un caractère – (trait d'union) seront convertis pour utiliser _ (trait de soulignement) à la place dans le JSON.

Données utilisateur

DigitalOcean vous permet de fournir des données utilisateur lorsque vous créez un nouveau droplet. Il peut être fourni via le formulaire du panneau de configuration ou avec l'indicateur –user-data lorsque vous utilisez doctl compute droplet create. Les données utilisateur sont exposées par le champ user-data dans l'API de métadonnées.

Publicité

Comme d'autres formes de métadonnées, les données utilisateur sont immuables et ne peuvent pas être modifiées après la création du droplet. Il est normalement utilisé pour configurer les premières installations de packages et les modifications de configuration, mais vous pouvez également ajouter des champs de données arbitraires qui ont du sens pour votre organisation.

Les données utilisateur sont transmises à cloud-init. Ce programme s'exécute lors du premier démarrage d'un droplet et agit comme un mécanisme pour automatiser la configuration initiale. Pour utiliser cloud-init, ajoutez le contenu d'un fichier YAML compatible avec la configuration cloud aux données utilisateur de votre droplet. Cet exemple met à jour tous les packages existants, écrit un fichier et crée un nouveau compte utilisateur :

utilisateurs : nom : exemples de groupes : sudo shell : /bin/bash write_files : – chemin : /example.txt contenu : “Arbitrary data here” package_update : true

Autre Façons d'accéder aux métadonnées

L'API de métadonnées est un service qui n'est disponible qu'à partir d'un droplet. Vous interagissez avec lui à l'aide de curl, d'autres clients HTTP de terminal ou de la bibliothèque HTTP de votre langage de programmation dans des scripts. DigitalOcean fournit une bibliothèque cliente officielle pour Go qui agit comme un wrapper de base autour de l'API.

Vous ne pouvez pas interroger directement les métadonnées d'une gouttelette de l'extérieur. Ni la CLI Doctl ni l'API REST DigitalOcean principale ne prennent en charge la récupération de la structure de données exacte exposée par le service de métadonnées in-droplet.

Si vous souhaitez accéder aux détails des droplets tels que les interfaces réseau, les balises et la configuration du système en externe, vous devrez utiliser d'autres fonctionnalités de l'API et de Doctl. La commande doctl compute droplet get est un bon point de départ qui fournit une grande partie des mêmes informations que le service de métadonnées, ainsi que quelques détails supplémentaires, y compris les limites des ressources matérielles.

Résumé

Le service DigitalOcean Metadata est une API spéciale à laquelle vous pouvez accéder depuis vos droplets. Il vous aide à créer des scripts qui doivent référencer les attributs clés de votre droplet, tels que son ID, la région du centre de données ou l'adresse IP.

Publicité

Vous pouvez ajouter vos propres informations à un droplet’ s métadonnées pendant le processus de création. L'API de métadonnées l'exposera en tant que champ de données utilisateur. Cela signifie que vous pouvez utiliser les métadonnées comme magasin de configuration de base pour vos scripts et routines d'amorçage, réduisant ainsi le besoin de copier des fichiers ou de définir des variables d'environnement chaque fois que vous créez un nouveau droplet.

Les métadonnées sont toujours spécifiques à un individu gouttelette. L'API existe pour fournir un mécanisme d'introspection de gouttelettes. Utilisez l'API REST standard, directement ou via Doctl, si vous souhaitez interroger votre compte DigitalOcean pour trouver d'autres gouttelettes avec des attributs similaires.