Metadados da VM


Cada instância de máquina virtual (VM) armazena os metadados em um servidor de metadados. O acesso da VM à API do servidor de metadados é fornecido automaticamente, sem qualquer autorização extra. Os metadados são armazenados como pares de chave-valor.

Neste documento, apresentamos uma visão geral sobre metadados da VM e explicamos os tipos e propriedades desses metadados.

Usos dos metadados da VM

Nas seções a seguir, descrevemos alguns cenários em que é possível usar entradas de metadados para gerenciar as VMs.

Scripts de inicialização e desligamento

O servidor de metadados é útil principalmente quando usado com os scripts de inicialização e desligamento. Você pode usá-lo para receber programaticamente informações exclusivas sobre uma VM sem a necessidade de autorização extra.

Por exemplo, você pode escrever um script de inicialização que busca o par de chave-valor de metadados para o IP externo de uma VM e usar esse IP no seu script de configuração de banco de dados. Como as chaves de metadados predefinidas do Compute Engine são as mesmas em todas as VMs, é possível reutilizar o script sem precisar atualizá-lo para cada VM. Com isso, é possível criar um código mais robusto para os aplicativos.

Manutenção do host

O servidor de metadados fornece informações sobre uma opção de programação de VMs usando a entrada do diretório de metadados scheduling/ e o atributo maintenance-event. Use esses valores de metadados para notificar quando um evento de manutenção estiver prestes a acontecer e preparar o ambiente para o evento. Para mais informações, consulte Receber avisos de migração em tempo real.

Atributos de convidado

Os atributos de convidado são um tipo específico de metadados personalizados em que os aplicativos podem gravar enquanto estão sendo executados nas VMs. Use atributos de convidado somente em casos de uso que exijam pequenas quantidades de dados que não mudam com frequência. Para mais informações sobre os atributos de convidado, consulte Definir e consultar atributos de convidado.

Considerações sobre a segurança dos metadados

Quando você faz uma solicitação para receber informações do servidor de metadados, a solicitação e a resposta de metadados subsequente nunca deixam o host físico que está executando a VM.

No entanto, qualquer processo que possa consultar o URL de metadados tem acesso a todos os valores no servidor de metadados. Isso inclui todos os valores de metadados personalizados que você grava no servidor. O Google recomenda cuidado ao gravar valores confidenciais no servidor de metadados ou ao executar processos de terceiros.

Chaves de metadados predefinidas e personalizadas

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

Chaves de metadados predefinidas

As chaves de metadados predefinidas são chaves de metadados criadas pelo Compute Engine. Quando você cria uma VM, o Compute Engine define automaticamente os valores de metadados de algumas chaves nessa VM, por exemplo, o ID da instância da VM ou o ID do projeto. Para chaves predefinidas em que o Compute Engine não define automaticamente um valor, é possível escolher um conjunto de valores disponíveis dependendo da configuração do sistema. Por exemplo, para ativar o Login do SO em uma VM, defina o valor da chave predefinida enable-oslogin como TRUE para essa VM. Para desativar o Login do SO para essa VM, atualize o valor da chave para FALSE. Só é possível atualizar os valores dessas chaves, mas não as chaves em si.

Para mais informações sobre chaves de metadados predefinidas e uma lista delas, consulte Chaves de metadados predefinidas.

Chaves de metadados personalizadas

Com os metadados personalizados, é possível criar e usar seus próprios pares de chave-valor de metadados em uma VM individual ou um projeto. É possível adicionar novas chaves de metadados personalizadas, atualizar os valores das chaves existentes e remover entradas de metadados personalizados quando não precisar delas. Definir metadados personalizados é útil para transmitir valores arbitrários às VMs em um projeto. Também é útil para criar scripts de inicialização e desligamento.

Para saber como adicionar, atualizar ou remover metadados personalizados das VMs, consulte Configurar metadados personalizados.

Tipos de metadados

