Definir e remover metadados personalizados


Cada entrada de metadados é armazenada no servidor de metadados como pares de valores-chave. As chaves de metadados diferenciam maiúsculas de minúsculas. Suas chaves podem ser chaves de metadados predefinidas ou personalizadas.

Os metadados personalizados permitem que você crie e use seus próprios pares de valores-chave de metadados em uma VM individual ou em um projeto. Você pode adicionar novas chaves de metadados personalizados, atualizar os valores das chaves existentes e remover quaisquer entradas de metadados personalizados quando não precisar delas. Definir metadados personalizados é útil para transmitir valores arbitrários para VMs em um projeto. Também é útil para criar scripts de inicialização e desligamento .

Este documento fornece informações sobre como fazer o seguinte:

Antes de começar

  • Revise os princípios básicos de como os metadados de VM do Compute Engine são definidos, categorizados e organizados. Para obter mais informações, consulte Sobre metadados de VM .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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 as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        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 mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções obrigatórias

Para obter as permissões necessárias para definir ou remover metadados personalizados em VMs, peça ao administrador para conceder a você as seguintes funções do IAM:

Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Estas funções predefinidas contêm as permissões necessárias para definir ou remover metadados personalizados em VMs. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para definir ou remover metadados personalizados em VMs:

  • Se suas VMs usarem contas de serviço: iam.serviceAccounts.actAs nas contas de serviço ou no projeto
  • Para adicionar, atualizar ou remover metadados de projeto personalizados:
    • compute.projects.get no projeto
    • compute.projects.setCommonInstanceMetadata no projeto
  • Para adicionar, atualizar ou remover metadados zonais personalizados:
    • compute.instanceSettings.get nas configurações da instância na zona necessária no projeto
    • compute.instanceSettings.update nas configurações da instância na zona necessária no projeto
  • Para adicionar, atualizar ou remover metadados de instância personalizados:
    • compute.instances.get na VM
    • compute.instances.setMetadata na VM

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Limitações

O Compute Engine impõe um limite total combinado de 512 KB para todas as entradas de metadados. Os limites máximos de tamanho também são aplicados a cada key e value da seguinte maneira:

  • Cada key de metadados tem um limite máximo de 128 bytes.
  • Cada key de metadados diferencia maiúsculas de minúsculas.

    Para metadados zonais, o Compute Engine não permite criar duas chaves de metadados separadas com a mesma string, mesmo que sejam gravadas em casos diferentes. Por exemplo, se você tiver uma chave de metadados personalizada existente para metadados zonais chamada project-zonal-metadata-key , então, para metadados zonais nessa zona, não será possível criar novas chaves de metadados, como Project-Zonal-Metadata-Key , PROJECT-ZONAL-METADATA-KEY ou qualquer outra variação da mesma string.

  • Cada value de metadados tem um limite máximo de 256 KB.

  • Cada value de metadados diferencia maiúsculas de minúsculas, exceto valores booleanos.

Por exemplo, as chaves SSH são armazenadas como metadados personalizados na chave ssh-keys . Se o conteúdo ou value dos metadados dessa chave exceder o limite de 256 KB, você não poderá adicionar mais chaves SSH. Se você atingir esse limite, considere remover chaves não utilizadas para liberar espaço de metadados para novas chaves.

Além disso, se você fornecer o conteúdo do script de inicialização ou encerramento diretamente, o conteúdo desses scripts de inicialização e encerramento também poderá ser armazenado como metadados customizados e contado para essas limitações de tamanho. Para evitar isso, armazene o script de inicialização ou desligamento como um arquivo hospedado em um local externo, como o Cloud Storage, e forneça o URL do script de inicialização ao criar uma VM. Dessa forma, esses arquivos são baixados na VM, em vez de armazenados no servidor de metadados.

Valores booleanos

Para campos que aceitam valores booleanos, TRUE ou FALSE , os seguintes valores também podem ser utilizados:

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

Os valores booleanos não diferenciam maiúsculas de minúsculas. Por exemplo, você pode usar False , false ou FALSE para desabilitar um recurso.

Definir metadados personalizados em VMs

Esta seção fornece informações sobre como adicionar novos metadados personalizados ou atualizar valores de metadados personalizados existentes para suas VMs do Compute Engine de uma das seguintes maneiras:

Definir metadados de projeto personalizados

