Metadados do GCE - obter o nome da instância

2

Estou tentando escrever um script que permita que uma instância termine quando tiver concluído suas tarefas. Até agora, foi isso que eu criei:

  1. consulte os metadados para obter o nome do host e a zona da instância
  2. suponha que o nome do host seja o mesmo que o nome da instância (isso é seguro?)
  3. executar um regex no nome do host para remover o domínio (isso é seguro?)
  4. chame gcloud compute instances delete [nome] --zone [zona] --quiet

Tudo parece um pouco frágil e eu queria saber se existe uma solução melhor. Em particular, sei que posso consultar o ID da instância, mas parece que todos os comandos do gcloud esperam um nome e não um id. Está correto?

    
por Toby Hobson 26.05.2015 / 17:51

1 resposta

2

Para instâncias de VMs do Linux, tente este script:

VMNAME=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/hostname | cut -d. -f1)
ZONE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone | cut -d/ -f4)
gcloud compute instances delete $VMNAME --zone $ZONE --quiet

Você também precisará garantir que a conta de serviço da instância da VM seja um membro do projeto com permissão de edição.

    
por 26.05.2015 / 23:16