Como criar modelos de instância

Nesta página, você aprenderá a criar e gerenciar modelos de instância. Com os modelos de instância, é possível definir o tipo de máquina, a imagem do disco de inicialização ou a imagem do contêiner, a rede e outras propriedades da instância a serem usadas na criação de novas instâncias de VMs. Use os modelos para criar instâncias em um grupo de instâncias gerenciadas ou para criar instâncias individuais.

Antes de começar

Como criar um novo modelo de instância

No modelo, é possível definir a maioria das propriedades que podem ser configuradas em uma solicitação regular à API para criar uma instância de VM. Essas propriedades incluem metadados da instância, scripts de inicialização, discos permanentes, contas de serviço e assim por diante.

Para criar um modelo, são necessárias, no mínimo, as mesmas propriedades exigidas para a criação de uma instância. Consulte uma lista dos campos obrigatórios na referência de instanceTemplates().insert.

Crie um modelo de instância por meio do Console do Google Cloud Platform, da ferramenta gcloud compute ou da API.

Console

  1. No Console do GCP, acesse a página "Modelos de instância".

    Acessar a página "Modelos de instância"

  2. Clique em Criar modelo de instância.
  3. Preencha os campos de sua preferência para o modelo de instância ou aceite os valores padrão. Os seguintes valores são fornecidos por padrão:

    • tipo de máquina: n1-standard-1
    • imagem: a imagem mais recente do Debian
    • disco de inicialização: um novo disco de inicialização padrão nomeado conforme a instância
    • rede da VPC: a rede da VPC default
    • endereço IP: um endereço IP externo temporário
  4. Como opção, altere as configurações da VM protegida da instância se você escolher uma imagem compatível com a VM protegida:

    1. Clique na guia Segurança da seção Gerenciamento, segurança, discos, rede, locatário individual.
    2. Se você quiser desativar a Inicialização segura, desmarque Ativar a inicialização segura. A inicialização segura ajuda a proteger as instâncias de VM contra malware e rootkits nos níveis de inicialização e kernel. Para ver mais informações, consulte Inicialização segura.
    3. Se você quiser desativar o módulo de plataforma confiável virtual (vTPM, na sigla em inglês), desmarque a opção Ativar vTPM. O vTPM ativa a Inicialização medida, que valida a pré-inicialização da VM e a integridade da inicialização. Para ver mais informações, consulte Módulo da plataforma virtual confiável (vTPM).

    4. Se você quiser desativar o monitoramento de integridade, desmarque Ativar monitoramento de integridade. O monitoramento de integridade permite monitorar a integridade da inicialização das instâncias de VM protegida usando o Stackdriver. Para mais informações, consulte Monitoramento de integridade.

  5. Como opção, clique nas guias da seção Gerenciamento, segurança, discos, rede, locatário único para personalizar ainda mais o modelo. Por exemplo, adicione até 15 discos secundários que não sejam de inicialização.

  6. Como opção, clique em REST equivalente na parte inferior da página para visualizar o corpo da solicitação REST, que inclui a representação JSON do modelo de instância.

  7. Clique em Criar para criar o modelo.

gcloud

Em gcloud compute, crie um modelo de instância usando o comando instance-templates create:

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME]

Substitua [INSTANCE_TEMPLATE_NAME] pelo nome do modelo de instância.

Quando você não fornece as configurações do modelo explicitamente, um modelo é criado no gcloud compute com os seguintes valores padrão:

  • tipo de máquina: n1-standard-1
  • imagem: a imagem mais recente do Debian
  • disco de inicialização: um novo disco de inicialização padrão nomeado conforme a instância
  • rede: a rede da VPC default
  • endereço IP: um endereço IP externo temporário

Também é possível definir explicitamente essas configurações. Por exemplo:

gcloud compute instance-templates create example-template-custom \
    --machine-type n1-standard-4 \
    --image-family debian-9 \
    --image-project debian-cloud \
    --boot-disk-size 250GB

