Crear imágenes de máquina virtual mediante Packer

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

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:

  1. Clona el repositorio cloud-builders-community:

    git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
    
  2. Ve a la imagen de compilación de Packer:

    cd cloud-builders-community/packer
    
  3. Envía el creador a tu proyecto:

    gcloud builds submit .
    

Usar el compilador Packer

  1. Asegúrate de tener el archivo packer.json junto con el código fuente.

  2. En el directorio raíz de tu proyecto, crea un archivo de configuración de compilación llamado cloudbuild.yaml o cloudbuild.json.

  3. 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.
  4. 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 comando gcloud 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