Você pode adicionar ou atualizar os metadados personalizados para todas as instâncias de um projeto usando o console do Google Cloud, a CLI do Google Cloud ou REST.

Use estas instruções para aplicar configurações de metadados a todas as VMs do projeto. Por exemplo, se você definir um par de metadados do projeto baz=bat , esse par de metadados será aplicado automaticamente a todas as VMs do projeto.

Console

  1. No console do Google Cloud, acesse a página Metadados .

    Vá para a página de metadados personalizados

  2. Clique em Editar na parte superior da página.

  3. Para adicionar novas entradas de metadados de projeto personalizados, faça o seguinte:

    1. Navegue até a parte inferior da página e clique em Adicionar item .
    2. No campo Chave , insira o nome da sua chave de metadados personalizada.
    3. No campo Valor , insira o valor dos metadados do projeto personalizado.
    4. Opcional. Para adicionar mais entradas de metadados de projeto personalizados, repita as etapas anteriores para cada entrada de metadados que você deseja adicionar.
    5. Para terminar de adicionar as entradas de metadados do projeto personalizado, clique em Salvar .
  4. Para editar entradas de metadados de projeto personalizados existentes, faça o seguinte:

    1. Navegue até a entrada de metadados que você deseja editar.
    2. Para atualizar o nome de uma chave de metadados personalizada específica, no campo Chave dessa entrada, insira o novo nome.
    3. Para atualizar o valor de uma entrada de metadados de projeto personalizada, no campo Valor dessa entrada, insira o novo valor.
    4. Opcional. Para remover uma entrada de metadados de projeto personalizada específica, clique no ícone exclusão próximo à entrada de metadados.
    5. Para editar diversas entradas de metadados de projetos personalizados, repita as etapas anteriores para cada entrada de metadados que você deseja editar.
    6. Para terminar de editar as entradas de metadados do projeto personalizado, clique em Salvar .

gcloud

Use o comando project-info add-metadata .

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

Substitua o seguinte:

  • KEY : o nome da sua chave de metadados
  • VALUE : o valor armazenado para esta chave

Exemplo

Por exemplo, para definir duas novas entradas foo=bar e baz=bat em um projeto, execute o seguinte comando:

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

Opcionalmente, você pode especificar um ou mais arquivos dos quais os metadados serão lidos usando o sinalizador --metadata-from-file .

DESCANSAR

  1. Opcional. Para realizar o bloqueio otimista, você pode fornecer opcionalmente uma impressão digital.

    Uma impressão digital é uma sequência aleatória de caracteres gerada pelo Compute Engine. A impressão digital muda após cada solicitação e, se você fornecer uma impressão digital incompatível, sua solicitação será rejeitada.

    Se você não fornecer uma impressão digital, nenhuma verificação de consistência será executada e a solicitação projects().setCommonInstanceMetadata será bem-sucedida. Esse comportamento é diferente dos instances().setMetadata e instanceSettings().patch , onde uma impressão digital é sempre necessária.

    Para obter a impressão digital atual de um projeto, chame o método project().get .

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

    A saída é semelhante à seguinte:

    {
      "name": "myproject",
      "commonInstanceMetadata": {
        "kind": "compute#metadata",
        "fingerprint": "FikclA7UBC0=",
        ...
      }
    }
    
  2. Faça uma solicitação ao método projects().setCommonInstanceMetadata e defina seus pares de valores-chave de metadados personalizados:

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

Substitua PROJECT_ID pelo ID do seu projeto.

Definir metadados zonais personalizados

Ao definir metadados zonais personalizados, você adiciona ou atualiza as entradas de metadados zonais para suas VMs em uma zona específica de um projeto. Você pode fazer o seguinte definindo metadados zonais personalizados:

  • Crie novas chaves de metadados personalizados para uma zona específica em um projeto e defina metadados para todas as VMs nessa zona nesse projeto.
  • Atualize os valores das entradas de metadados zonais personalizados existentes para todas as VMs em uma zona específica de um projeto.
  • Para chaves de metadados personalizados existentes que tenham valores de metadados de projeto, substitua esses valores de metadados de projeto em zonas específicas e, em vez disso, defina metadados zonais. Depois de definir metadados zonais para essas chaves em uma zona específica, todas as VMs dessa zona nesse projeto usarão os valores de metadados zonais para essas chaves.

