Nesta página, você aprenderá a criar e gerenciar modelos de instância. Com esses modelos, é possível definir o tipo de máquina, a imagem do disco de inicialização ou do contêiner, a rede e outras propriedades que serão usadas na criação de novas instâncias de máquina virtual (VM, na sigla em inglês). É possível usar modelos de instância para criar instâncias individuais ou para criá-las em um grupo de instâncias gerenciadas (MIG, na sigla em inglês).
Antes de começar
- Para usar os exemplos de linha de comando deste guia, siga estas etapas:
- Instale ou atualize a ferramenta de linha de comando gcloud para a versão mais recente.
- Defina uma região e uma zona padrão.
- Para usar os exemplos da API deste guia, configure o acesso a ela.
Limitações
- A VPC compartilhada em interfaces diferentes de
nic0
para modelos de instância é compatível com a ferramentagcloud
e a API, mas não no Console do Cloud.
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. Para uma lista dos campos obrigatórios, consulte a referência instanceTemplates.insert
.
Crie um modelo de instância por meio do Console do Google Cloud, da ferramenta de linha de comando gcloud
ou da API.
Console
No Console do Cloud, acesse a página Modelos de instância.
Clique em Criar modelo de instância.
Digite valores para os campos a seguir ou aceite os valores padrão. Os valores padrão mudam com base na família de máquinas que você seleciona.
- Tipo de máquina
- Image
- Disco de inicialização
- Rede VPC
- Endereço IP
Também é possível alterar as configurações da VM protegida da instância se você escolher uma imagem compatível com a VM protegida:
- Em Gerenciamento, segurança, discos, rede, locatário único, clique na guia Rede.
- Se você quiser desativar a Inicialização segura, desmarque a caixa de seleção Ativar a Inicialização segura. A Inicialização segura ajuda a proteger as instâncias de VM de malware e rootkits nos níveis da inicialização e do kernel. Para mais informações, consulte Inicialização segura.
Se quiser desativar o módulo da plataforma virtual confiável (vTPM, na sigla em inglês), desmarque a caixa de seleção Ativar vTPM. O vTPM permite a Inicialização medida, que valida a integridade da VM antes e durante a inicialização. Para mais informações, consulte Módulo da plataforma virtual confiável (vTPM).
Se você quiser desativar o monitoramento de integridade, desmarque a caixa de seleção Ativar monitoramento de integridade. Com o monitoramento de integridade, você consegue monitorar a integridade da inicialização das instâncias de VM protegidas usando o Cloud Monitoring. Para mais informações, consulte Monitoramento de integridade.
Opcional: em Gerenciamento, segurança, discos, rede, locatário único, clique nas guias para personalizar ainda mais o modelo. Por exemplo, adicione até 15 discos secundários que não sejam de inicialização.
Opcional: clique em REST equivalente para visualizar o corpo da solicitação REST, que inclui a representação JSON do modelo de instância.
Clique em Criar para criar o modelo.
gcloud
Em gcloud compute
, crie um modelo de instância usando o comando instance-templates create
(em inglês). Substitua INSTANCE_TEMPLATE_NAME
pelo nome do modelo de instância.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
Se você não fornecer as configurações do modelo explicitamente, o gcloud compute
usará
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 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 e2-standard-4 \
--image-family debian-9 \
--image-project debian-cloud \
--boot-disk-size 250GB
é possível adicionar 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 a partir de uma imagem pública ou de banco de imagem, especifique as propriedades image
e image-project
na sinalização --create-disk
. Para criar um disco vazio, não inclua essas propriedades. Se quiser, inclua as propriedades size
e type
do disco.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--create-disk image=DISK_IMAGE,image-project=DISK_IMAGE_PROJECT,size=SIZE_GB
Substitua:
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, executegcloud compute images list
(em inglês). Para discos vazios, não especifique uma imagem de disco ou um projeto de imagem;DISK_IMAGE_PROJECT
: o projeto de imagem a que a imagem de disco pertence. Para discos vazios, 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-secure-boot
: desativa 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-vtpm
: desativar o módulo da plataforma virtual confiável (vTPM, na sigla em inglês). O vTPM permite a Inicialização medida, que valida a integridade da VM antes e durante a inicialização. Para mais informações, consulte Módulo da plataforma virtual confiável (vTPM).--no-shielded-integrity-monitoring
: desativa o monitoramento de integridade. O monitoramento de integridade permite monitorar a integridade da inicialização das instâncias de VM protegidas usando o Cloud Monitoring. Para mais informações, consulte Monitoramento de integridade.
Consulte uma lista de sinalizações disponíveis na referência gcloud compute
.
Um modelo que aplica as configurações padrão é semelhante a este:
gcloud compute instance-templates describe example-template
creationTimestamp: '2019-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://compute.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9 kind: compute#attachedDisk mode: READ_WRITE type: PERSISTENT machineType: e2-standard-2 networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat type: ONE_TO_ONE_NAT network: https://compute.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://compute.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": "e2-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 vazios, não especifique um sourceImage
. Como opção, é possível incluir as propriedades diskSizeGb
, diskType
e labels
.
Se você tiver escolhido uma imagem compatível com VM protegida, será possível alterar as configurações da VM protegida da instância usando os itens do corpo da solicitação booleana a seguir:
enableSecureBoot
: ativar ou desativar 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.enableVtpm
: ativar ou desativar o módulo da plataforma virtual confiável (vTPM, na sigla em inglês). O vTPM permite a Inicialização medida, que valida a integridade da VM antes e durante a inicialização. Para mais informações, consulte Módulo da plataforma virtual confiável (vTPM).enableIntegrityMonitoring
: ativar ou desativar 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 relatórios do Cloud Monitoring. Para mais informações, consulte Monitoramento de integridade.
Para todos os campos possíveis, consulte a documentação de referência.
Como criar um modelo com base em uma instância atual
Use a API Compute Engine ou a ferramenta gcloud
para salvar a configuração de uma instância de VM atual como um modelo de instância.
Modifique a maneira como os discos de origem são definidos no modelo.
Se você precisar modificar outras propriedades, primeiro crie um modelo com base em uma instância atual e, em seguida, crie um modelo semelhante com outras modificações.
gcloud
Para 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
ousource-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 da imagem personalizada também precisa ser especificado, como no 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 ative 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
eyes
.
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 definindo a exclusão automática como true
e substituindo 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 uma lista de todas as sinalizações, consulte os documentos da API InstanceTemplates
POST https://compute.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 ID 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
ousource-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 da imagem personalizada também precisa ser especificado, como no 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 ative 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://compute.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"
}
]
}
}
Na tabela a seguir, mostramos as opções para modificar a maneira como os discos são definidos no modelo.
Tipo de disco | Opções |
---|---|
Disco de inicialização |
|
Outros discos permanentes de leitura/gravação |
|
Discos somente de leitura |
|
SSDs locais |
|
Também é possível modificar o atributo auto-delete
para cada disco, especificando se ele precisa ser excluído ou não quando sua instância associada for excluída.
Por padrão, se nenhuma opção de modificação for especificada, a configuração do disco no modelo corresponderá à instância de origem.
Como criar um modelo de instância com base em um modelo atual
Não é possível atualizar um modelo de instância atual. No entanto, se um modelo de instância ficar desatualizado ou se você precisar fazer alterações, crie outro com propriedades semelhantes. Use o console.
Acesse a página Modelos de instância.
Clique no modelo da instância que você quer copiar e atualizar.
Clique em Criar semelhante.
Atualize a configuração no novo modelo.
Clique em Criar.
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
Acesse a página Modelos de instância.
Clique em Criar modelo de instância.
Na seção Contêiner, marque a caixa de seleção Implantar uma imagem de contêiner nesta instância de VM.
Especifique a Imagem de contêiner a ser usada.
- É possível especificar uma imagem do Container Registry ou do Artifact Registry.
Por exemplo:
gcr.io/cloud-marketplace/google/nginx1:1.12
seleciona uma imagem de contêiner NGINX 1.12 do Google Cloud Marketplace.us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
seleciona uma amostra de imagemhello-app
armazenada no Artifact Registry.
- Se você usar uma imagem de contêiner do Docker Hub, sempre especifique o nome completo da imagem do Docker. Por exemplo, forneça o seguinte nome para implantar uma imagem do contêiner Apache:
docker.io/httpd:2.4
- É possível especificar uma imagem do Container Registry ou do Artifact Registry.
Por exemplo:
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.
Clique em Criar.
gcloud
Use o comando gcloud compute instance-templates create-with-container
(em inglês).
gcloud compute instance-templates create-with-container INSTANCE_TEMPLATE_NAME \
--container-image CONTAINER_IMAGE
Substitua:
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 a partir desse modelo inicia e executa a imagem de contêiner, gcr.io/cloud-marketplace/google/nginx1:1.12
, quando a VM é 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 sinalizações --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
Substitua:
INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância que você quer;REGION
: a região da sub-rede;SUBNET_NAME_OR_URL
: o nome da sub-rede ou o URL dela.
No exemplo a seguir, criamos um modelo chamado template-qa
que gera instâncias apenas na sub-rede subnet-us-qa
.
gcloud compute instance-templates create template-qa \
--region us-central1 \
--subnet subnet-us-qa
Created [https://compute.googleapis.com/compute/latest/projects/PROJECT_ID/global/instanceTemplates/template-qa].
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP
template-qa e2-standard-2 2019-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, gera automaticamente a instância na sub-rede e na região especificadas. Isso permite controlar a sub-rede de novas instâncias criadas para 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 os apps e as configurações necessários às suas instâncias para que você não precise configurar manualmente esses itens em instâncias individuais no MIG.
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. No entanto, esses scripts são mais flexíveis e permitem que você atualize os apps e as configurações nas suas instâncias com mais facilidade.
Atualizar um modelo de instância
Não é possível atualizar ou 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.
A seguir
- Leia dicas para criar modelos de instâncias determinísticas.
- Crie uma instância de VM a partir de um modelo de instância.
- Crie um MIG zonal.
- Crie um MIG regional.