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. Você também pode incluir várias imagens, segmentando diferentes tipos de máquina em um único 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 a gcloud para definir os 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. Criar uma imagem diretamente na VM também transfere os diretórios de usuário e as chaves SSH nos VMs, portanto, é preciso limpar 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ê precisa confirmar exclusão. Não selecione Também excluir disco de inicialização.
Em seguida, você precisa criar uma nova instância de VM. Expanda as opções em Gerenciamento, disco, redes, chaves SSH.
Em disco, anexe o disco da instância anterior como um disco de dados adicional. Verifique se Manter disco está selecionado 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, observe nome. Você usará esse nome de licença na próxima etapa ao criar sua 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 da CPU às arquiteturas compatíveis, no formato
who-vmOS-image-architecture-date
, substituindoarchitecture
porArm
oux86_64
, dependendo de qual arquitetura de CPU a imagem suporta. 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ê deve use o papel Usuário de imagens do Compute papel (
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 método 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, poderá usar mpdev
para incluir automaticamente
várias senhas aleatórias seguras.
Para ver as etapas de criação de credenciais de autorização, consulte Como criar o pacote de implantação.
Após a implantação do produto, para receber os valores das senhas que que você criou, use o seguinte comando na instância da 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.