Coisas a serem observadas antes de definir metadados zonais personalizados

As entradas de metadados de projeto e de zona são armazenadas no mesmo diretório project/ . Se você definir valores diferentes para as mesmas chaves de metadados personalizados para VMs em nível de projeto e em nível zonal, os valores de metadados zonais para essas chaves terão precedência sobre os valores de metadados do projeto nas respectivas zonas.

  • Se você adicionar um valor de metadados zonal para uma chave de metadados que já tem um valor de metadados de projeto, o Compute Engine substituirá o valor de metadados do projeto para as VMs nesta zona especificada e atualizará o diretório /project com o valor zonal.
  • Se você adicionar um novo valor de metadados para todo o projeto para uma chave de metadados que já possui um valor de metadados zonal, nada será alterado. O Compute Engine retém o valor dos metadados zonais no diretório /project da zona específica.
  • Se você não especificar um valor de metadados zonal para uma chave de metadados personalizada em uma zona específica, mas a chave tiver um valor de metadados de projeto, suas VMs continuarão a ter os valores de metadados do projeto nessas zonas.

Procedimento

Você pode adicionar ou atualizar os metadados zonais personalizados em uma zona específica de um projeto usando a Google Cloud CLI ou REST.

gcloud

  • Para adicionar ou atualizar metadados zonais personalizados, use o comando gcloud compute project-zonal-metadata add .

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do seu projeto
    • ZONE : a zona onde você deseja adicionar ou atualizar metadados zonais.
    • KEY1 , KEY2 ...: as chaves de metadados personalizados para as quais você deseja adicionar ou atualizar valores de metadados zonais.
    • VALUE1 , VALUE2 ...: os valores de metadados zonais que você deseja definir para suas chaves de metadados personalizados existentes e novos. Dependendo da sua chave e valor de metadados personalizados, ocorrerá uma das seguintes situações:

    • Se a chave de metadados personalizada correspondente for uma chave existente que tenha metadados de projeto, então, na zona especificada, o Compute Engine substituirá o valor de metadados do projeto da chave pelo valor de metadados zonal especificado. Todas as VMs na zona especificada no projeto herdam esses metadados zonais recém-especificados para essa chave e as VMs em outras zonas continuam a reter seus valores de metadados zonais ou de projeto predominantes. Se você fizer atualizações futuras no valor de metadados do projeto para essa chave, as VMs nessa zona do projeto permanecerão inalteradas e continuarão a usar o valor de metadados zonais para essa chave.

    • Se a chave de metadados personalizada correspondente for uma nova chave de metadados que não é usada para projetos existentes ou metadados zonais, o Compute Engine criará a chave de metadados personalizada e definirá esse valor como os metadados zonais na zona especificada.

    • Se a chave de metadados personalizada correspondente for uma chave de metadados existente com um valor de metadados zonal na zona especificada:

      • Se o valor de metadados especificado for diferente do valor existente, o Compute Engine atualizará a entrada de metadados zonais com o novo valor.
      • Se o valor de metadados especificado for igual ao valor existente, a entrada de metadados zonais permanecerá inalterada.

Exemplo: Adicionar uma nova entrada de metadados zonais personalizados

Por exemplo, considere um projeto chamado my-project com os seguintes metadados personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"value-1" e "key-2":"value-2"

Para adicionar "key-4":"value-4" como um novo par de metadados zonais personalizados na zona us-central1-a , execute o seguinte comando

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

Exemplo: Atualizar os valores de uma entrada de metadados zonais personalizados existente

Considere o mesmo projeto de exemplo my-project , que agora possui os seguintes metadados personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"value-1" , "key-2":"value-2" e "key-4":"value-4"

Para atualizar os valores de metadados zonais de key-1 e key-4 na zona us-cerntral1-a com novos valores, execute o comando a seguir.

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

Exemplo: Substitua o valor de metadados do projeto por uma chave e use um valor de metadados zonal

Considere o mesmo projeto de exemplo my-project , que agora possui os seguintes metadados personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" e "key-4":"new-value-4"

Neste projeto de exemplo, considere key-3 , que tem um valor de metadados de projeto de value-c . Suponha que você queira definir um valor de metadados zonal value-3 para esta chave para todas as VMs na zona us-central1-a . Ao realizar a operação, para todas as VMs na zona us-central1-a , o Compute Engine substitui os valores de metadados do projeto e usa os valores de metadados zonais. As VMs em todas as outras zonas do projeto retêm os valores predominantes de projeto ou metadados zonais para key-3 .