As entradas de metadados da VM podem fornecer informações específicas para uma VM individual ou um projeto. Seus metadados são divididos em metadados de projeto e instância, com base no tipo de informações fornecidas.

Metadados do projeto

Os metadados do projeto fornecem informações sobre ele. Os metadados do projeto são mais divididos nos seguintes tipos, dependendo do escopo definido para os metadados do projeto:

  • Os metadados de todo o projeto são aqueles que você define com um escopo de projeto. Você define esses metadados no nível do projeto, e eles são propagados para todas as VMs do projeto.

    Você pode usar chaves de metadados predefinidas e personalizadas para definir metadados em todo o projeto. Saiba mais sobre chaves de metadados de projeto predefinidas e como definir metadados personalizados para todo o projeto.

  • Metadados zonais do projeto (Prévia) são metadados do projeto definidos com um escopo zonal no projeto. Os metadados definidos são propagados apenas para as VMs na zona configurada do projeto. Os metadados zonais do projeto ajudam no isolamento de falhas e oferecem maior confiabilidade. Também é possível usar metadados de zona do projeto para substituir os valores de todo o projeto por chaves atuais e usar valores específicos da zona.

    O Compute Engine não fornece chaves predefinidas para metadados zonais do projeto. Crie suas próprias chaves personalizadas de metadados zonais do projeto. Saiba mais sobre como definir metadados personalizados zonais do projeto.

.

Metadados de instância

Os metadados de instância fornecem informações sobre uma instância de VM específica. Você define os metadados de instâncias separadamente para cada instância de VM.

Você pode usar as chaves de metadados predefinidas e personalizadas para definir metadados de instância. Saiba mais sobre chaves de metadados de instância predefinidas e como Definir metadados de instância personalizados.

Como os metadados são organizados

O Compute Engine armazena e mantém as chaves e os valores de metadados das VMs e projetos em listagens de diretórios. Dependendo do tipo de metadados, o Compute Engine armazena entradas de metadados em um dos seguintes diretórios:

Tipo de metadados Diretório
  • Metadados de todo o projeto
  • Metadados zonais do projeto

http://metadata.google.internal/computeMetadata/v1/project/
Metadados de instância

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

Cada diretório armazena entradas de metadados na forma de pares de chave-valor. Algumas entradas de metadados são diretórios em que há outras chaves de metadados. As entradas de metadados que funcionam como diretórios são marcadas por uma barra à direita (/) no nome da chave de metadados. Por exemplo, /project/attributes/ é um diretório no diretório project/ que contém outras chaves de metadados. Para criar sua própria listagem do diretório de metadados, use uma barra à direita (/) no nome da chave de metadados ao criar sua entrada de metadados personalizada.

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

  • Se você adicionar um valor de metadados de zona do projeto a uma chave de metadados que já tenha um valor para todo o projeto, o Compute Engine vai modificar o valor de todo o projeto para as VMs nessa zona especificada e atualizar o diretório /project com o valor de zona do projeto.
  • Se você adicionar um novo valor de metadados para todo o projeto a uma chave de metadados que já tem um valor de zona do projeto, nada será alterado. O Compute Engine mantém o valor de zona do projeto no diretório /project na zona específica.
  • Se você não especificar um valor de zona do projeto para uma chave de metadados personalizada em uma zona específica, mas a chave tiver um valor para todo o projeto, suas VMs continuarão tendo os valores de todo o projeto nessas zonas. de dois minutos.

Por exemplo, suponha que você defina um par de metadados de key-1=value-1 em todo o projeto. Suponha que você também defina um par de metadados zonais do projeto de key-1=zonal-value-1 apenas para a zona us-central1-a. Todas as VMs na zona us-central1-a do projeto herdam key-1=zonal-value1 como o par de metadados. O par de metadados permanece key-1=value-1 para todas as VMs em outras zonas em que você não tenha definido metadados zonais do projeto para key-1.

A seguir