Como criar uma instância de VM a partir de um modelo de instância

Nesta página, explicamos como usar um modelo de instância para criar uma instância de VM. Um modelo de instância é um recurso de API que define as propriedades das instâncias de VM. Defina as propriedades, como tipo de máquina, imagem do SO, configurações de disco permanente, metadados, scripts de inicialização e outras, em um modelo de instância. Depois, use o modelo para criar instâncias de VM individuais ou grupos de instâncias gerenciadas.

Por padrão, uma instância de VM criada a partir de um modelo de instância terá propriedades idênticas àquelas especificadas no modelo, com exceção do nome e da zona em que a instância residirá. No entanto, você também tem a opção de modificar determinados campos durante a criação da instância, se quiser alterar algumas propriedades definidas no modelo para casos de uso específicos.

Neste documento, pressupomos que você já tem um modelo de instância pronto para usar. Se você ainda não tem um, siga as instruções para criar um novo modelo de instância.

Antes de começar

Como criar uma instância de VM a partir de um modelo de instância

Para criar uma instância exatamente como descrito no modelo de instância, siga as instruções abaixo.

Console

  1. Acesse a página "Instâncias de VMs".

    Acessar a página "Instâncias de VM"

  2. Clique em Criar instância.
  3. Clique em Nova instância de VM com base em modelo.
  4. Selecione o modelo e clique em Continuar.
  5. Especifique um nome para a instância e faça outras personalizações conforme necessário.
  6. Clique em Criar Leia Criar uma instância para mais detalhes sobre configuração.

gcloud

Com o gcloud compute, use o mesmo comando instances create que você usaria para criar uma instância normal, mas adicione a sinalização --source-instance-template:

gcloud compute instances create [INSTANCE_NAME] --source-instance-template [INSTANCE_TEMPLATE_NAME]

em que:

  • [INSTANCE_NAME] é o nome da instância;
  • [INSTANCE_TEMPLATE_NAME] é o nome do modelo de instância a ser usado.

    Por exemplo:

    gcloud compute instances create example-instance --source-instance-template my-instance-template

API

Na API, gere uma solicitação normal para criar uma instância, mas inclua o parâmetro de consulta sourceInstanceTemplate seguido de um caminho qualificado para um modelo de instância.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances?sourceInstanceTemplate=[INSTANCE_TEMPLATE_NAME]

No corpo da solicitação, forneça um name para a instância de VM:

{ "name": "example-instance" }

Por exemplo, o snippet a seguir inclui um caminho totalmente qualificado para o modelo: https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?sourceInstanceTemplate=https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template

{ "name": "example-instance" }

Como criar uma instância de VM a partir de um modelo de instância com modificações

Por padrão, uma instância de VM iniciada a partir de um modelo de instância será exatamente como descrito no modelo, com exceção do nome e da zona.

Se você quiser criar uma instância baseada em um modelo, mas com algumas alterações, use o comportamento de modificação. Para tanto, informe os atributos para modificar o modelo de instância existente durante a criação da instância.

gcloud

Na ferramenta gcloud, faça uma solicitação para criar uma instância com a sinalização --source-instance-template e modifique qualquer propriedade que você quiser com a devida sinalização do gcloud. Para uma lista de sinalizações aplicáveis, consulte a referência do gcloud.

Por exemplo, para modificar as propriedades de tipo de máquina, metadados, sistema operacional, disco permanente de inicialização e disco secundário de um modelo de instância, forneça as sinalizações a seguir:

gcloud compute instances create example-instance --source-instance-template example-instance \
    --machine-type n1-standard-2 --image-family debian-8 --image-project debian-cloud \
    --metadata bread=butter --disk=boot=no,name=my-override-disk

API

Na API, use o parâmetro de consulta sourceInstanceTemplate e forneça os campos que você quer substituir no corpo da solicitação ao construir uma solicitação normal para criar uma instância.

O comportamento de modificação na API segue as regras de patch de mesclagem JSON descritas em RFC 7396 (em inglês).

Em especial:

  • Se você modificar um campo primário, o campo correspondente no modelo de instância será substituído pelo valor na solicitação. Dentre os campos primários estão machineType, sourceImage, name e outros.
  • Se você modificar um campo repetido, todos os valores repetidos dessa propriedade serão substituídos pelos valores correspondentes fornecidos na solicitação. Geralmente, campos repetidos são propriedades do tipo list. Por exemplo, disks e networkInterfaces são campos repetidos.
  • Se você modificar um nested object, o objeto no modelo de instância será mesclado com a especificação de objeto correspondente na solicitação. Observe que, se um objeto aninhado residir dentro de um campo repetido, esse campo será tratado segundo as regras para campos repetidos. Os rótulos são uma exceção a essa regra e são tratados como um campo repetido, mesmo sendo do tipo object.

Por exemplo, suponhamos que você tenha um modelo de instância com dois discos que não sejam de inicialização, mas queira substituir um deles. Forneça a especificação de disks inteira na solicitação, incluindo todos os discos você quer manter.

O URL dessa solicitação:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?sourceInstanceTemplate=https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template

O corpo da solicitação:

{
  "disks": [
    {
      # Since you are overriding the repeated disk property, you must
      # specify a boot disk in the request, even if it is already
      # specified in the instance template
      "autoDelete": true,
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-8"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    },
    {
      # New disk you want to use
      "autoDelete": false,
      "boot": false,
      "mode": "READ_WRITE",
      "source": "zones/us-central1-f/disks/my-override-disk",
      "type": "PERSISTENT"
    },
    {
       # Assume this disk is already specified in instance template, but
       # you must specify it again since you are overriding the disks
       # property
      "autoDelete": false,
      "boot": false,
      "mode": "READ_WRITE",

      "source": "zones/us-central1-f/disks/my-other-disk-to-keep",
      "type": "PERSISTENT"
    }
  ],
  "machineType": "zones/us-central1-f/machineTypes/n1-standard-2",
  "name": "example-instance"
}

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine