Establecer y eliminar metadatos personalizados


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

Los metadatos personalizados le permiten crear y utilizar sus propios pares clave-valor de metadatos en una máquina virtual individual o en un proyecto. Puede agregar nuevas claves de metadatos personalizadas, actualizar los valores de sus claves existentes y eliminar cualquier entrada de metadatos personalizados cuando no las necesite. Configurar metadatos personalizados es útil para pasar valores arbitrarios a las máquinas virtuales de un proyecto. También es útil para crear scripts de inicio y apagado .

Este documento proporciona información sobre cómo hacer lo siguiente:

Antes de comenzar

  • Revise los conceptos básicos sobre cómo se definen, categorizan y organizan los metadatos de VM para Compute Engine. Para obtener más información, consulte Acerca de los metadatos de VM .
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Roles requeridos

Para obtener los permisos que necesita para configurar o eliminar metadatos personalizados en máquinas virtuales, solicite a su administrador que le otorgue las siguientes funciones de IAM:

Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Estos roles predefinidos contienen los permisos necesarios para configurar o eliminar metadatos personalizados en las máquinas virtuales. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para configurar o eliminar metadatos personalizados en máquinas virtuales:

  • Si sus máquinas virtuales usan cuentas de servicio: iam.serviceAccounts.actAs en las cuentas de servicio o el proyecto
  • Para agregar, actualizar o eliminar metadatos de proyectos personalizados:
    • compute.projects.get en el proyecto
    • compute.projects.setCommonInstanceMetadata en el proyecto
  • Para agregar, actualizar o eliminar metadatos zonales personalizados:
    • compute.instanceSettings.get en la configuración de la instancia en la zona requerida en el proyecto.
    • compute.instanceSettings.update en la configuración de la instancia en la zona requerida en el proyecto.
  • Para agregar, actualizar o eliminar metadatos de instancia personalizados:
    • compute.instances.get en la máquina virtual
    • compute.instances.setMetadata en la máquina virtual

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Limitaciones

Compute Engine impone un límite total combinado de 512 KB para todas las entradas de metadatos. Los límites de tamaño máximo también se aplican a cada key y value de la siguiente manera:

  • Cada key de metadatos tiene un límite máximo de 128 bytes.
  • Cada key de metadatos distingue entre mayúsculas y minúsculas.

    Para los metadatos zonales, Compute Engine no te permite crear dos claves de metadatos independientes con la misma cadena, incluso si están escritas en casos diferentes. Por ejemplo, si tiene una clave de metadatos personalizada existente para metadatos zonales llamada project-zonal-metadata-key , entonces, para los metadatos zonales en esa zona, no puede crear nuevas claves de metadatos, como Project-Zonal-Metadata-Key , PROJECT-ZONAL-METADATA-KEY o cualquier otra variación de la misma cadena.

  • Cada value de metadatos tiene un límite máximo de 256 KB.

  • Cada value de metadatos distingue entre mayúsculas y minúsculas, excepto los valores booleanos.

Por ejemplo, las claves SSH se almacenan como metadatos personalizados bajo la clave ssh-keys . Si el contenido o value de los metadatos de esta clave supera el límite de 256 KB, no podrá agregar más claves SSH. Si alcanza este límite, considere eliminar las claves no utilizadas para liberar espacio de metadatos para claves nuevas.

Además, si proporciona el contenido del script de inicio o apagado directamente, el contenido de estos scripts de inicio y apagado también podría almacenarse como metadatos personalizados y contar para estas limitaciones de tamaño. Para evitar esto, almacene su script de inicio o apagado como un archivo alojado en una ubicación externa, como Cloud Storage, y proporcione la URL del script de inicio al crear una VM. De esta manera, estos archivos se descargan en la máquina virtual, en lugar de almacenarse en el servidor de metadatos.

valores booleanos

Para campos que aceptan valores booleanos, TRUE o FALSE , también se pueden utilizar los siguientes valores:

Estado Valores alternativos
TRUE Y , Yes , 1
FALSE N , No , 0

Los valores booleanos no distinguen entre mayúsculas y minúsculas. Por ejemplo, puede utilizar False , false o FALSE para desactivar una función.

Establecer metadatos personalizados en máquinas virtuales

Esta sección proporciona información sobre cómo agregar nuevos metadatos personalizados o actualizar valores de metadatos personalizados existentes para tus VM de Compute Engine de una de las siguientes maneras:

Establecer metadatos de proyecto personalizados

Puedes agregar o actualizar los metadatos personalizados para todas las instancias de un proyecto mediante la consola de Google Cloud, la CLI de Google Cloud o REST.

Utilice estas instrucciones para aplicar la configuración de metadatos a todas las máquinas virtuales del proyecto. Por ejemplo, si define un par de metadatos de proyecto de baz=bat , ese par de metadatos se aplica automáticamente a todas las máquinas virtuales del proyecto.

Consola

  1. En la consola de Google Cloud, vaya a la página Metadatos .

    Vaya a la página de metadatos personalizados

  2. Haga clic en Editar en la parte superior de la página.

  3. Para agregar nuevas entradas de metadatos de proyecto personalizados, haga lo siguiente:

    1. Navegue hasta la parte inferior de la página y haga clic en Agregar elemento .
    2. En el campo Clave , ingrese el nombre de su clave de metadatos personalizada.
    3. En el campo Valor , ingrese el valor de metadatos del proyecto personalizado.
    4. Opcional. Para agregar más entradas de metadatos de proyecto personalizados, repita los pasos anteriores para cada entrada de metadatos que desee agregar.
    5. Para terminar de agregar las entradas de metadatos de su proyecto personalizado, haga clic en Guardar .
  4. Para editar entradas de metadatos de proyectos personalizados existentes, haga lo siguiente:

    1. Navegue hasta la entrada de metadatos que desea editar.
    2. Para actualizar el nombre de una clave de metadatos personalizada específica, en el campo Clave de esa entrada, ingrese el nuevo nombre.
    3. Para actualizar el valor de una entrada de metadatos de proyecto personalizado, en el campo Valor de esa entrada, ingrese el nuevo valor.
    4. Opcional. Para eliminar una entrada de metadatos de proyecto personalizado específica, haga clic en el icono de junto a la entrada de metadatos.
    5. Para editar varias entradas de metadatos de proyectos personalizados, repita los pasos anteriores para cada entrada de metadatos que desee editar.
    6. Para terminar de editar las entradas de metadatos de su proyecto personalizado, haga clic en Guardar .

nube de gcloud

Utilice el comando project-info add-metadata .

gcloud compute project-info add-metadata \
    --metadata=KEY=VALUE

Reemplace lo siguiente:

  • KEY : el nombre de su clave de metadatos
  • VALUE : el valor almacenado para esta clave

Ejemplo

Por ejemplo, para configurar dos nuevas entradas foo=bar y baz=bat en un proyecto, ejecute el siguiente comando:

gcloud compute project-info add-metadata \
    --metadata=foo=bar,baz=bat

Opcionalmente, puede especificar uno o más archivos desde los cuales leer metadatos usando el indicador --metadata-from-file .

DESCANSAR

  1. Opcional. Para realizar un bloqueo optimista, opcionalmente puede proporcionar una huella digital.

    Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia después de cada solicitud y, si proporciona una huella digital que no coincide, su solicitud se rechaza.

    Si no proporciona una huella digital, no se realiza ninguna verificación de coherencia y la solicitud projects().setCommonInstanceMetadata se realiza correctamente. Este comportamiento es diferente de los métodos instances().setMetadata e instanceSettings().patch , donde siempre se requiere una huella digital.

    Para obtener la huella digital actual de un proyecto, llame al método project().get .

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    El resultado es similar al siguiente:

    {
      "name": "myproject",
      "commonInstanceMetadata": {
        "kind": "compute#metadata",
        "fingerprint": "FikclA7UBC0=",
        ...
      }
    }
    
  2. Realice una solicitud al método projects().setCommonInstanceMetadata y configure sus pares clave-valor de metadatos personalizados:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
      "fingerprint": "FikclA7UBC0=",
      "items": [
        {
        "key": "foo",
        "value": "bar"
        }
      ]
    }
    

Reemplace PROJECT_ID con el ID de su proyecto.

Establecer metadatos zonales personalizados

Cuando configura metadatos zonales personalizados, agrega o actualiza las entradas de metadatos zonales para sus máquinas virtuales en una zona específica de un proyecto. Puede hacer lo siguiente configurando metadatos zonales personalizados:

  • Cree nuevas claves de metadatos personalizadas para una zona específica en un proyecto y establezca metadatos para todas las máquinas virtuales en esa zona en ese proyecto.
  • Actualice los valores de las entradas de metadatos zonales personalizados existentes para todas las máquinas virtuales en una zona específica de un proyecto.
  • Para las claves de metadatos personalizados existentes que tienen valores de metadatos del proyecto, anule esos valores de metadatos del proyecto en zonas específicas y, en su lugar, establezca metadatos zonales. Después de configurar los metadatos zonales para esas claves en una zona específica, todas las máquinas virtuales en esa zona en ese proyecto usan los valores de metadatos zonales para esas claves.

Cosas a tener en cuenta antes de configurar metadatos zonales personalizados

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

  • Si agregas un valor de metadatos zonales para una clave de metadatos que ya tiene un valor de metadatos del proyecto, Compute Engine anula el valor de metadatos del proyecto para las VM en esta zona especificada y actualiza el directorio /project con el valor zonal.
  • Si agrega un nuevo valor de metadatos para todo el proyecto para una clave de metadatos que ya tiene un valor de metadatos zonal, nada cambia. Compute Engine conserva el valor de metadatos zonales en el directorio /project de la zona específica.
  • Si no especifica un valor de metadatos zonal para una clave de metadatos personalizada en una zona específica, pero la clave tiene un valor de metadatos del proyecto, sus máquinas virtuales seguirán teniendo los valores de metadatos del proyecto en esas zonas.

Procedimiento

Puedes agregar o actualizar los metadatos zonales personalizados en una zona específica de un proyecto mediante la CLI o REST de Google Cloud.

nube de gcloud

  • Para agregar o actualizar metadatos zonales personalizados, usa el comando gcloud compute project-zonal-metadata add .

    gcloud compute project-zonal-metadata add \
      --zone=ZONE \
      --project=PROJECT_ID  \
      --metadata=KEY1=VALUE1,KEY2=VALUE2,...

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • ZONE : la zona donde desea agregar o actualizar metadatos zonales.
    • KEY1 , KEY2 ...: las claves de metadatos personalizados para las que desea agregar o actualizar valores de metadatos zonales.
    • VALUE1 , VALUE2 ...: los valores de metadatos zonales que desea establecer para sus claves de metadatos personalizadas nuevas y existentes. Dependiendo de su clave y valor de metadatos personalizados, sucede una de las siguientes cosas:

    • Si la clave de metadatos personalizados correspondiente es una clave existente que tiene metadatos del proyecto, entonces, en la zona especificada, Compute Engine anula el valor de metadatos del proyecto de la clave con el valor de metadatos zonales especificado. Todas las máquinas virtuales en la zona especificada del proyecto heredan estos metadatos zonales recién especificados para esa clave y las máquinas virtuales en otras zonas continúan conservando sus valores de metadatos zonales o de proyecto predominantes. Si realiza actualizaciones futuras al valor de metadatos del proyecto para esta clave, las máquinas virtuales en esta zona del proyecto no se verán afectadas y continuarán usando el valor de metadatos zonales para esta clave.

    • Si la clave de metadatos personalizada correspondiente es una nueva clave de metadatos que no se usa para proyectos existentes o metadatos zonales, Compute Engine crea la clave de metadatos personalizada y establece este valor como los metadatos zonales en la zona especificada.

    • Si la clave de metadatos personalizada correspondiente es una clave de metadatos existente con un valor de metadatos zonal en la zona especificada:

      • Si el valor de metadatos especificado es diferente del valor existente, Compute Engine actualiza la entrada de metadatos zonal con el nuevo valor.
      • Si el valor de metadatos especificado es el mismo que el valor existente, entonces la entrada de metadatos zonales permanece sin cambios.

Ejemplo: agregar una nueva entrada de metadatos zonales personalizada

Por ejemplo, considere un proyecto llamado my-project con los siguientes metadatos personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"value-1" y "key-2":"value-2"

Para agregar "key-4":"value-4" como un nuevo par de metadatos zonales personalizados en la zona us-central1-a , ejecute el siguiente comando

gcloud compute project-zonal-metadata add \
    --metadata=key-4=value-4 \
    --project=my-project \
    --zone=us-central1-a

Ejemplo: actualizar los valores de una entrada de metadatos zonales personalizados existente

Considere el mismo proyecto de ejemplo my-project , que ahora tiene los siguientes metadatos personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"value-1" , "key-2":"value-2" y "key-4":"value-4"

Para actualizar los valores de metadatos zonales de key-1 y key-4 en us-cerntral1-a a con nuevos valores, ejecute el siguiente comando.

gcloud compute project-zonal-metadata add \
    --metadata=key-1=new-value-1,key-4=new-value-4 \
    --project=my-project \
    --zone=us-central1-a

Ejemplo: anular el valor de metadatos del proyecto para una clave y utilizar un valor de metadatos zonal

Considere el mismo proyecto de ejemplo my-project , que ahora tiene los siguientes metadatos personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" y "key-4":"new-value-4"

En este proyecto de ejemplo, considere key-3 , que tiene un valor de metadatos de proyecto de value-c . Suponga que desea establecer un value-3 para esta clave para todas las máquinas virtuales en la zona us-central1-a . Cuando realizas la operación, para todas las máquinas virtuales en la zona us-central1-a , Compute Engine anula los valores de metadatos del proyecto y utiliza los valores de metadatos zonales. Las máquinas virtuales en todas las demás zonas del proyecto conservan sus valores de metadatos zonales o de proyecto predominantes para key-3 .

Para anular el valor de metadatos del proyecto para key-3 y establecer un valor de metadatos zonal, ejecute el siguiente comando:

gcloud compute project-zonal-metadata add \
    --metadata=key-3=value-3 \
    --project=my-project \
    --zone=us-central1-a

DESCANSAR

  1. Obtenga la huella digital actual y vea los pares clave-valor existentes para el proyecto en esa zona.

    Para realizar un bloqueo optimista, debe proporcionar una huella digital. Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia cada vez que realizas una solicitud para agregar, actualizar o eliminar metadatos zonales y, si proporcionas una huella digital que no coincide, Compute Engine rechaza tu solicitud.

    Si no proporciona una huella digital, se realiza una verificación de coherencia y su solicitud de actualización no se realiza correctamente. Esto funciona para que solo se pueda realizar una solicitud a la vez, evitando colisiones. Este comportamiento coincide con instances().setMetadata , donde siempre se requiere una huella digital.

    Para obtener la huella digital actual de los metadatos zonales, realice una solicitud GET al método instanceSettings().get .

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • ZONE : la zona donde desea configurar los metadatos zonales.

    El siguiente es un ejemplo de salida para esta solicitud:

        {
          "fingerprint": "VlRIl8dx9vk=",
          "metadata": {
            ...
          }
        }
    
  2. Para agregar o actualizar los metadatos zonales, realice una solicitud PATCH al método instanceSettings().patch . Debe proporcionar lo siguiente con su solicitud:

    • Una máscara de actualización. Utilice el parámetro de consulta update_mask . La máscara de actualización debe contener las claves de metadatos para lo siguiente:

      • Los nuevos metadatos zonales personalizados que desea agregar
      • Los metadatos zonales personalizados existentes para los que desea actualizar los valores

      Debes agregar la cadena metadata.items. como prefijo para cada clave, por ejemplo, metadata.items.key1,metadata.items.key3 .

    • En el cuerpo de la solicitud, proporcione lo siguiente:

      • Las claves y valores de metadatos para los nuevos metadatos zonales personalizados que desea agregar
      • Las claves y valores de metadatos para los metadatos zonales personalizados existentes que desea actualizar
      • El valor actual de la huella digital.

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS
    {
      "fingerprint": "FINGER_PRINT",
      "metadata": {
        "items": {
          "KEY1": "VALUE1",
          "KEY2": "VALUE2",
          ...
        }
      }
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto.
    • ZONE : la zona donde desea configurar los metadatos zonales.
    • PREFIXED_METADATA_KEYS : la lista de claves de metadatos para lo siguiente, donde cada clave tiene el prefijo metadata.items. :

      • Los nuevos metadatos zonales personalizados que desea agregar
      • Los metadatos zonales personalizados existentes para los que desea actualizar los valores

      Por ejemplo, supongamos que sus claves de metadatos zonales actuales en una zona específica son key-1 y key-2 . Si desea agregar una nueva clave, key-3 , para los metadatos zonales en esa zona y también actualizar los metadatos zonales para una de las claves existentes, key-1 , entonces su máscara de actualización debe tener la siguiente cadena:

      metadata.items.key1,metadata.items.key3

    • FINGER_PRINT : el valor actual de la huella digital.

    • KEY1 , KEY2 ...: las claves de metadatos zonales personalizadas para las que desea agregar o actualizar valores. Especifique todas las claves de metadatos zonales personalizadas que especificó en la máscara de actualización.

    • VALUE1 , VALUE2 ...: los valores de metadatos zonales que desea establecer para sus claves de metadatos personalizadas nuevas y existentes. Dependiendo de su clave y valor de metadatos personalizados, sucede una de las siguientes cosas:

      • Si la clave de metadatos personalizados correspondiente es una clave existente que tiene metadatos del proyecto, entonces, en la zona especificada, Compute Engine anula el valor de metadatos del proyecto de la clave con el valor de metadatos zonales especificado. Todas las máquinas virtuales en la zona especificada del proyecto heredan estos metadatos zonales recién especificados para esa clave y las máquinas virtuales en otras zonas continúan conservando sus valores de metadatos zonales o de proyecto predominantes. Si realiza actualizaciones futuras al valor de metadatos del proyecto para esta clave, las máquinas virtuales en esta zona del proyecto no se verán afectadas y continuarán usando el valor de metadatos zonales para esta clave.
      • Si la clave de metadatos personalizada correspondiente es una nueva clave de metadatos que no se usa para proyectos existentes o metadatos zonales, Compute Engine crea la clave de metadatos personalizada y establece este valor como los metadatos zonales en la zona especificada.
      • Si la clave de metadatos personalizada correspondiente es una clave de metadatos existente con un valor de metadatos zonal en la zona especificada:

      • Si el valor de metadatos especificado es diferente del valor existente, Compute Engine actualiza la entrada de metadatos zonal con el nuevo valor.

      • Si el valor de metadatos especificado es el mismo que el valor existente, entonces la entrada de metadatos zonales permanece sin cambios.

Ejemplo: agregar una nueva entrada de metadatos zonales personalizada

Por ejemplo, considere un proyecto llamado my-project con los siguientes metadatos personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"value-1" y "key-2":"value-2"

Para agregar "key-4":"value-4" como un nuevo par de metadatos zonales personalizados en la zona us-central1-a , realice la siguiente solicitud PATCH :

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-4
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-4": "value-4"
    }
  }
}

