Criar a imagem da máquina virtual (VM)

Esta página ajuda a criar uma imagem da máquina pública para o seu produto ser executado no Compute Engine.

Uma imagem contém um carregador de arranque, um sistema operativo e um sistema de ficheiros raiz necessários para iniciar uma instância. Pode configurar a imagem com um conjunto de apps e serviços para o seu produto. A imagem é usada pelos clientes para iniciar uma instância de máquina virtual (VM) na nuvem.

Recomendamos que comece por criar uma imagem no seu projeto de desenvolvimento e, em seguida, a mova para o seu projeto público depois de o engenheiro de parceiros da Google ter validado a imagem.

Antes de começar

  1. Descarregue o SDK do Google Cloud.

Crie a VM do produto base

Para criar uma imagem de máquina personalizada para o Cloud Marketplace, tem de concluir estes passos (descritos nas secções seguintes):

  • Use uma das imagens públicas base suportadas da Google para criar uma VM e instale os pacotes e as configurações específicos da sua app.

    Pode escolher uma imagem que use processadores Arm ou uma que use processadores x86. Também pode incluir várias imagens, segmentando diferentes tipos de máquinas, num produto de VM. Para mais informações sobre as plataformas de CPU e os tipos de máquinas que as suportam, consulte o artigo Plataformas de CPU.

  • Se pretender oferecer apoio técnico aos seus clientes, instale scripts para obter as credenciais de utilizador da app.

Crie uma imagem de VM licenciada

  1. Use o gcloud para definir predefinições para a CLI gcloud:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. Crie uma instância principal que seja usada para instalar o seu software e, posteriormente, convertida numa imagem para usar no Cloud Marketplace. Para mais informações sobre como criar uma instância, consulte Criar e iniciar uma instância.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. Instale e personalize o software. Inclua todos os scripts de arranque necessários, como os para criar credenciais de autorização.

    Para criar credenciais de autorização com palavras-passe aleatórias seguras, siga os passos descritos na secção Criar credenciais de autorização, na secção seguinte.

    Depois de criar e personalizar a instância principal, prepare o disco necessário para criar uma imagem de VM.

  4. Limpe o disco. A criação de uma imagem de VM diretamente a partir da sua VM também transfere os seus diretórios de utilizador e chaves SSH para as VMs dos seus clientes, pelo que tem de limpar o disco de entrada quando criar a imagem de VM.

    Para limpar o disco:

    1. No menu VM Instances do Compute Engine, clique no nome da instância que quer limpar e, de seguida, clique em Editar.

    2. Desloque a página para baixo, desmarque a caixa de verificação Eliminar disco de arranque quando a instância for eliminada e clique em Guardar. Usa o disco para criar a imagem.

    3. Eliminar a VM, preservando o disco. É-lhe pedido que confirme a eliminação. Não selecione Eliminar também o disco de arranque.

    4. Em seguida, tem de criar uma nova instância de VM. Expanda as opções Management, disk, networking e SSH keys.

    5. Em disco, anexe o disco da instância anterior como um disco de dados adicional. Certifique-se de que a opção Manter disco está selecionada para Quando eliminar a instância.

      Agora, pode usar o SSH na instância e remover todos os diretórios pessoais ou outros ficheiros temporários criados durante o processo de instalação do software. Tem de montar o disco de dados antes de poder aceder ao mesmo. Para mais informações sobre a montagem de discos, consulte Adicionar ou redimensionar discos persistentes.

    6. Quando terminar, encerre e elimine a instância, preservando o disco de dados atualizado. Agora, pode criar uma imagem da VM concluindo os seguintes passos.

  5. Obtenha o nome da licença do seu produto de VM no Producer Portal através destes passos:

    1. Abra o Producer Portal na Google Cloud consola:

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      Substitua YOUR_PROJECT_ID pelo ID do seu projeto de desenvolvimento ou público. Recomendamos que comece por criar uma imagem no seu projeto de desenvolvimento e, em seguida, a mova para o seu projeto público depois de o engenheiro de parceiros da Google validar a imagem.

    2. Clique no nome do produto.

    3. Aceda à secção Pacote de implementação. Em Licença de VM, tome nota do nome. Vai usar este nome da licença no passo seguinte, quando criar a imagem.

  6. Execute o seguinte gcloud comando para criar uma imagem licenciada:

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION

    Substitua o seguinte:

    • CREATE_IMAGE_NAME: o nome da imagem e as arquiteturas de CPU que suporta, no formato who-vmOS-image-architecture-date, substituindo architecture por Arm ou x86_64, consoante a arquitetura de CPU que a imagem suporta. Tem de usar um nome novo e exclusivo sempre que atualizar a imagem do produto.

    • PUBLIC_PROJECT_NAME: O ID do projeto público para o Cloud Marketplace. Tem de ter-lhe sido concedida a função Administrador do armazenamento do Compute (roles/compute.storageAdmin) para este projeto.

    • LICENSE_NAME: o nome da licença do seu produto de VM que indicou no passo anterior.

    • DEV_PROJECT_NAME: o ID do projeto que criou para desenvolvimento e testes para o Google Cloud Marketplace. Tem de ter a função Utilizador de imagens de computação (roles/compute.imageUser) para este projeto.

    • SOURCE_DISK_ZONE: a zona do disco de origem.

    • SOURCE_DISK_NAME: o nome do disco de origem.

    • ADD_DESCRIPTION: uma descrição textual opcional da imagem que está a ser criada.

Torne a imagem pública

Para produtos não Terraform que não usam imagens pertencentes ao Marketplace, tem de tornar a sua imagem disponível publicamente para que os seus clientes a possam implementar nas respetivas instâncias do Compute Engine. Para tornar a imagem pública, use a Google Cloud consola ou a Google Cloud CLI:

Consola

  1. No seu projeto público, em Compute Engine, aceda à página Images (Imagens).

    Aceda à página Imagens

  2. Selecione a sua imagem, conforme mostrado abaixo:

  3. Se não vir um painel de informações na parte superior direita, clique em Mostrar painel de informações.

  4. No painel de informações, no campo Adicionar membros, introduza allAuthenticatedUsers e, no menu Selecionar uma função, selecione Utilizador da imagem do Compute.

  5. Clique em Adicionar para tornar a imagem pública.

Linha de comandos

Use o seguinte comando gcloud no Cloud Shell ou no seu computador local:

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

Crie credenciais de autorização

Se o seu produto for uma implementação simples de uma única instância de VM com regras de firewall básicas, pode incluir automaticamente uma palavra-passe aleatória segura quando configurar o pacote de implementação diretamente.

Se planeia criar o pacote de implementação através da ferramenta de código aberto mpdev, que recomendamos para a maioria dos exemplos de utilização, pode usar mpdev para incluir automaticamente várias palavras-passe aleatórias seguras.

Para ver os passos para criar credenciais de autorização, consulte o artigo Criar o pacote de implementação.

Depois de o produto ter sido implementado, para obter os valores de quaisquer palavras-passe que criou, use o seguinte comando na instância da VM:

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

Teste a imagem da VM

Crie uma instância de VM com a imagem criada recentemente e valide a funcionalidade.

Além disso, para validar o ID da licença, use SSH na instância e verifique se existem licenças válidas anexadas:

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Verifique se o Python 2.6 ou superior está instalado:

python -V

Confirme se os seguintes pacotes estão instalados:

gcloud --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

Verifique se não existem outros diretórios de utilizadores instalados na instância, exceto o seu, e se não existem diretórios de utilizadores e credenciais restantes que não sejam os seus.