Configure a imagem da VM para a implementação do Terraform

Este artigo descreve como concluir a configuração e enviar a imagem da VM para implementação através do Terraform.

Determine como criar o pacote de implementação

Recomendamos que use a opção de configuração guiada do Producer Portal para criar o pacote de implementação diretamente na Google Cloud consola.

A opção de configuração guiada suporta produtos de VM simples, como implementações de VM única com regras de firewall básicas, mas não suporta algumas funcionalidades complexas, como implementações com várias VMs e recursos não computacionais. Se precisar de funcionalidades que a configuração guiada não suporta, pode usar a opção de configuração manual para criar o seu pacote de implementação ou personalizar um pacote existente adicionando-lhe capacidades adicionais.

Alterne entre a configuração guiada e a configuração manual

Se usar a opção de configuração guiada do Producer Portal e, mais tarde, quiser mudar para a configuração manual do pacote de implementação, clique em Aceder à configuração manual.

Conclua a configuração guiada

Para concluir a configuração e enviar um pacote de implementação simples através da Google Cloud consola, conclua os seguintes passos:

  1. No Producer Portal, aceda à secção Pacote de implementação.

  2. Em Configuração do Terraform, junto ao campo de entrada etiquetado como Bucket do Cloud Storage, clique em Procurar.

    Se já tiver criado um contentor do Cloud Storage, selecione-o aqui.

    Se não tiver um contentor do Cloud Storage, clique no ícone com a etiqueta Criar novo contentor. Quando cria um novo depósito:

    • Selecione um nome para o contentor.

    • Especifique em que região ou regiões o contentor armazena dados.

    • Especifique a classe de armazenamento dos seus dados.

    • Determine o nível de detalhe a aplicar às autorizações de gestão de identidade e de acesso (IAM) para os dados do contentor.

    • Configure definições avançadas opcionais, como políticas de encriptação ou de retenção de dados.

  3. Certifique-se de que ativa a criação de versões de objetos para o seu contentor do Cloud Storage.

  4. Para guardar as definições do contentor e continuar a configurar o pacote de implementação, clique em Configurar.

  5. Em Escolha o tipo de máquina, tem de especificar uma zona predefinida, um tipo de máquina mínimo e um tipo de máquina predefinido para o seu produto de VM, juntamente com o tamanho e o tipo do respetivo disco de arranque.

  6. Em Especificar sistema operativo, tem de especificar o nome e a versão do SO que a imagem da VM usa, bem como o número da versão da imagem da VM.

  7. Opcionalmente, em Configurar acesso à VM, pode especificar URLs do site e do administrador, juntamente com um nome de utilizador e uma palavra-passe, que os utilizadores podem usar para aceder à VM após a implementação.

  8. Opcionalmente, em Configurar rede, pode especificar definições para o encaminhamento de IP e configurar regras de firewall.

  9. Opcionalmente, em Definir passos seguintes, pode fornecer instruções para os utilizadores do seu produto, de modo a orientá-los sobre como começar a usar o produto. Estas instruções ficam visíveis para os clientes depois de implementarem o seu produto.

  10. Depois de concluir os passos anteriores, clique em Gerar para criar o pacote de implementação.

    Se precisar de fazer alterações adicionais ao pacote de implementação mais tarde, pode clicar em Editar para fazer alterações e, de seguida, clicar em Gerar para regenerar o pacote de implementação com essas alterações aplicadas.

  11. Valide o pacote de implementação no Producer Portal.

  12. Depois de a validação do pacote de implementação do Cloud Marketplace ser concluída com êxito, clique em Publicar para começar a testar o pacote de implementação.

Conclua a configuração manual

Esta secção explica como usar a opção de configuração manual para criar um pacote de implementação e enviar o pacote para revisão.

Especifique se quer usar o módulo do Terraform predefinido ou um módulo personalizado

Pode escolher se quer que os seus clientes usem o módulo do Terraform predefinido ou um módulo personalizado quando implementarem o seu produto.

Se optar por usar o módulo Terraform predefinido, Google Cloud fornece aos seus clientes código Terraform gerado automaticamente que podem usar para implementar o seu produto.

Se optar por usar um módulo do Terraform personalizado, tem de fornecer os seus próprios modelos do Terraform ao cliente. Pode optar por fornecer estes modelos num formato que os clientes possam implementar através da interface de linhas de comando (CLI) ou com metadados adicionais que permitam aos clientes implementar módulos diretamente a partir do Cloud Marketplace.

Para especificar se os seus clientes devem usar o módulo Terraform predefinido ou um módulo Terraform personalizado e, para módulos Terraform personalizados, como quer que os seus clientes implementem o módulo, conclua os seguintes passos:

  1. No Producer Portal, aceda à secção Pacote de implementação.

  2. Em Configuração do Terraform, em Tipo, selecione Predefinição, Personalizado (implementação da CLI) ou Personalizado (implementação da IU).

Requisitos para módulos Terraform personalizados

Se optar por usar módulos do Terraform personalizados, o seu módulo personalizado tem de cumprir os seguintes requisitos:

  • O seu módulo personalizado tem de ter um módulo que o Cloud Marketplace possa usar para verificar se cumpre os requisitos. Para mais informações, consulte o artigo Teste se o seu módulo passa na validação.

  • O seu módulo tem de ter uma variável denominada project_id, que armazena o ID do projeto que os seus clientes usam para implementar o módulo.

  • Tem de especificar referências aos nomes das suas imagens como variáveis do Terraform, com o formato projects/PROJECT_NAME/global/images/IMAGE_NAME. O valor de default tem de ser definido como o nome da imagem da VM para que a cópia da imagem pertencente ao Cloud Marketplace possa ser substituída no módulo quando o produto de VM for publicado.

  • O seu módulo não pode depender de módulos externos que não estejam incluídos no pacote.

  • O seu módulo tem de usar apenas os seguintes fornecedores aprovados:

    • archive
    • cloud-init
    • dns
    • google
    • google-beta
    • http
    • null
    • random
    • time
    • tls

Para ver um exemplo de um módulo personalizado em conformidade com estes requisitos, visite o módulo Terraform personalizado de exemplo.

Requisitos adicionais para módulos Terraform personalizados para implementação da IU

Se o seu módulo personalizado suportar a implementação da IU, tem de cumprir os seguintes requisitos adicionais:

  • O módulo tem de conter uma variável denominada goog_cm_deployment_name. O Cloud Marketplace usa esta variável para dar um nome às implementações dos seus clientes na respetiva página de implementação. Deve usar esta variável para evitar conflitos de nomes de recursos entre várias implementações num projeto. Para ver um exemplo, consulte goog_cm_deployment_name no módulo Terraform personalizado de exemplo.

  • No ficheiro metadata.display.yaml, tem de especificar ET_GCE_DISK_IMAGE como o tipo xGoogleProperty para todas as variáveis de imagem. Por exemplo, consulte metadata.display.yaml no módulo Terraform personalizado de exemplo.

  • Se o seu produto contiver imagens de várias VMs ou imagens que suportam várias arquiteturas de CPU, tem de adicionar enumValueLabels para que os clientes possam selecionar a imagem de VM que querem usar. Para ver um exemplo, consulte o módulo Terraform personalizado de exemplo.

  • O seu módulo não pode depender do suporte para preparadores do Terraform.

Passos adicionais para módulos do Terraform personalizados

Se selecionou a opção para usar módulos do Terraform personalizados, tem de concluir os seguintes passos adicionais para configurar a imagem da VM para implementação:

  1. No Producer Portal, aceda à secção Pacote de implementação.

  2. Em Configuração do Terraform, em Variáveis de imagem, clique em Adicionar variável.

    Para ativar a implementação do Terraform do seu produto, tem de ter ativado a utilização de imagens pertencentes ao Marketplace. O Cloud Marketplace usa a variável que adiciona aqui para substituir a versão da imagem da VM pertencente ao Marketplace quando um cliente implementa o seu produto.

  3. No campo de texto Variável de imagem, introduza um nome para a variável, como "image".

  4. No seu módulo Terraform personalizado, defina o valor predefinido da variável que criou no passo anterior para o nome da imagem da VM do seu produto, no formato projects/YOUR_PROJECT/global/images/YOUR_IMAGE.

  5. Em Especifique a localização do objeto do GCS, clique em Procurar.

    Se já tiver criado um contentor do Cloud Storage, selecione-o aqui.

    Se não tiver um contentor do Cloud Storage, clique no ícone com a etiqueta Criar novo contentor. Quando cria um novo depósito:

    • Selecione um nome para o contentor.

    • Especifique em que região ou regiões o contentor armazena dados.

    • Especifique a classe de armazenamento dos seus dados.

    • Determine o nível de detalhe a aplicar às autorizações de gestão de identidade e de acesso (IAM) para os dados do contentor.

    • Configure definições avançadas opcionais, como políticas de encriptação ou de retenção de dados.

  6. Certifique-se de que o controlo de versões de objetos está ativado para o seu contentor do Cloud Storage.

  7. Para guardar as definições do contentor e continuar a configurar o pacote de implementação, clique em Configurar.

  8. Em Funções obrigatórias, especifique as funções de IAM que os seus clientes têm de ter para implementar o seu produto.

(Apenas implementação da IU) Crie metadados para o seu módulo Terraform personalizado

Para que o seu módulo personalizado suporte a implementação da IU, tem de criar e adicionar metadados que o Cloud Marketplace usa para analisar corretamente o seu módulo e renderizá-lo na IU para o seu cliente.

Para criar e adicionar estes metadados, pode usar a ferramenta CFT CLI de código aberto. Para usar a CFT para criar e adicionar metadados aos seus módulos personalizados, conclua os seguintes passos:

  1. Instale a ferramenta CLI do CFT. Para mais informações, visite a documentação da CFT CLI. Recomendamos que especifique o valor de VERSION como latest e defina PLATFORM como um dos seguintes valores:

    • linux

    • windows

    • darwin

  2. Execute o seguinte comando:

     cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=false
    

    No comando anterior, a flag -p fornece um caminho para o pacote Terraform, a flag -q gera metadados sem precisar de informações para um repositório remoto, a flag -d gera o ficheiro metadata.display.yaml e a flag --nested=false gera metadados para o módulo raiz, ignorando todos os módulos na pasta modules/.

Depois de concluir os passos anteriores, a ferramenta CFT CLI gera dois novos ficheiros: metadata.yaml e metadata.display.yaml.

Personalize os metadados do seu módulo Terraform personalizado

O Cloud Marketplace usa o ficheiro metadata.display.yaml para personalizar o formulário que os clientes usam para implementar o seu produto através da IU. Se quiser personalizar este formulário, depois de criar os metadados, pode alterar os valores dos campos em metadata.display.yaml. Para ver detalhes das opções de personalização disponíveis, visite a documentação da BlueprintUI de código aberto ou consulte o esquema da BlueprintUI.

Recomendamos que use a extensão GooglePropertyExtensions para alterar os metadados. GooglePropertyExtensions permite-lhe usar validações específicas deGoogle Cloud, como aplicar que os clientes só podem selecionar redes de nuvem virtual privada (VPC) que já existam no respetivo projeto. Para ver um exemplo, consulte o módulo Terraform personalizado de exemplo.

Valide os metadados do seu módulo personalizado

Para validar os metadados do seu módulo personalizado, execute o seguinte comando:

cft blueprint metadata -p TF_PACKAGE_PATH -v

No comando anterior, a flag -p fornece um caminho para o pacote do Terraform e a flag -v valida todos os ficheiros de metadados no caminho fornecido com base no esquema BlueprintMetadata.

Teste se o seu módulo passa na validação

O seu módulo personalizado passa na validação se o seguinte comando for executado com êxito:

terraform plan -var project_id=YOUR_PROJECT -var-file marketplace_test.tfvars

No comando anterior, marketplace_test.tfvars é um ficheiro de variáveis do Terraform que apenas o Cloud Marketplace usa, exclusivamente para esta validação do módulo. Se o seu modelo declarar variáveis que não tenham um valor predefinido, e não definir um valor para essas variáveis, o comando não é executado com êxito. Para garantir que o comando é executado com êxito, pode criar um ficheiro marketplace_test.tfvars para definir valores para as variáveis que o modelo declara. Para ver um exemplo de ficheiro marketplace_test.tfvars, consulte o módulo Terraform personalizado de exemplo.

(Opcional) (Apenas implementação da CLI) Inclua um módulo de teste

Opcionalmente, se o seu módulo personalizado suportar a implementação da CLI, pode optar por incluir uma pasta denominada examples/marketplace_test. Pode querer fazê-lo se o seu produto precisar de incluir um módulo de teste separado para validar as respetivas capacidades. Se incluir esta pasta, para que o módulo passe na validação, o seguinte comando tem de ser executado com êxito:

terraform -chdir=examples/marketplace_test plan -var project_id=YOUR_PROJECT

Valide e teste a implementação

Depois de criar e configurar o pacote de implementação, tem de o validar e testar antes de a equipa do Cloud Marketplace o poder rever e aprovar.

  1. No Producer Portal, aceda à secção Pacote de implementação.

  2. Clique em Validar. O processo de validação pode demorar até duas horas a ser concluído, e pode sair do ecrã enquanto é executado.

  3. Depois de a validação ser concluída com êxito, clique em Pré-visualização da implementação para testar a implementação.

O que se segue?

Depois de validar e testar a implementação com êxito, pode clicar em Publicar para enviar o seu produto geral para revisão e publicação no Cloud Marketplace. Para ver detalhes, consulte o artigo Envie o seu produto.