Ejemplo: actualizar los valores de una entrada de metadatos zonales personalizados existente

Considere el mismo proyecto de ejemplo my-project , que ahora tiene los siguientes metadatos personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"value-1" , "key-2":"value-2" y "key-4":"value-4"

Para actualizar los valores de metadatos zonales de key-1 y key-4 en us-cerntral1-a con nuevos valores, realice la siguiente solicitud PATCH :

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-4
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-1": "new-value-1",
    "key-4": "new-value-4"
    }
  }
}

Ejemplo: anular el valor de metadatos del proyecto para una clave y establecer un valor de metadatos zonal

Considere el mismo proyecto de ejemplo my-project , que ahora tiene los siguientes metadatos personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" y "key-4":"new-value-4"

En este proyecto de ejemplo, considere key-3 , que tiene un valor de metadatos de proyecto de value-c . Suponga que desea establecer un value-3 para esta clave para todas las máquinas virtuales en la zona us-central1-a . Cuando realizas la operación, para todas las máquinas virtuales en la zona us-central1-a , Compute Engine anula los valores de metadatos del proyecto y utiliza los valores de metadatos zonales. Las máquinas virtuales en todas las demás zonas del proyecto conservan sus valores de metadatos zonales o de proyecto predominantes para key-3 .

Para anular el valor de metadatos del proyecto para key-3 y utilizar el valor de metadatos zonal value-3 en su lugar, realice la siguiente solicitud PATCH :

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-3
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-3": "value-3"
    }
  }
}

Establecer metadatos de instancia personalizados

Puede agregar o actualizar los metadatos personalizados para una única instancia de VM mediante la consola de Google Cloud, la CLI de Google Cloud o REST.

Puede configurar metadatos de instancia personalizados de una de las siguientes maneras:

Agregue metadatos de instancia personalizados durante la creación de VM

Utilice estas instrucciones para agregar metadatos en una instancia de VM específica en el momento de su creación.

Consola

  1. En la consola de Google Cloud, vaya a la página Crear una instancia .

    Ir a Crear una instancia

  2. Especifique los detalles de la máquina virtual.

  3. Expanda la sección Opciones avanzadas y haga lo siguiente:

    1. Expanda la sección Gestión .
    2. Para agregar varios pares clave-valor para sus metadatos personalizados, en la sección Metadatos , haga clic en Agregar elemento .
  4. Para crear la VM, haga clic en Crear .

nube de gcloud

Para configurar metadatos personalizados, use el comando gcloud compute instances create con la marca --metadata .

gcloud compute instances create VM_NAME \
--zone=ZONE \
--image-project=IMAGE_PROJECT \
IMAGE_FLAG \
--metadata=KEY=VALUE

Reemplace lo siguiente:

  • VM_NAME : el nombre de tu VM
  • ZONE : la zona para crear la VM en
  • IMAGE_PROJECT : el proyecto que contiene la imagen que se utilizará para la VM
  • IMAGE_FLAG : especifique uno de los siguientes:

    • Utilice la marca --image IMAGE_NAME para especificar una versión específica de una imagen pública.

      Por ejemplo, --image debian-12-bookworm-v20241112 .

    • Utilice la marca --image-family IMAGE_FAMILY_NAME para especificar una familia de imágenes .

      Esto crea la máquina virtual a partir de la imagen del sistema operativo no obsoleta más reciente de la familia de imágenes. Por ejemplo, si especifica --image-family debian-12 , Compute Engine usa la última versión de la imagen del sistema operativo en la familia de imágenes de Debian 12.

  • KEY : el nombre de su clave de metadatos

  • VALUE : el valor almacenado para esta clave

Ejemplo

Por ejemplo, para establecer una nueva clave env que tenga un valor test en una VM llamada example-instance , ejecute el siguiente comando:

 gcloud compute instances create example-instance \
   --zone=us-central1-a --image-project=debian-cloud \
   --image-family=debian-12 \
   --metadata=env=test

DESCANSAR

Utilice el método instances.insert y proporcione los metadatos personalizados como parte de la propiedad metadata en su solicitud:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "...": [
    {
    }
    ],
  "metadata": {
    "items": [
      {
        "key": "KEY",
        "value": "VALUE"
      }
    ]
  },
  ..
}