Para substituir o valor de metadados do projeto para key-3 e definir um valor de metadados zonal, execute o seguinte comando:

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

DESCANSAR

  1. Obtenha a impressão digital atual e visualize quaisquer pares de valores-chave existentes para o projeto nessa zona.

    Para realizar o bloqueio otimista, você deve fornecer uma impressão digital. Uma impressão digital é uma sequência aleatória de caracteres gerada pelo Compute Engine. A impressão digital muda sempre que você faz uma solicitação para adicionar, atualizar ou remover metadados zonais e, se você fornecer uma impressão digital incompatível, o Compute Engine rejeitará sua solicitação.

    Se você não fornecer uma impressão digital, uma verificação de consistência será realizada e sua solicitação de atualização não será bem-sucedida. Isso funciona para que apenas uma solicitação possa ser feita por vez, evitando colisões. Esse comportamento corresponde instances().setMetadata , onde uma impressão digital é sempre necessária.

    Para obter a impressão digital atual dos metadados zonais, faça uma solicitação GET para o método instanceSettings().get .

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do seu projeto
    • ZONE : a zona onde você deseja definir os metadados zonais.

    Veja a seguir um exemplo de saída para esta solicitação:

        {
          "fingerprint": "VlRIl8dx9vk=",
          "metadata": {
            ...
          }
        }
    
  2. Para adicionar ou atualizar os metadados zonais, faça uma solicitação PATCH para o método instanceSettings().patch . Você deve fornecer o seguinte em sua solicitação:

    • Uma máscara de atualização. Use o parâmetro de consulta update_mask . A máscara de atualização deve conter as chaves de metadados para o seguinte:

      • Os novos metadados zonais personalizados que você deseja adicionar
      • Os metadados zonais personalizados existentes para os quais você deseja atualizar os valores

      Você deve adicionar a sequência metadata.items. como um prefixo para cada chave — por exemplo, metadata.items.key1,metadata.items.key3 .

    • No corpo da solicitação, forneça o seguinte:

      • As chaves e os valores de metadados dos novos metadados zonais personalizados que você deseja adicionar
      • As chaves e os valores de metadados dos metadados zonais personalizados existentes que você deseja atualizar
      • O valor atual da impressão 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",
          ...
        }
      }
    }
    

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto.
    • ZONE : a zona onde você deseja definir os metadados zonais.
    • PREFIXED_METADATA_KEYS : a lista de chaves de metadados para o seguinte, onde cada chave é prefixada com a string metadata.items. :

      • Os novos metadados zonais personalizados que você deseja adicionar
      • Os metadados zonais personalizados existentes para os quais você deseja atualizar os valores

      Por exemplo, suponha que suas chaves de metadados zonais atuais em uma zona específica sejam key-1 e key-2 . Se você quiser adicionar uma nova chave, key-3 , para metadados zonais nessa zona e também atualizar os metadados zonais para uma das chaves existentes, key-1 , então sua máscara de atualização deverá ter a seguinte string:

      metadata.items.key1,metadata.items.key3

    • FINGER_PRINT : o valor atual da impressão digital.

    • KEY1 , KEY2 ...: as chaves de metadados zonais personalizadas para as quais você deseja adicionar ou atualizar valores. Especifique todas as chaves de metadados zonais customizadas especificadas na máscara de atualização.

    • VALUE1 , VALUE2 ...: os valores de metadados zonais que você deseja definir para suas chaves de metadados personalizados existentes e novos. Dependendo da sua chave e valor de metadados personalizados, ocorrerá uma das seguintes situações:

      • Se a chave de metadados personalizada correspondente for uma chave existente que tenha metadados de projeto, então, na zona especificada, o Compute Engine substituirá o valor de metadados do projeto da chave pelo valor de metadados zonal especificado. Todas as VMs na zona especificada no projeto herdam esses metadados zonais recém-especificados para essa chave e as VMs em outras zonas continuam a reter seus valores de metadados zonais ou de projeto predominantes. Se você fizer atualizações futuras no valor de metadados do projeto para essa chave, as VMs nessa zona do projeto permanecerão inalteradas e continuarão a usar o valor de metadados zonais para essa chave.
      • Se a chave de metadados personalizada correspondente for uma nova chave de metadados que não é usada para projetos existentes ou metadados zonais, o Compute Engine criará a chave de metadados personalizada e definirá esse valor como os metadados zonais na zona especificada.
      • Se a chave de metadados personalizada correspondente for uma chave de metadados existente com um valor de metadados zonal na zona especificada:

      • Se o valor de metadados especificado for diferente do valor existente, o Compute Engine atualizará a entrada de metadados zonais com o novo valor.

      • Se o valor de metadados especificado for igual ao valor existente, a entrada de metadados zonais permanecerá inalterada.

