O Packer é uma ferramenta de código aberto para criar imagens de máquinas virtuais (VMs) idênticas para várias plataformas a partir de uma configuração de origem única. Esta página explica como usar o Packer e o Cloud Build para criar uma imagem de VM para utilização no Compute Engine.
Antes de começar
As instruções nesta página pressupõem que conhece o Packer
. Além disso:
- Tenha o código-fonte, incluindo o modelo do Packer, à mão.
- Se quiser usar os comandos
gcloud
nesta página, instale a CLI do Google Cloud. Ative as seguintes APIs:
gcloud services enable sourcerepo.googleapis.com gcloud services enable compute.googleapis.com gcloud services enable servicemanagement.googleapis.com gcloud services enable storage-api.googleapis.com
Autorizações de IAM necessárias
Para usar o Packer com o Cloud Build, conceda a função de administrador de instâncias do Compute Engine (
roles/compute.instanceAdmin.v1
) à conta de serviço de compilação.Para armazenar imagens criadas no Artifact Registry, conceda à conta de serviço de compilação a função Artifact Registry Writer (
roles/artifactregistry.writer
).
Criar uma imagem do criador do Packer
O Cloud Build fornece uma
imagem do criador da comunidade do Packer
que pode usar para invocar comandos packer
no Cloud Build.
Antes de usar este criador num ficheiro de configuração do Cloud Build, tem de criar a imagem e enviá-la para o Artifact Registry:
Clone o repositório cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Navegue para a imagem do criador do Packer:
cd cloud-builders-community/packer
Envie o criador para o seu projeto:
gcloud builds submit .
Usar o criador do Packer
Certifique-se de que tem o ficheiro packer.json juntamente com o código fonte.
No diretório raiz do projeto, crie um ficheiro de configuração de compilação denominado
cloudbuild.yaml
oucloudbuild.json
.No ficheiro de configuração da compilação, adicione um passo de compilação para invocar o comando
packer build
:YAML
steps: - name: 'gcr.io/[PROJECT_ID]/packer' args: - build - -var - image_name=[IMAGE_NAME] - -var - project_id=[PROJECT_ID] - -var - image_family=[IMAGE_FAMILY] - -var - image_zone=[IMAGE_ZONE] - packer.json
JSON
{ "steps": [ { "name": "gcr.io/[PROJECT_ID]/packer", "args": [ "build", "-var", "image_name=[IMAGE_NAME]", "-var", "project_id=[PROJECT_ID]", "-var", "image_family=[IMAGE_FAMILY]", "-var", "image_zone=[IMAGE_ZONE]", "packer.json" ] } ] }
Onde:
[PROJECT_ID]
é o ID do seu Google Cloud projeto.[IMAGE_NAME]
é o nome da imagem da VM que está a criar.[IMAGE_FAMILY]
é a família de imagens da imagem da VM.[IMAGE_ZONE]
é a zona da imagem.
Inicie a compilação com o ficheiro de configuração de compilação:
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
Onde:
[CONFIG_FILE_PATH]
é o caminho para o ficheiro de configuração de compilação.[SOURCE_DIRECTORY]
é o caminho ou o URL para o código-fonte.[REGION]
é uma das regiões de compilação suportadas.
Se não especificar um
[CONFIG_FILE_PATH]
e um[SOURCE_DIRECTORY]
no comandogcloud builds submit
, o Cloud Build assume que o ficheiro de configuração e o código fonte estão no diretório de trabalho atual.
Depois de criadas, pode ver as imagens na página de imagens do Compute Engine na Google Cloud consola.
O que se segue?
- Saiba como criar contentores.
- Saiba como criar
Go
projetos. - Saiba como resolver problemas de erros de compilação.