Reemplace lo siguiente:

  • PROJECT_ID : ID de tu proyecto
  • ZONE : zona para crear la VM en
  • MACHINE_TYPE : tipo de máquina, predefinida o personalizada , para la nueva VM
  • VM_NAME : nombre de la nueva VM
  • KEY : el nombre de su clave de metadatos
  • VALUE : el valor almacenado para esta clave

Agregar o actualizar metadatos de instancia personalizados en una máquina virtual existente

Utilice estas instrucciones para actualizar los metadatos en una instancia de VM específica que ya existe.

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Vaya a la página de instancias de VM

  2. Haga clic en la instancia para la que desea actualizar los metadatos.
  3. Haga clic en el botón Editar en la parte superior de la página.
  4. En Metadatos personalizados , haga clic en Agregar elemento o edite las entradas de metadatos existentes.
  5. Guarde sus cambios.

nube de gcloud

Actualizar los metadatos de la VM con la CLI de gcloud es una acción aditiva. Especifique solo las claves de metadatos que desea agregar o cambiar. Si una clave que proporcionó ya existe, el valor de esa clave se actualiza con el nuevo valor.

Utilice el comando instances add-metadata :

gcloud compute instances add-metadata VM_NAME \
    --metadata=KEY=VALUE,KEY=VALUE

Reemplace lo siguiente:

  • VM_NAME : el nombre de tu VM
  • KEY : el nombre de su clave de metadatos
  • VALUE : el valor almacenado para esta clave

Ejemplos

Si desea agregar la entrada foo=bar , use:

gcloud compute instances add-metadata VM_NAME \
    --metadata=foo=bar

Si desea cambiar la entrada foo=bar a foo=bat , use:

gcloud compute instances add-metadata VM_NAME \
    --metadata=foo=bat

DESCANSAR

  1. Obtenga la huella digital actual y vea los pares clave-valor existentes para la VM. Para hacer esto, llame al método instances().get .

    Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine y se utiliza para realizar un bloqueo optimista. Para actualizar la VM, debe proporcionar el valor de la huella digital correspondiente. La huella digital cambia después de cada solicitud y, si proporciona una huella digital que no coincide, su solicitud se rechaza. Esto funciona para que sólo se pueda realizar una actualización a la vez, evitando colisiones.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • ZONE : la zona donde se encuentra su VM
    • VM_NAME : nombre de tu VM

    El resultado es similar al siguiente:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
          {
            "key": "foo",
            "value": "bar"
          }
        ]
        },
      ...
    }
    
  2. Realice una solicitud al método instances().setMetadata . Proporcione una lista de los nuevos valores de metadatos y el valor actual fingerprint .

    Si la máquina virtual tiene pares clave-valor existentes que desea conservar, debe incluirlos en esta solicitud con los nuevos pares clave-valor.

    Ejemplo

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "fingerprint": "zhma6O1w2l8=",
    "items": [
      {
        "key": "foo",
        "value": "bar"
      },
      {
        "key": "baz",
        "value": "bat"
      }
    ]
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • ZONE : la zona donde se encuentra su VM
    • VM_NAME : nombre de tu VM

Eliminar metadatos personalizados de las máquinas virtuales

Esta sección proporciona información sobre cómo eliminar entradas de metadatos personalizados para tus VM de Compute Engine de una de las siguientes maneras:

Eliminar metadatos de proyecto personalizados

Puede eliminar metadatos de proyectos personalizados mediante la consola de Google Cloud o la CLI de Google Cloud.

Consola

  1. En la consola de Google Cloud, vaya a la página Metadatos .

    Ir a la página de Metadatos

  2. Haga clic en Editar en la parte superior de la página.

  3. Navegue hasta la entrada de metadatos que desea eliminar y haga clic en el botón junto a esa entrada.

    Repita este paso para cada entrada de metadatos que desee eliminar.

  4. Para terminar de eliminar las entradas de metadatos del proyecto personalizado, haga clic en Guardar .

nube de gcloud

Para eliminar metadatos de proyecto personalizados, usa el comando gcloud compute project-info remove-metadata .

  • Si desea eliminar las entradas de metadatos personalizados para claves específicas, especifique esas claves utilizando el indicador --keys y excluya los valores de esas claves.
gcloud compute project-info remove-metadata \
    --keys=KEY1,KEY2,...
  • Si desea eliminar todos los metadatos personalizados para la VM, especifique el indicador --all .
gcloud compute project-info remove-metadata \
    --all

Reemplace lo siguiente:

  • KEY1 , KEY2 ...: las claves de metadatos de la instancia personalizada que desea eliminar.

Eliminar metadatos zonales personalizados

Puede eliminar metadatos zonales personalizados mediante la CLI de Google Cloud o REST.

nube de gcloud