Exemplo: Adicionar uma nova entrada de metadados zonais personalizados

Por exemplo, considere um projeto chamado my-project com os seguintes metadados personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"value-1" e "key-2":"value-2"

Para adicionar "key-4":"value-4" como um novo par de metadados zonais personalizados na zona us-central1-a , faça a seguinte solicitação 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"
    }
  }
}

Exemplo: Atualizar os valores de uma entrada de metadados zonais personalizados existente

Considere o mesmo projeto de exemplo my-project , que agora possui os seguintes metadados personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"value-1" , "key-2":"value-2" e "key-4":"value-4"

Para atualizar os valores de metadados zonais de key-1 e key-4 na zona us-cerntral1-a com novos valores, faça a seguinte solicitação 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"
    }
  }
}

Exemplo: substituir o valor dos metadados do projeto por uma chave e definir um valor de metadados zonal

Considere o mesmo projeto de exemplo my-project , que agora possui os seguintes metadados personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" e "key-4":"new-value-4"

Neste projeto de exemplo, considere key-3 , que tem um valor de metadados de projeto de value-c . Suponha que você queira definir um valor de metadados zonal value-3 para esta chave para todas as VMs na zona us-central1-a . Ao realizar a operação, para todas as VMs na zona us-central1-a , o Compute Engine substitui os valores de metadados do projeto e usa os valores de metadados zonais. As VMs em todas as outras zonas do projeto retêm os valores predominantes de projeto ou metadados zonais para key-3 .

Para substituir o valor de metadados do projeto para key-3 e usar o valor de metadados zonal value-3 , faça a seguinte solicitação 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"
    }
  }
}

Definir metadados de instância personalizados

Você pode adicionar ou atualizar os metadados personalizados para uma única instância de VM usando o console do Google Cloud, a CLI do Google Cloud ou REST.

Você pode definir metadados de instância personalizados de uma das seguintes maneiras:

Adicione metadados de instância personalizados durante a criação da VM

Use estas instruções para adicionar metadados em uma instância de VM específica no momento de sua criação.

Console

  1. No console do Google Cloud, acesse a página Criar uma instância .

    Vá para Criar uma instância

  2. Especifique os detalhes da VM.

  3. Expanda a seção Opções avançadas e faça o seguinte:

    1. Expanda a seção Gerenciamento .
    2. Para adicionar vários pares de valores-chave aos seus metadados personalizados, na seção Metadados , clique em Adicionar item .
  4. Para criar a VM, clique em Criar .

gcloud

Para definir metadados personalizados, use o comando gcloud compute instances create com a sinalização --metadata .

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

Substitua o seguinte:

  • VM_NAME : o nome da sua VM
  • ZONE : a zona para criar a VM
  • IMAGE_PROJECT : o projeto que contém a imagem a ser usada para a VM
  • IMAGE_FLAG : especifique um dos seguintes:

    • Use o sinalizador --image IMAGE_NAME para especificar uma versão específica de uma imagem pública.

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

    • Use o sinalizador --image-family IMAGE_FAMILY_NAME para especificar uma família de imagens .

      Isso cria a VM a partir da imagem de sistema operacional não obsoleta mais recente na família de imagens. Por exemplo, se você especificar --image-family debian-12 , o Compute Engine usará a versão mais recente da imagem do sistema operacional na família de imagens Debian 12.

  • KEY : o nome da sua chave de metadados

  • VALUE : o valor armazenado para esta chave

Exemplo

Por exemplo, para definir um novo env de chave que tenha um valor test em uma VM chamada example-instance , execute o seguinte comando:

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

DESCANSAR

