Cómo acceder y utilizar los metadatos de gota de DigitalOcean

DigitalOcean Drops posee metadatos que revelan información sobre la instancia informática y su entorno. Puede proporcionar sus propios datos arbitrarios para hacer que los valores personalizados sean accesibles desde dentro de su gota.

Los metadatos predefinidos disponibles en cada gota le permiten consultar información clave como la región del centro de datos de DigitalOcean, las direcciones de la interfaz de red y las etiquetas asignadas en el panel de control o mediante la API.

Una gota puede recuperar sus propios metadatos llamando a la dirección de red especial, 169.254.169.254. Conéctese a su gota a través de SSH y use el curl comando para probar los puntos finales de API disponibles.

A continuación, se muestra un ejemplo básico que proporciona una lista de campos de metadatos compatibles:

curl http://169.254.169.254/metadata/v1/

Puede acceder a cualquier campo incluido en la salida de este punto final agregando el nombre del campo a la URL base de la API de metadatos:

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

Este ejemplo proporcionará la dirección IP del droplet en su respuesta.

Actualmente se admiten los siguientes campos de metadatos:

  • id - La dirección IP pública de la estación.
  • hostname - El nombre de host de la gota, correspondiente al nombre proporcionado al crear la gota. Puede que no refleje el nombre en /etc/hostname si lo cambia manualmente más tarde.
  • user-data - Datos arbitrarios proporcionados por el usuario (consulte la siguiente sección de esta guía).
  • vendor-data - Datos emitidos por DigitalOcean utilizados para configurar la gota.
  • public-keys - Claves públicas SSH que se agregaron al droplet cuando se creó a través del panel de control o API. Estas claves se agregan a root cuenta automáticamente.
  • region - El centro de datos de DigitalOcean donde reside la gota, como nyc1 o lon1.
  • interfaces - Proporciona detalles sobre las interfaces de red del droplet. La respuesta contendrá private Y public campos, cada uno de los cuales es un conjunto de objetos que describen las interfaces de red configuradas. Los detalles incluyen ipv4, para obtener la dirección IP, y mac, la dirección MAC informada por la gota en esa red.
  • floating_ip - Cuando se asigna una IP móvil de DigitalOcean a la gota, este campo muestra sus detalles.
  • dns - Contiene un subcampo nameservers que enumera los servidores de nombres utilizados por la gota al realizar búsquedas de DNS.
  • tags - Proporciona una lista de todas las etiquetas creadas por el usuario asignadas a la gota.
  • features - Un objeto que describe las funciones de DigitalOcean que se han habilitado para la gota.

Los campos que contienen datos anidados o son matrices de objetos se pueden atravesar utilizando los puntos finales de la API. A continuación, se muestra un ejemplo que proporciona la dirección IP de la primera interfaz de red privada del droplet:

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

Esto facilita la extracción de valores específicos para su uso en scripts. No siempre es necesario analizar manualmente los cuerpos de respuesta JSON.

Una vez que obtenga su ID de droplet, sus scripts pueden apuntar a la API de DigitalOcean normal para obtener más información o realizar acciones de droplet. Por ejemplo, es posible que desee tomar una instantánea antes de ejecutar una secuencia destructiva de comandos. Su secuencia de comandos puede usar la API de metadatos para averiguar el ID de droplet en el que se está ejecutando, luego pasar el ID a la API REST de instantánea para crear una nueva instantánea. El script aún sería portátil en diferentes gotitas ya que no está codificando la ID.

Puede obtener todos los metadatos asociados con una gota agregando .json al punto final de la API principal:

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

Esto proporcionará un objeto JSON que contiene todos los campos descritos anteriormente. Campos con - (guión) el carácter se convertirá para usar _ (subrayado) en su lugar en JSON.

Datos del usuario

DigitalOcean le permite proporcionar datos de usuario cuando crea una nueva gota. Se puede proporcionar a través del formulario en el panel de control o con el --user-data señal cuando estás usando doctl compute droplet create. Los datos del usuario están expuestos a user-data campo en la API de metadatos.

Al igual que otras formas de metadatos, los datos del usuario son inmutables y no se pueden cambiar después de que se crea la gota. Normalmente se usa para configurar instalaciones de paquetes de primera ejecución y cambios de configuración, pero también puede agregar campos de datos arbitrarios que tengan sentido para su organización.

Los datos del usuario se pasan a cloud-init. Este programa se ejecuta en el primer lanzamiento de una gota y sirve como mecanismo para automatizar la configuración inicial. Usar cloud-init, agregue el contenido de un cloud-config- YAML compatible con tu gota user-data. Este ejemplo actualiza todos los paquetes existentes, escribe un archivo y crea una nueva cuenta de usuario:

users:
  name: example
  groups: sudo
  shell: /bin/bash
write_files:
  - path: /example.txt
    content: "Arbitrary data here"
package_update: true

La API de metadatos es un servicio disponible solo dentro de una gota. Interactuar con él usando curl, cliente HTTP de terminal alternativo, o la biblioteca HTTP de su lenguaje de programación dentro de los scripts. DigitalOcean proporciona una biblioteca cliente oficial para Go que actúa como un contenedor básico de la API.

No puede consultar directamente los metadatos de una gota desde el exterior. Ni la CLI de Doctl ni la API REST principal de DigitalOcean admiten la recuperación de la estructura de datos exacta expuesta por el servicio de metadatos en droplet.

Si desea acceder a los detalles de la gota, como interfaces de red, etiquetas y configuración del sistema de manera externa, deberá utilizar otras funciones de API y Doctl. los doctl compute droplet get El comando es un buen punto de partida que proporciona gran parte de la misma información que el servicio de metadatos, así como algunos detalles adicionales, incluidos los límites de recursos de hardware.

Resumen

El servicio de metadatos de DigitalOcean es una API especial a la que puede acceder desde dentro de sus gotas Lo ayuda a crear secuencias de comandos que necesitan hacer referencia a los atributos clave de su gota, como su ID, la región del centro de datos o la dirección IP.

Puede agregar su información a los metadatos de una gota durante el proceso de creación. La API de metadatos lo expondrá como user-data campo. Esto significa que puede usar los metadatos como repositorio de configuración base para sus scripts y rutinas de arranque, lo que reduce la necesidad de copiar archivos o establecer variables de entorno cada vez que crea una nueva gota.

Los metadatos siempre son específicos de una sola gota. La API existe para proporcionar un mecanismo de introspección de gotas. Utilice la API REST normal, ya sea directamente o a través de Doctl, si desea consultar su cuenta de DigitalOcean en busca de otras gotas con atributos similares.

¿Qué te ha parecido?
Subir