Para eliminar metadatos zonales personalizados, usa el comando gcloud compute project-zonal-metadata remove y especifica todas las claves de metadatos que deseas eliminar usando la marca --keys .

gcloud compute project-zonal-metadata remove \
    --project=PROJECT_ID  \
    --zone=ZONE \
    --keys=KEY1,KEY2,...

Reemplace lo siguiente:

  • PROJECT_ID : ID de tu proyecto
  • ZONE : la zona donde desea eliminar los metadatos zonales.
  • KEY1 , KEY2 ...: las claves de metadatos zonales personalizadas que desea eliminar.

Después de ejecutar el comando, si alguna de las claves especificadas tiene valores de metadatos del proyecto disponibles, las máquinas virtuales en la zona especificada heredan esos valores de metadatos del proyecto. Si la entrada de metadatos se configuró solo a nivel zonal y no hay un valor de metadatos de proyecto correspondiente para esa clave, las máquinas virtuales en esa zona perderán esa información de metadatos.

Ejemplo:

Considere un proyecto de ejemplo my-project , que tiene los siguientes metadatos de proyecto personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" , "key-3":"value-3" y "key-4":"new-value-4"

Para eliminar todos los metadatos zonales en la zona us-central1-a , ejecute el siguiente comando.

gcloud compute project-zonal-metadata remove \
    --metadata=key-1,key-2,key-3,key-4 \
    --project=my-project \
    --zone=us-central1-a

Después de ejecutar el comando, las máquinas virtuales en la zona us-central1-a poseen las siguientes entradas de metadatos de proyecto personalizados:

  • "key-1":"value-a"
  • "key-2":"value-b"
  • "key-3":"value-c"

DESCANSAR

  1. Obtenga la huella digital actual y vea los pares clave-valor existentes para el proyecto en esa zona.

    Para realizar un bloqueo optimista, debe proporcionar una huella digital. Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia cada vez que realizas una solicitud para agregar, actualizar o eliminar metadatos zonales y, si proporcionas una huella digital que no coincide, Compute Engine rechaza tu solicitud.

    Si no proporciona una huella digital, se realiza una verificación de coherencia y su solicitud de eliminación no se realiza correctamente. Esto funciona para que solo se pueda realizar una solicitud a la vez, evitando colisiones. Este comportamiento coincide con instances().setMetadata , donde siempre se requiere una huella digital.

    Para obtener la huella digital actual de un proyecto, llame al método instanceSettings().get .

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • ZONE : la zona donde desea eliminar los metadatos zonales.

    El siguiente es un ejemplo de salida para esta solicitud:

        {
          "fingerprint": "FikclA7UBC0=",
          "metadata": {
            ...
          }
        }
    
  2. Para eliminar metadatos zonales personalizados, realice una solicitud PATCH al método instanceSettings().patch excluyendo las claves de metadatos, para las cuales desea eliminar los metadatos zonales, del cuerpo de la solicitud. Debe proporcionar lo siguiente con su solicitud:

    • Una máscara de actualización. Utilice el parámetro de consulta update_mask . La máscara de actualización debe contener todas las claves de metadatos personalizados existentes para las que desea eliminar los metadatos zonales. Debes agregar la cadena metadata.items. como prefijo para cada clave, por ejemplo, metadata.items.key1,metadata.items.key3 .

    • En el cuerpo de la solicitud, proporcione solo el valor actual de la huella digital. Excluya todas las claves de metadatos personalizados que especificó en la máscara de actualización. Si incluye alguna de las claves de metadatos tanto en la máscara de actualización como en el cuerpo de la solicitud, Compute Engine no elimina los metadatos zonales de esas claves.

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS
    {
      "fingerprint": "FINGER_PRINT",
      "metadata": {
        "items": {
        }
      }
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto.
    • ZONE : la zona donde desea eliminar los metadatos zonales.
    • PREFIXED_METADATA_KEYS : la lista de todas las claves de metadatos personalizados existentes para las que desea eliminar metadatos zonales, donde cada clave tiene el prefijo metadata.items. . Para garantizar que su solicitud de eliminación se realice correctamente, excluya estas claves de metadatos del cuerpo de la solicitud. Si incluye alguna de las claves de metadatos tanto en la máscara de actualización como en el cuerpo de la solicitud, Compute Engine no elimina los metadatos zonales de esas claves.

      Por ejemplo, supongamos que sus claves de metadatos actuales con metadatos zonales son key-1 , key-2 , key-3 y key-4 , y desea eliminar las entradas de metadatos zonales para key-1 y key-2 , entonces su máscara de actualización debe tener la siguiente cadena:

      metadata.items.key1,metadata.items.key2

    • FINGER_PRINT : el valor actual de la huella digital.

Después de realizar la solicitud, si alguna de las claves especificadas tiene valores de metadatos del proyecto disponibles, las máquinas virtuales en la zona especificada heredan esos valores de metadatos del proyecto. Si la clave de metadatos se configuró solo a nivel zonal y no hay un valor de metadatos de proyecto correspondiente para esa clave, las máquinas virtuales en esa zona perderán esa información de metadatos.

Ejemplo:

Considere un proyecto de ejemplo my-project , que tiene los siguientes metadatos de proyecto personalizados:

  • Metadatos del proyecto: "key-1":"value-a" , "key-2":"value-b" y "key-3":"value-c"
  • Metadatos zonales en la zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" , "key-3":"value-3" y "key-4":"new-value-4"

Para eliminar los metadatos zonales para key-1 y key-2 en la zona us-central1-a , realice la siguiente solicitud PATCH .

PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-2
{
  "fingerprint": "FikclA7UBC0=",
  "metadata": {
  "items": {
    }
  }
}

Una vez procesada esta solicitud, las máquinas virtuales de la zona us-central1-a poseen los siguientes metadatos personalizados. Las máquinas virtuales heredan los valores de metadatos del proyecto para key-1 y key-2 , pero conservan los metadatos zonales para key-3 y key-4 .

  • Metadatos del proyecto: "key-1":"value-a" y "key-2":"value-b"
  • Metadatos zonales en la zona us-central1-a : "key-3":"value-3" y "key-4":"new-value-4"

Eliminar metadatos de instancia personalizados

Puede eliminar metadatos de instancia personalizados mediante la consola de Google Cloud, la CLI de Google Cloud o REST.

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Vaya a la página de instancias de VM

  2. En la columna Nombre , haga clic en el nombre de la VM de la que desea eliminar metadatos.
  3. Haga clic en Editar en la parte superior de la página.
  4. En la sección Metadatos , haga clic en Eliminar elemento para cada una de las entradas de metadatos que desee eliminar.
  5. Para confirmar sus cambios y eliminar los metadatos de la instancia personalizada, haga clic en Guardar .

nube de gcloud

Para eliminar metadatos de instancias personalizadas, usa el comando gcloud compute instances remove-metadata .

  • Si desea eliminar las entradas de metadatos personalizados para claves específicas, especifique esas claves utilizando el indicador --keys y excluya los valores de esas claves.
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --keys=KEY1,KEY2,...
  • Si desea eliminar todos los metadatos personalizados para la VM, especifique el indicador --all .
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --all

Reemplace lo siguiente:

  • PROJECT_ID : su ID de proyecto.
  • ZONE : la zona de su VM.
  • VM_NAME : nombre de tu VM
  • KEY1 , KEY2 ...: las claves de metadatos de la instancia personalizada que desea eliminar.

DESCANSAR

  1. Obtenga la huella digital actual y vea los pares clave-valor existentes para la VM. Para hacer esto, llame al método instances().get .

    Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine y se utiliza para realizar un bloqueo optimista. Para actualizar la VM, debe proporcionar el valor de la huella digital correspondiente. La huella digital cambia después de cada solicitud y, si proporciona una huella digital que no coincide, su solicitud se rechaza. Esto funciona para que sólo se pueda realizar una actualización a la vez, evitando colisiones.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Reemplace lo siguiente:

    • PROJECT_ID : su ID de proyecto.
    • ZONE : la zona de su VM.
    • VM_NAME : nombre de tu VM

    El resultado es similar al siguiente:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
        {
          "key": "key-1",
          "value": "value-1"
        }
        {
          "key": "key-2",
          "value": "value-2"
        }
        ]
      },
      ...
    }
    
  2. Realice una solicitud al método instances().setMetadata . Debe incluir el valor actual de la huella digital de los metadatos para que su solicitud se realice correctamente.

    • Para eliminar todos los pares clave-valor de metadatos personalizados de una máquina virtual, en la propiedad items , excluya las claves de metadatos para las que desea eliminar valores de metadatos.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
      
      {
      "fingerprint": "FINGER_PRINT"
      "items": [
        {
          "key": "KEY1"
          "value": "VALUE1"
        }
        {
          "key": "KEY2"
          "value": "VALUE2"
        }
        ...
      ]
      }
      
    • Para eliminar todos los metadatos de la instancia personalizada en la VM, excluya la propiedad items por completo.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
      
      {
      "fingerprint": FINGER_PRINT
      }
      

    Reemplace lo siguiente:

    • PROJECT_ID : su ID de proyecto.
    • ZONE : la zona de su VM.
    • VM_NAME : nombre de tu VM
    • FINGER_PRINT : el valor actual de la huella digital.
    • KEY1 , KEY2 ...: las claves de metadatos de la instancia personalizada que desea eliminar.
    • VALUE1 , VALUE2 ...: los valores de las claves de metadatos de la instancia personalizada que desea eliminar.

¿Qué sigue?