Packer es una herramienta de código abierto que permite crear imágenes de máquinas virtuales (VMs) idénticas para varias plataformas a partir de una sola configuración de origen. En esta página se explica cómo usar Packer y Cloud Build para crear una imagen de VM que se pueda usar en Compute Engine.
Antes de empezar
En las instrucciones de esta página se da por hecho que conoces Packer
. Además, también ocurre lo siguiente:
- Ten a mano el código fuente, incluida la plantilla de Packer.
- Si quieres usar los comandos
gcloud
de esta página, instala Google Cloud CLI. Habilita las siguientes 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
Permisos de gestión de identidades y accesos necesarios
Para usar Packer con Cloud Build, concede el rol Administrador de instancias de Compute Engine (
roles/compute.instanceAdmin.v1
) a tu cuenta de servicio de compilación.Para almacenar imágenes compiladas en Artifact Registry, concede el rol Escritor de Artifact Registry (
roles/artifactregistry.writer
) a tu cuenta de servicio de compilación.
Crear una imagen de compilación de Packer
Cloud Build proporciona una imagen de compilación de la comunidad de Packer que puedes usar para invocar comandos packer
en Cloud Build.
Antes de usar este compilador en un archivo de configuración de Cloud Build, debes compilar la imagen y enviarla a Artifact Registry:
Clona el repositorio cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Ve a la imagen de compilación de Packer:
cd cloud-builders-community/packer
Envía el creador a tu proyecto:
gcloud builds submit .
Usar el compilador Packer
Asegúrate de tener el archivo packer.json junto con el código fuente.
En el directorio raíz de tu proyecto, crea un archivo de configuración de compilación llamado
cloudbuild.yaml
ocloudbuild.json
.En el archivo de configuración de compilación, añade un paso de compilación para invocar el 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" ] } ] }
Donde:
[PROJECT_ID]
es el ID de tu proyecto Google Cloud .[IMAGE_NAME]
es el nombre de la imagen de VM que estás creando.[IMAGE_FAMILY]
es la familia de imágenes de la imagen de VM.[IMAGE_ZONE]
es la zona de la imagen.
Inicia la compilación con el archivo de configuración de compilación:
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
Donde:
[CONFIG_FILE_PATH]
es la ruta al archivo de configuración de compilación.[SOURCE_DIRECTORY]
es la ruta o la URL del código fuente.[REGION]
es una de las regiones de compilación admitidas.
Si no especificas
[CONFIG_FILE_PATH]
y[SOURCE_DIRECTORY]
en el comandogcloud builds submit
, Cloud Build asume que el archivo de configuración y el código fuente se encuentran en el directorio de trabajo actual.
Una vez creadas las imágenes, puedes verlas en la página Imagen de Compute Engine de la Google Cloud consola.
Siguientes pasos
- Consulta cómo crear contenedores.
- Consulta cómo crear proyectos de
Go
. - Consulta cómo solucionar errores de compilación.