Acerca de los metadatos de VM


Cada instancia de máquina virtual (VM) almacena sus metadatos en un servidor de metadatos. La VM obtiene acceso de manera automática a la API del servidor de metadatos sin ninguna autorización adicional. Los metadatos se almacenan como pares clave-valor.

En este documento, se proporciona una descripción general de los metadatos de VM y se explican los tipos y las propiedades de los metadatos de VM.

Usos de metadatos de VM

En las siguientes secciones, se describen algunas situaciones en las que puedes usar entradas de metadatos para administrar tus VM.

Secuencia de comandos de inicio y apagado

El servidor de metadatos es muy útil cuando se usa en combinación con las secuencias de comandos de inicio y apagado porque puedes usarlo para obtener información única sobre una VM, sin autorización adicional y de manera programática.

Por ejemplo, puedes escribir una secuencia de comandos de inicio que obtenga el par clave-valor de metadatos para la IP externa de una VM y usarla en tu secuencia de comandos a fin de configurar una base de datos. Debido a que las claves de metadatos predefinidas de Compute Engine son las mismas en cada VM, puedes volver a usar la secuencia de comandos sin tener que actualizarla para cada VM. Esto te ayudará a crear un código menos frágil para las aplicaciones.

Mantenimiento de host

El servidor de metadatos proporciona información sobre una opción de programación de una VM mediante la entrada del directorio de metadatos scheduling/ y el atributo maintenance-event. Puedes usar estos valores de metadatos a fin de recibir notificaciones cuando esté por suceder un evento de mantenimiento, de modo que puedas preparar tu entorno para el evento. Para obtener más información, consulta Obtén avisos de migración en vivo.

Atributos de invitado

Los atributos de invitado son un tipo específico de metadatos personalizados en los que las aplicaciones pueden escribir mientras se ejecutan en la VM. Usa los atributos de invitado solo para casos de uso que requieran pequeñas cantidades de datos que no cambien con frecuencia. Para obtener más información sobre los atributos de invitado, consulta la sección Establece y consulta atributos de invitado.

Consideraciones de seguridad de metadatos

Cuando realizas una solicitud para obtener información del servidor de metadatos, la solicitud y la respuesta de metadatos posterior nunca abandonan el host físico que ejecuta la VM.

Sin embargo, cualquier proceso que pueda consultar la URL de metadatos tiene acceso a todos los valores del servidor de metadatos. Esto incluye cualquier valor de metadatos personalizados que escribas en el servidor. Google recomienda que tengas cuidado cuando escribas valores sensibles en el servidor de metadatos o cuando ejecutes procesos de terceros.

Claves de metadatos predefinidos y personalizados

Cada entrada de metadatos se almacena en el servidor de metadatos como pares clave-valor. Las claves de metadatos distinguen mayúsculas de minúsculas. Tus claves pueden ser claves predefinidas o personalizadas de metadatos.

Claves de metadatos predefinidas

Las claves de metadatos predefinidas son claves de metadatos que crea Compute Engine. Cuando creas una VM, Compute Engine configura automáticamente los valores de metadatos para algunas de estas claves en esa VM, por ejemplo, el ID de instancia de VM o el ID del proyecto. En el caso de las claves predefinidas en las que Compute Engine no establece automáticamente un valor, puedes elegir entre un conjunto de valores que están disponibles según la configuración del sistema. Solo puedes actualizar los valores de estas claves, pero no las claves en sí.

Para obtener más información sobre las claves de metadatos predefinidas y una lista de estas claves, consulta Claves de metadatos predefinidos.

Claves de metadatos personalizados

Los metadatos personalizados te permiten crear y usar tus propios pares clave-valor de metadatos en una VM individual o en un proyecto. Puedes agregar nuevas claves de metadatos personalizados, actualizar los valores de tus claves existentes y quitar las entradas de metadatos personalizados cuando no las necesites. Establecer metadatos personalizados es útil para pasar valores arbitrarios a las VMs en un proyecto. También es útil para crear secuencias de comandos de inicio y cierre.

Para obtener información sobre cómo agregar, actualizar o quitar metadatos personalizados de tus VMs, consulta Configura metadatos personalizados.

Tipos de metadatos

Las entradas de metadatos de VM pueden proporcionar información específica de una VM individual o un proyecto. Los metadatos se dividen en metadatos de proyecto y de instancia, según el tipo de información que proporcione.

Metadatos del proyecto

Los metadatos del proyecto proporcionan información sobre el proyecto. Los metadatos del proyecto se dividen aún más en los siguientes tipos, según el permiso que definas para ellos:

  • Los metadatos en todo el proyecto son metadatos que defines con un permiso de proyecto. Establece estos metadatos a nivel de proyecto y estos se propagan a todas las VMs de ese proyecto.

    Puedes usar claves de metadatos predefinidas y personalizadas para establecer metadatos de todo el proyecto. Obtén más información sobre las claves predefinidas de metadatos de proyectos y cómo configurar metadatos personalizados para todo el proyecto.

  • Los metadatos zonales del proyecto (vista previa) son metadatos del proyecto que defines con un permiso zonal dentro del proyecto. Los metadatos que estableces solo se propagan a las VMs en la zona configurada en ese proyecto. Los metadatos zonales del proyecto te ayudan con el aislamiento de errores y proporcionan mayor confiabilidad. También puedes usar los metadatos zonales del proyecto para anular los valores de todo el proyecto para cualquier clave existente y usar valores específicos de la zona.

    Compute Engine no proporciona ninguna clave predefinida para los metadatos zonales del proyecto. Debes crear tus propias claves de metadatos zonales de proyecto personalizados. Obtén más información sobre cómo establecer metadatos zonales personalizados del proyecto.

Metadatos de la instancia

Los metadatos de la instancia proporcionan información sobre una instancia de VM específica. Debes configurar los metadatos de la instancia por separado para cada instancia de VM individual.

Para establecer metadatos de instancias, puedes usar claves de metadatos predefinidas y personalizadas. Obtén más información sobre las claves de metadatos de instancia predefinidas y cómo configurar metadatos de instancia personalizados.

Cómo se organizan los metadatos

Compute Engine almacena y mantiene las claves y los valores de metadatos para las VMs y los proyectos en las listas de directorios. Según el tipo de metadatos, Compute Engine almacena entradas de metadatos en uno de los siguientes directorios:

Tipo de metadatos Directorio
  • Metadatos de todo el proyecto
  • Metadatos zonales del proyecto

http://metadata.google.internal/computeMetadata/v1/project/
Metadatos de la instancia

http://metadata.google.internal/computeMetadata/v1/instance/

Cada directorio almacena entradas de metadatos en forma de pares clave-valor. Algunas entradas de metadatos son directorios que contienen otras claves de metadatos. Las entradas de metadatos que funcionan como directorios se marcan con una barra diagonal (/) en el nombre de la clave de metadatos. Por ejemplo, /project/attributes/ es un directorio en el directorio project/ que contiene otras claves de metadatos. Para crear tu propia lista de directorios de metadatos, debes usar una barra diagonal (/) en el nombre de la clave de metadatos cuando creas tu entrada de metadatos personalizados.

Las entradas de metadatos zonales de proyectos y proyectos se almacenan en el mismo directorio project/. Si configuras valores diferentes para las mismas claves de metadatos personalizados para VMs a nivel de proyecto y a nivel de proyecto zonal, los valores de metadatos zonales del proyecto para esas claves tienen prioridad sobre los valores de metadatos de todo el proyecto en las zonas respectivas.

  • Si agregas un valor de metadatos zonales de proyecto para una clave de metadatos que ya tiene un valor de nivel de proyecto, Compute Engine anula el valor de todo el proyecto para las VMs de esta zona especificada y actualiza el directorio /project con el valor zonal del proyecto.
  • Si agregas un valor de metadatos nuevo a nivel de proyecto para una clave de metadatos que ya tiene un valor zonal de proyecto, no cambiará nada. Compute Engine conserva el valor zonal del proyecto en el directorio /project de la zona específica.
  • Si no especificas un valor zonal para un proyecto a fin de obtener una clave de metadatos personalizada en una zona específica, pero la clave tiene un valor para todo el proyecto, las VMs seguirán teniendo los valores de todo el proyecto en esas zonas.

Por ejemplo, supongamos que defines un par de metadatos de key-1=value-1 para todo el proyecto. Supongamos que también defines un par de metadatos zonales de proyecto para key-1=zonal-value-1 solo para la zona us-central1-a. Todas las VMs en la zona us-central1-a de tu proyecto heredan key-1=zonal-value1 como el par de metadatos. El par de metadatos permanece key-1=value-1 para todas las VMs en otras zonas en las que no configuraste ningún metadato zonal del proyecto para key-1.

Próximos pasos