Nesta página, você aprende a criar uma imagem de máquina pública para seu produto ser executado no Compute Engine.
Uma imagem contém um carregador de inicialização, um sistema operacional e um sistema de arquivos raiz, necessário à inicialização de uma instância. É possível configurar a imagem com um conjunto de apps e serviços para seu produto. A imagem é usada pelos clientes para iniciar uma instância de máquina virtual (VM) na nuvem.
Recomendamos começar criando uma imagem no projeto de desenvolvimento e movê-la para o projeto público depois que o engenheiro de parceiros do Google a tiver verificado.
Antes de começar
- Faça o download do SDK do Google Cloud.
Crie a VM do produto base
Para criar uma imagem de máquina personalizada para o Cloud Marketplace, você precisa concluir estas etapas (descritas nas seções a seguir):
Use uma das imagens públicas base compatíveis do Google para criar uma VM e instalar os pacotes específicos do aplicativo e as configurações.
É possível escolher uma imagem que usa processadores Arm ou x86. Também é possível incluir várias imagens, segmentando diferentes tipos de máquinas, em um produto de VM. Para mais informações sobre plataformas de CPU e os tipos de máquina compatíveis, consulte Plataformas de CPU.
Se você pretende oferecer suporte aos clientes, instale scripts para recuperar as credenciais de usuário do app.
Criar uma imagem de VM licenciada
Use o gcloud para definir padrões da Google Cloud CLI:
gcloud config set project <project_id> gcloud config set compute/zone <zone>
Crie uma instância principal que será usada para instalar o software e, posteriormente, convertida em uma imagem para usar no Cloud Marketplace. Para mais informações sobre como criar uma instância, consulte Como criar e iniciar uma instância.
gcloud compute instances create ${INSTANCE} --scopes https://www.googleapis.com/auth/cloud-platform
Instale e personalize seu software. Inclua todos os scripts de inicialização necessários, como aqueles para criar credenciais de autorização.
Para criar credenciais de autorização usando senhas aleatórias seguras, siga as etapas em Como criar credenciais de autorização, na seção a seguir.
Depois de criar e personalizar a instância principal, prepare o disco necessário para criar uma imagem de VM.
Limpe o disco. A criação de uma imagem de VM diretamente da VM também transfere os diretórios de usuário e as chaves SSH para as VMs dos clientes. Portanto, limpe o disco de entrada ao criar a imagem de VM.
Para limpar o disco:
No menu Instâncias de VM do Compute Engine, clique no nome da instância que você quer limpar e em Editar.
Role para baixo, desmarque a caixa de seleção Excluir disco de inicialização quando a instância for excluída e clique em Salvar. Use o disco para criar a imagem.
Exclua a VM preservando o disco. Você vai precisar confirmar a exclusão. Não selecione Também excluir disco de inicialização.
Em seguida, você precisa criar uma nova instância de VM. Abra as opções Gerenciamento, disco, redes, chaves SSH.
Em disco, anexe o disco da instância anterior como um disco de dados adicional. Verifique se a opção Manter disco está selecionada para Ao excluir uma instância.
Já é possível aplicar SSH à instância e remover todos os diretórios iniciais ou outros arquivos temporários criados durante o processo de instalação do software. É preciso montar o disco de dados antes de acessá-lo. Para mais informações sobre como montar discos, consulte Como adicionar ou redimensionar discos permanentes.
Quando terminar, desligue e exclua a instância preservando o disco de dados atualizado. Agora, é possível concluir os passos a seguir para criar uma imagem de VM.
Siga as etapas abaixo para conseguir o nome da licença do seu produto de VM no Portal do Produtor:
Abra o Portal do Produtor no Console do Google Cloud:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
Substitua YOUR_PROJECT_ID pelo ID do projeto público ou de desenvolvimento. Recomendamos começar criando uma imagem no projeto de desenvolvimento e movê-la para o projeto público depois que o Engenheiro de parceiros do Google tiver verificado a imagem.
Clique no nome do seu produto.
Acesse a seção Pacote de implantação. Em Licença de VM, anote o nome. Use esse nome de licença na próxima etapa, ao criar a imagem.
Crie uma imagem licenciada executando o seguinte comando
gcloud
: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:
CREATE_IMAGE_NAME: o nome da imagem e as arquiteturas de CPU com suporte, no formato
who-vmOS-image-architecture-date
, substituindoarchitecture
porArm
oux86_64
, dependendo da arquitetura de CPU com suporte da imagem. Você precisa usar um nome novo e exclusivo sempre que atualizar a imagem do seu produto.PUBLIC_PROJECT_NAME: o ID do projeto público do Cloud Marketplace. Você precisa ter recebido o papel de Administrador do Compute Storage (
roles/compute.storageAdmin
) para este projeto.LICENSE_NAME: o nome da licença do produto de VM anotado na etapa anterior.
DEV_PROJECT_NAME: o ID do projeto criado para desenvolvimento e teste no Cloud Marketplace. Você precisa ter o papel de Usuário de imagens do Compute (
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á sendo criada.
Tornar a imagem pública
Para produtos que não são do Terraform e que não usam imagens do Marketplace, é necessário disponibilizar a imagem publicamente para que os clientes possam implantá-la nas instâncias do Compute Engine. Para tornar a imagem pública, use o console do Google Cloud ou a Google Cloud CLI:
Console
No projeto público, no Compute Engine, acesse a página "Imagens".
Selecione a imagem, conforme mostrado abaixo:
Se você não vir um painel de informações no canto superior direito, clique em Mostrar painel de informações.
No painel de informações, no campo Adicionar membros, digite
allAuthenticatedUsers
e, no menu Selecione uma função, selecione Computar usuário de imagem.Clique em Adicionar para tornar a imagem pública.
Linha de comando
Use o seguinte comando gcloud
no Cloud Shell ou na sua máquina local:
gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser
Criar credenciais de autorização
Se o produto for uma implantação simples de uma única instância de VM com regras básicas de firewall, será possível incluir automaticamente uma senha aleatória segura ao configurar o pacote de implantação diretamente.
Se você planeja criar seu pacote de implantação usando a
ferramenta mpdev
de código aberto,
que é recomendada para a maioria dos casos de uso, use mpdev
para
incluir automaticamente várias senhas aleatórias seguras.
Para conferir as etapas de criação de credenciais de autorização, consulte Como criar seu pacote de implantação.
Depois que o produto for implantado, para conferir os valores de todas as senhas que você criou, use o seguinte comando na instância de VM:
curl -H "Metadata-Flavor: Google" \ http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME
Testar a imagem da VM
Crie uma instância de VM com sua imagem recém-criada e verifique a funcionalidade.
Além disso, para verificar o código de licença, aplique SSH à instância e verifique se as licenças válidas estão anexadas:
curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true
Verifique se o Python 2.6 ou posterior está instalado:
python -V
Verifique se os pacotes a seguir estão instalados:
gcloud --version ssh -V ps aux | grep sshd curl -V ps aux | grep dhcp
Verifique se não há outros diretórios de usuário instalados na instância, exceto o seu, e se não há nenhum diretório e credencial de usuário restante além dos seus.