Use o método instances.insert e forneça os metadados personalizados como parte da propriedade metadata em sua solicitação:

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"
      }
    ]
  },
  ..
}

Substitua o seguinte:

  • PROJECT_ID : o ID do seu projeto
  • ZONE : zona para criar a VM
  • MACHINE_TYPE : tipo de máquina, predefinida ou customizada , para a nova VM
  • VM_NAME : nome da nova VM
  • KEY : o nome da sua chave de metadados
  • VALUE : o valor armazenado para esta chave

Adicionar ou atualizar metadados de instância personalizados em uma VM existente

Use estas instruções para atualizar metadados em uma instância de VM específica que já existe.

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse a página de instâncias de VM

  2. Clique na instância para a qual você deseja atualizar os metadados.
  3. Clique no botão Editar na parte superior da página.
  4. Em Metadados personalizados , clique em Adicionar item ou edite as entradas de metadados existentes.
  5. Salve suas alterações.

gcloud

A atualização dos metadados da VM com a CLI gcloud é uma ação adicional. Especifique apenas as chaves de metadados que você deseja adicionar ou alterar. Se uma chave fornecida já existir, o valor dessa chave será atualizado com o novo valor.

Use o comando instances add-metadata :

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

Substitua o seguinte:

  • VM_NAME : o nome da sua VM
  • KEY : o nome da sua chave de metadados
  • VALUE : o valor armazenado para esta chave

Exemplos

Se você quiser adicionar a entrada foo=bar , use:

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

Se você quiser alterar a entrada foo=bar para foo=bat , use:

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

DESCANSAR

  1. Obtenha a impressão digital atual e visualize quaisquer pares de valores-chave existentes para a VM. Para fazer isso, chame o método instances().get .

    Uma impressão digital é uma sequência aleatória de caracteres gerada pelo Compute Engine e é usada para realizar o bloqueio otimista. Para atualizar a VM, você precisa fornecer o valor da impressão digital correspondente. A impressão digital muda após cada solicitação e, se você fornecer uma impressão digital incompatível, sua solicitação será rejeitada. Isso funciona para que apenas uma atualização possa ser feita por vez, evitando colisões.

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do seu projeto
    • ZONE : a zona onde sua VM está localizada
    • VM_NAME : nome da sua VM

    A saída é semelhante à seguinte:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
          {
            "key": "foo",
            "value": "bar"
          }
        ]
        },
      ...
    }
    
  2. Faça uma solicitação ao método instances().setMetadata . Forneça uma lista dos novos valores de metadados e do valor atual fingerprint .

    Se a VM tiver pares de valores-chave existentes que você deseja manter, você deverá incluí-los nesta solicitação com os novos pares de valores-chave.

    Exemplo

    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"
      }
    ]
    }
    

    Substitua o seguinte:

    • PROJECT_ID : o ID do seu projeto
    • ZONE : a zona onde sua VM está localizada
    • VM_NAME : nome da sua VM

Remover metadados personalizados de VMs

Esta seção fornece informações sobre como remover entradas de metadados personalizados das VMs do Compute Engine de uma das seguintes maneiras:

Remover metadados personalizados do projeto

Você pode remover metadados personalizados do projeto usando o console do Google Cloud ou a CLI do Google Cloud.

Console

  1. No console do Google Cloud, acesse a página Metadados .

    Vá para a página Metadados

  2. Clique em Editar na parte superior da página.

  3. Navegue até a entrada de metadados que deseja remover e clique no botão ao lado dessa entrada.

    Repita esta etapa para cada entrada de metadados que você deseja remover.

  4. Para concluir a remoção das entradas de metadados do projeto personalizado, clique em Salvar .

gcloud

Para remover metadados personalizados do projeto, use o comando gcloud compute project-info remove-metadata .

  • Se desejar remover as entradas de metadados personalizados para chaves específicas, especifique essas chaves usando o sinalizador --keys e exclua os valores dessas chaves.
gcloud compute project-info remove-metadata \
    --keys=KEY1,KEY2,...
  • Se você quiser remover todos os metadados personalizados da VM, especifique o sinalizador --all .
gcloud compute project-info remove-metadata \
    --all

Substitua o seguinte:

  • KEY1 , KEY2 ...: as chaves de metadados da instância personalizada que você deseja remover.

Remover metadados zonais personalizados