Adicione até 15 discos secundários que não sejam de inicialização. Especifique a sinalização --create-disk para cada disco secundário criado. Para criar discos secundários com base em uma imagem pública ou de estoque, especifique as propriedades image e image-project na sinalização --create-disk. Para criar um disco em branco, não inclua essas propriedades. Como opção, inclua propriedades de disco size e type.

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
    --create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB]

em que:

  • [INSTANCE_TEMPLATE_NAME] é o nome do novo modelo.
  • [DISK_IMAGE] é a imagem de origem do disco secundário. Para ver uma lista de imagens disponíveis, execute gcloud compute images list. Para discos em branco, não especifique uma imagem de disco ou um projeto de imagem;
  • [DISK_IMAGE_PROJECT] é o projeto de imagem a que a imagem do disco pertence. Para discos em branco, não especifique uma imagem de disco ou um projeto de imagem;
  • [SIZE_GB] é o tamanho do disco secundário.

Se tiver escolhido uma imagem compatível com a VM protegida, você poderá alterar as configurações de VM protegida da instância usando uma das sinalizações a seguir:

  • --no-shielded-vm-secure-boot: desative a inicialização segura. A inicialização segura ajuda a proteger as instâncias de VM contra malware e rootkits nos níveis de inicialização e kernel. Para mais informações, consulte Inicialização segura.
  • --no-shielded-vm-vtpm: desative o módulo de plataforma confiável virtual (vTPM, na sigla em inglês). O vTPM permite a inicialização segura, que valida a pré-inicialização da VM e a integridade da inicialização. Para mais informações, consulte Módulo da plataforma virtual confiável (vTPM).

  • --no-shielded-vm-integrity-monitoring: desative o monitoramento de integridade. O monitoramento de integridade permite monitorar a integridade da inicialização das instâncias de VM protegida usando o Stackdriver. Para mais informações, consulte Monitoramento de integridade.

Consulte uma lista de sinalizações disponíveis na referência de gcloud compute.

Um modelo com as configurações padrão é semelhante a este:

gcloud compute instance-templates describe example-template
creationTimestamp: '2014-09-10T16:18:32.042-07:00'
description: ''
id: '6057583701980539406'
kind: compute#instanceTemplate
name: example-template
properties:
  canIpForward: false
  disks:
  - autoDelete: true
    boot: true
    initializeParams:
      sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
    kind: compute#attachedDisk
    mode: READ_WRITE
    type: PERSISTENT
  machineType: n1-standard-1
  networkInterfaces:
  - accessConfigs:
    - kind: compute#accessConfig
      name: external-nat
      type: ONE_TO_ONE_NAT
    network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
  scheduling:
    automaticRestart: true
    onHostMaintenance: MIGRATE
  serviceAccounts:
  - email: default
    scopes:
    - https://www.googleapis.com/auth/devstorage.read_only
selfLink: https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-template

API

Na API do modelo de instância, defina explicitamente todos os campos de configuração obrigatórios conforme descrito na documentação de instanceTemplates().insert. Abaixo, há um exemplo de modelo de instância com o mínimo de campos obrigatórios:

{
"name": "example-template",
"properties": {
  "machineType": "n1-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

Para a propriedade disks, forneça a propriedade initializeParams para criar novos discos de inicialização permanentes ou a propriedade source para anexar um disco atual. Se você anexar um disco de inicialização, só será possível criar uma instância do seu modelo.

Adicione até 15 discos secundários que não sejam de inicialização usando a propriedade initializeParams de cada disco adicional. Crie discos adicionais com uma imagem pública ou particular. Para adicionar discos em branco, não especifique um sourceImage. Também é possível incluir as propriedades diskSizeGb e diskType.

Se tiver escolhido uma imagem compatível com VM protegida, você poderá alterar as configurações da VM protegida da instância usando os itens do corpo da solicitação booleana a seguir:

  • enableSecureBoot: ative ou desative a inicialização segura. A inicialização segura ajuda a proteger as instâncias de VM contra malware e rootkits nos níveis de inicialização e kernel. Para ver mais informações, consulte Inicialização segura.
  • enableVtpm: ative ou desative o módulo de plataforma confiável virtual (vTPM, na sigla em inglês). O vTPM permite a inicialização segura, que valida a pré-inicialização da VM e a integridade da inicialização. Para mais informações, consulte Módulo da plataforma virtual confiável (vTPM).
  • enableIntegrityMonitoring: ative ou desative o monitoramento de integridade. O monitoramento de integridade permite monitorar e verificar a integridade da inicialização do ambiente de execução das instâncias de VM protegidas usando os relatórios do Stackdriver. Para mais informações, consulte Monitoramento de integridade.

Como criar um modelo de instância com base em uma atual

Use os sinalizadores --source-instance e --source-instance-zone para salvar a configuração de uma instância de máquina virtual em um modelo de instância. Opcionalmente, você pode substituir a maneira como os discos de origem da instância são definidos no modelo.

A tabela abaixo mostra as opções para modificar a maneira como os discos são definidos no modelo.

Tipo de disco Opções
Disco de inicialização
  • [Padrão] Use a mesma imagem de origem ou família de imagens que foi usada para criar o disco de inicialização na instância de origem.
  • Use o URL de qualquer imagem (personalizada ou pública).
Outros discos permanentes de leitura/gravação
  • [Padrão] Use a mesma imagem de origem/família de imagens de origem que foi usada para criar o disco na instância de origem. Observação: se o disco da instância de origem não tiver uma propriedade de família de imagem de origem/imagem de origem, ele será incluído no modelo como um disco em branco.
  • Use o URL de qualquer imagem (personalizada ou pública).
  • Use um disco em branco no modelo. Quando o modelo é usado para criar uma nova instância, esse disco é criado sem formatação. Formate e monte o disco em um script de inicialização para poder usá-lo em uma configuração escalonável.
  • Não inclua o disco.
Discos somente de leitura
  • [Padrão] Inclua o disco no modo somente leitura.
  • Não inclua o disco.
SSDs locais
  • [Padrão] Inclua um SSD local em branco. Quando o modelo é usado para criar uma nova instância, esse disco é criado sem formatação. Formate e monte o disco em um script de inicialização para poder usá-lo em uma configuração escalonável.

Para cada disco, você também pode substituir o atributo auto-delete para especificar se o disco precisa ou não ser excluído quando sua instância associada for excluída.

Por padrão, se nenhuma opção de substituição for especificada, a configuração do disco no modelo corresponderá à instância de origem.

gcloud

Para ver uma lista de todas as sinalizações, consulte o comando gcloud instance-templates create.

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
    --source-instance=[SOURCE_INSTANCE] \
    --source-instance-zone=[SOURCE_INSTANCE_ZONE] \
    [--configure-disk= \
        device-name=[SOURCE_DISK], \
        instantiate-from=[INSTANTIATE_FROM], \
        auto-delete=[AUTO_DELETE]]

em que:

  • [INSTANCE_TEMPLATE_NAME] é o nome do modelo a ser criado;
  • [SOURCE_INSTANCE] é o nome da instância a ser usada como modelo para o novo modelo;
  • [SOURCE_INSTANCE_ZONE] é a zona que contém a instância de origem;
  • [SOURCE_DISK] é o nome de um disco de instância de origem que você quer substituir no modelo;
  • [INSTANTIATE_FROM] especifica se precisa incluir o disco e qual imagem usar. Os valores válidos dependem do tipo de disco:
    • source-image ou source-image-family: válido somente para discos de inicialização e outros discos de leitura/gravação permanentes;
    • custom-image: válido somente para discos de inicialização e outros discos de leitura/gravação permanentes. Se especificado, o caminho ou URL para a imagem personalizada também precisa ser especificado. Veja o exemplo abaixo;
    • attach-read-only: válido apenas para discos somente leitura.
    • blank: válido apenas para discos permanentes que não sejam de inicialização e SSDs locais. Se especificado, quando o modelo for usado para criar uma nova instância, o disco será criado sem formatação. Formate e monte o disco em um script de inicialização para poder usá-lo em uma configuração escalonável.
    • do-not-include: válido apenas para discos permanentes que não sejam de inicialização e discos somente leitura.
    • blank: válido apenas para discos permanentes que não sejam de inicialização e discos somente leitura.
  • [AUTO_DELETE] especifica se o disco será excluído automaticamente quando a instância for excluída. Os valores válidos são: false, no, true e yes.

Por exemplo, o comando a seguir cria um modelo de instância com base em my-source-instance, com a opção de usar a imagem original de data-disk-a mas definir a exclusão automática como true e substituir data-disk-b por uma imagem personalizada.

gcloud compute instance-templates create my-instance-template  \
    --source-instance my-source-instance \
    --configure-disk=device-name=data-disk-a,instantiate-from=source-image, \
      auto-delete=true
    --configure-disk=device-name=data-disk-b,instantiate-from=custom-image, \
      custom-image=projects/coreos-cloud/global/images/coreos-alpha-1492-3-0-v20170810

API

Para ver uma lista de todas as sinalizações, consulte os documentos da API InstanceTemplates.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/instanceTemplates
{
  "name": "[INSTANCE_TEMPLATE_NAME]",
  "sourceInstance": "zones/[SOURCE_INSTANCE_ZONE]/instances/[SOURCE_INSTANCE]",
  "sourceInstanceParams": {
    "diskConfigs": [
      {
        "deviceName": "[SOURCE_DISK]",
        "instantiateFrom": "[INSTANTIATE_FROM]"
      }
    ]
  }
}

em que:

  • [PROJECT_ID] é o código do projeto da solicitação;
  • [INSTANCE_TEMPLATE_NAME] é o nome do novo modelo;
  • [SOURCE_INSTANCE_ZONE] é a zona da instância de origem;
  • [SOURCE_INSTANCE] é o nome da instância de origem a ser usada como modelo para esse modelo de instância;
  • [SOURCE_DISK] é o nome de um disco de instância de origem que você quer substituir no modelo;
  • [INSTANTIATE_FROM] especifica se precisa incluir o disco e qual imagem usar. Os valores válidos dependem do tipo de disco:
    • source-image ou source-image-family: válido somente para discos de inicialização e outros discos de leitura/gravação permanentes;
    • custom-image: válido somente para discos de inicialização e outros discos de leitura/gravação permanentes. Se especificado, o caminho ou URL para a imagem personalizada também precisa ser especificado. Veja o exemplo abaixo;
    • attach-read-only: válido apenas para discos somente leitura.
    • blank: válido apenas para discos permanentes que não sejam de inicialização e SSDs locais. Se especificado, quando o modelo for usado para criar uma nova instância, o disco será criado sem formatação. Formate e monte o disco em um script de inicialização para poder usá-lo em uma configuração escalonável.
    • do-not-include: válido apenas para discos permanentes que não sejam de inicialização e discos somente leitura.

O exemplo a seguir cria um novo modelo de instância com base em my-source-instance. No modelo de instância, a imagem de data-disk-a é substituída por projects/coreos-cloud/global/images/coreos-alpha-1492-3-0-v20170810.

POST https://www.googleapis.com/compute/v1/projects/my_project/global/instanceTemplates
{
  "name": "my-instance-template",
  "sourceInstance": "zones/us-central1-a/instances/my-source-instance",
  "sourceInstanceParams":
  {
    "diskConfigs":
    [
      {
        "deviceName": "data-disk-a",
        "instantiateFrom": "custom-image",
        "customImage": "projects/coreos-cloud/global/images/coreos-alpha-1492-3-0-v20170810"
      }
    ]
  }
}

Como criar um modelo de instância com uma imagem de contêiner

Especifique uma imagem de contêiner em um modelo de instância. Por padrão, o Compute Engine também inclui no modelo uma imagem do sistema operacional Container-Optimized com o Docker instalado. Quando você usa o modelo para criar uma nova instância, o contêiner é iniciado automaticamente à medida que a instância é iniciada.

Console

  1. Acesse a página "Modelos de instância".

    Acessar a página "Modelos de instância"

  2. Clique em Criar modelo de instância.
  3. Na seção Contêiner, marque a caixa de seleção Implantar uma imagem de contêiner nesta instância de VM.
  4. Especifique a Imagem do contêiner a ser usada.
    • Por exemplo, especifique gcr.io/cloud-marketplace/google/nginx1:1.12 para selecionar uma imagem de contêiner NGINX 1.12 do Cloud Launcher.
    • Se você usar uma imagem de contêiner do Docker Hub, sempre especifique o nome completo da imagem do Docker. Por exemplo, especifique o nome da imagem a seguir para implantar uma imagem de contêiner do Apache: docker.io/httpd:2.4.
  5. Se quiser, clique em Opções de contêiner avançadas. Para mais informações, consulte Como configurar opções para executar seu contêiner.
  6. Clique em Criar.

gcloud

Use o comando gcloud compute instance-templates create-with-container:

gcloud compute instance-templates create-with-container [INSTANCE_TEMPLATE_NAME] \
     --container-image [CONTAINER_IMAGE]

em que:

  • [INSTANCE_TEMPLATE_NAME] é o nome do modelo a ser criado;
  • [CONTAINER_IMAGE] é o nome completo da imagem do contêiner a ser usada.

Por exemplo, o comando a seguir cria um novo modelo de instância chamado nginx-vm. Uma instância de VM criada desse modelo iniciará e executará a imagem do contêiner, gcr.io/cloud-marketplace/google/nginx1:1.12, quando a VM for iniciada.

 gcloud compute instance-templates create-with-container nginx-vm \
     --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

Você também pode configurar opções para executar seu contêiner.

Como criar um modelo de instância que especifica uma sub-rede

Os comandos de modelo têm sinalizadores --subnet e --region que colocam novas instâncias na sub-rede escolhida. A sinalização --subnet exige a sinalização --region.

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
    --region [REGION] \
    --subnet [SUBNET_NAME_OR_URL]

em que ocorrem as seguintes substituições:

  • [INSTANCE_TEMPLATE_NAME] pelo nome do modelo de instância;
  • [REGION] pela região da sub-rede;
  • [SUBNET_NAME_OR_URL] pelo nome da sub-rede ou do URL. Observação: se você usar o nome da sub-rede, o Google a encontrará na região de destino (desde que ela exista lá). Porém, se você usar o URL da sub-rede, o modelo da instância só poderá ser usado para criar instâncias na região específica associada ao URL da sub-rede.

Neste exemplo, foi criado um modelo chamado template-qa que só cria instâncias na sub-rede subnet-us-qa.

gcloud compute instance-templates create template-qa \
    --region us-central1 \
    --subnet subnet-us-qa

Created [https://www.googleapis.com/compute/latest/projects/PROJECT_ID/global/instanceTemplates/template-qa].
NAME        MACHINE_TYPE  PREEMPTIBLE CREATION_TIMESTAMP
template-qa n1-standard-1             2015-12-23T20:34:00.791-07:00

O uso desse modelo para criar instâncias de um Grupo de instâncias gerenciadas (com ou sem escalonamento automático) cria automaticamente a instância na região e na sub-rede especificadas. Isso permite controlar a sub-rede de novas instâncias criadas para o balanceamento de carga.

Usar imagens personalizadas ou públicas nos modelos de instância

Como os grupos de instâncias gerenciadas foram projetados para adicionar e remover instâncias com frequência, vale a pena criar uma imagem personalizada e especificá-la no modelo de instância. Prepare a imagem com as configurações e os aplicativos necessários nas instâncias para não precisar configurar esses itens manualmente em cada instância do grupo.

Como alternativa, crie um modelo de instância que use uma imagem pública e um script de inicialização para preparar essa instância assim que ela começar a ser executada. As imagens personalizadas têm caráter mais determinista e são inicializadas mais rapidamente do que as instâncias com scripts de inicialização. Por outro lado, esses scripts são mais flexíveis e, com eles, é possível atualizar com mais facilidade as configurações e os aplicativos das instâncias.

Como atualizar um modelo de instância

Não é possível atualizar nem alterar um modelo de instância depois de criá-lo. Caso tenha um modelo desatualizado ou precise fazer alterações na configuração, crie outro modelo.

Próximas etapas

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

Enviar comentários sobre…

Documentação do Compute Engine