Você pode remover metadados zonais personalizados usando a Google Cloud CLI ou REST.

gcloud

Para remover metadados zonais personalizados, use o comando gcloud compute project-zonal-metadata remove e especifique todas as chaves de metadados que você deseja remover usando a sinalização --keys .

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

Substitua o seguinte:

  • PROJECT_ID : o ID do seu projeto
  • ZONE : a zona onde você deseja remover os metadados zonais.
  • KEY1 , KEY2 ...: as chaves de metadados zonais personalizados que você deseja remover.

Depois de executar o comando, se alguma das chaves especificadas tiver valores de metadados do projeto disponíveis, as VMs na zona especificada herdarão esses valores de metadados do projeto. Se a entrada de metadados tiver sido definida apenas a nível zonal e não houver um valor de metadados de projeto correspondente para essa chave, os VMs nessa zona perderão essas informações de metadados.

Exemplo:

Considere um projeto de exemplo my-project , que possui os seguintes metadados de projeto personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" , "key-3":"value-3" e "key-4":"new-value-4"

Para remover todos os metadados zonais na zona us-central1-a , execute o seguinte comando.

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

Depois de executar o comando, as VMs na zona us-central1-a possuem as seguintes entradas de metadados de projeto personalizados:

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

DESCANSAR

  1. Obtenha a impressão digital atual e visualize quaisquer pares de valores-chave existentes para o projeto nessa zona.

    Para realizar o bloqueio otimista, você deve fornecer uma impressão digital. Uma impressão digital é uma sequência aleatória de caracteres gerada pelo Compute Engine. A impressão digital muda sempre que você faz uma solicitação para adicionar, atualizar ou remover metadados zonais e, se você fornecer uma impressão digital incompatível, o Compute Engine rejeitará sua solicitação.

    Se você não fornecer uma impressão digital, uma verificação de consistência será realizada e sua solicitação de exclusão não será bem-sucedida. Isso funciona para que apenas uma solicitação possa ser feita por vez, evitando colisões. Esse comportamento corresponde instances().setMetadata , onde uma impressão digital é sempre necessária.

    Para obter a impressão digital atual de um projeto, faça uma chamada ao método instanceSettings().get .

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do seu projeto
    • ZONE : a zona onde você deseja remover os metadados zonais.

    Veja a seguir um exemplo de saída para esta solicitação:

        {
          "fingerprint": "FikclA7UBC0=",
          "metadata": {
            ...
          }
        }
    
  2. Para remover metadados zonais personalizados, faça uma solicitação PATCH para o instanceSettings().patch excluindo as chaves de metadados, para as quais você deseja remover os metadados zonais, do corpo da solicitação. Você deve fornecer o seguinte em sua solicitação:

    • Uma máscara de atualização. Use o parâmetro de consulta update_mask . A máscara de atualização deve conter todas as chaves de metadados personalizados existentes cujos metadados zonais você deseja remover. Você deve adicionar a sequência metadata.items. como um prefixo para cada chave — por exemplo, metadata.items.key1,metadata.items.key3 .

    • No corpo da solicitação, forneça apenas o valor atual da impressão digital. Exclua todas as chaves de metadados personalizados especificadas na máscara de atualização. Se você incluir qualquer uma das chaves de metadados na máscara de atualização e no corpo da solicitação, o Compute Engine não removerá os metadados zonais dessas chaves.

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto.
    • ZONE : a zona onde você deseja remover os metadados zonais.
    • PREFIXED_METADATA_KEYS : a lista de todas as chaves de metadados personalizados existentes das quais você deseja remover metadados zonais, onde cada chave é prefixada com a string metadata.items. . Para garantir que sua solicitação de exclusão seja bem-sucedida, exclua essas chaves de metadados do corpo da solicitação. Se você incluir qualquer uma das chaves de metadados na máscara de atualização e no corpo da solicitação, o Compute Engine não removerá os metadados zonais dessas chaves.

      Por exemplo, suponha que suas chaves de metadados atuais com metadados zonais sejam key-1 , key-2 , key-3 e key-4 , e você queira remover as entradas de metadados zonais para key-1 e key-2 , então sua máscara de atualização deverá ter a seguinte string:

      metadata.items.key1,metadata.items.key2

    • FINGER_PRINT : o valor atual da impressão digital.

Depois de fazer a solicitação, se alguma das chaves especificadas tiver valores de metadados do projeto disponíveis, as VMs na zona especificada herdarão esses valores de metadados do projeto. Se a chave de metadados tiver sido definida apenas a nível zonal e não houver um valor de metadados de projeto correspondente para essa chave, os VMs nessa zona perderão essas informações de metadados.

Exemplo:

Considere um projeto de exemplo my-project , que possui os seguintes metadados de projeto personalizados:

  • Metadados do projeto: "key-1":"value-a" , "key-2":"value-b" e "key-3":"value-c"
  • Metadados zonais na zona us-central1-a : "key-1":"new-value-1" , "key-2":"value-2" , "key-3":"value-3" e "key-4":"new-value-4"

Para remover os metadados zonais para key-1 e key-2 na zona us-central1-a , faça a seguinte solicitação 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": {
    }
  }
}

Após a conclusão dessa solicitação, as VMs na zona us-central1-a possuem os seguintes metadados personalizados. As VMs herdam os valores de metadados do projeto para key-1 e key-2 , mas retêm os metadados zonais para key-3 e key-4 .

  • Metadados do projeto: "key-1":"value-a" e "key-2":"value-b"
  • Metadados zonais na zona us-central1-a : "key-3":"value-3" e "key-4":"new-value-4"

Remover metadados de instância personalizados

Você pode remover metadados de instância personalizados usando o console do Google Cloud, a Google Cloud CLI ou REST.

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse a página de instâncias de VM

  2. Na coluna Nome , clique no nome da VM da qual você deseja remover metadados.
  3. Clique em Editar na parte superior da página.
  4. Na seção Metadados , clique em Excluir item para cada uma das entradas de metadados que você deseja remover.
  5. Para confirmar suas alterações e remover os metadados da instância personalizada, clique em Salvar .

gcloud

Para remover metadados de instância personalizados, use o comando gcloud compute instances remove-metadata .

  • Se desejar remover as entradas de metadados personalizados para chaves específicas, especifique essas chaves usando o sinalizador --keys e exclua os valores dessas chaves.
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --keys=KEY1,KEY2,...
  • Se você quiser remover todos os metadados personalizados da VM, especifique o sinalizador --all .
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --all

Substitua o seguinte:

  • PROJECT_ID : seu ID do projeto.
  • ZONE : a zona da sua VM.
  • VM_NAME : nome da sua VM
  • KEY1 , KEY2 ...: as chaves de metadados da instância personalizada que você deseja remover.

DESCANSAR

  1. Obtenha a impressão digital atual e visualize quaisquer pares de valores-chave existentes para a VM. Para fazer isso, chame o método instances().get .

    Uma impressão digital é uma sequência aleatória de caracteres gerada pelo Compute Engine e é usada para realizar o bloqueio otimista. Para atualizar a VM, você precisa fornecer o valor da impressão digital correspondente. A impressão digital muda após cada solicitação e, se você fornecer uma impressão digital incompatível, sua solicitação será rejeitada. Isso funciona para que apenas uma atualização possa ser feita por vez, evitando colisões.

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

    Substitua o seguinte:

    • PROJECT_ID : seu ID do projeto.
    • ZONE : a zona da sua VM.
    • VM_NAME : nome da sua VM

    A saída é semelhante à seguinte:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
        {
          "key": "key-1",
          "value": "value-1"
        }
        {
          "key": "key-2",
          "value": "value-2"
        }
        ]
      },
      ...
    }
    
  2. Faça uma solicitação ao método instances().setMetadata . Você deve incluir o valor atual da impressão digital de metadados para que sua solicitação seja bem-sucedida.

    • Para remover todos os pares de valores-chave de metadados personalizados de uma VM, na propriedade items , exclua as chaves de metadados das quais você deseja remover valores de metadados.

      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 remover todos os metadados da instância personalizada na VM, exclua completamente a propriedade items .

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

    Substitua o seguinte:

    • PROJECT_ID : seu ID do projeto.
    • ZONE : a zona da sua VM.
    • VM_NAME : nome da sua VM
    • FINGER_PRINT : o valor atual da impressão digital.
    • KEY1 , KEY2 ...: as chaves de metadados da instância personalizada que você deseja remover.
    • VALUE1 , VALUE2 ...: os valores das chaves de metadados da instância personalizada que você deseja remover.

O que vem a seguir