---
description: >
  The Google Compute Image Exporter post-processor exports an image from a
  Packer

  googlecompute builder run and uploads it to Google Cloud Storage. The exported

  images can be easily shared and uploaded to other Google Cloud Projects.
layout: docs
page_title: Google Compute Image Exporter - Post-Processors
sidebar_current: docs-post-processors-googlecompute-export
---

# Google Compute Image Exporter Post-Processor

Type: `googlecompute-export`

The Google Compute Image Exporter post-processor exports the resultant image
from a googlecompute build as a gzipped tarball to Google Cloud Storage (GCS).

The exporter uses the same Google Cloud Platform (GCP) project and
authentication credentials as the googlecompute build that produced the image.
A temporary VM is started in the GCP project using these credentials. The VM
mounts the built image as a disk then dumps, compresses, and tars the image.
The VM then uploads the tarball to the provided GCS `paths` using the same
credentials.

As such, the authentication credentials that built the image must have write
permissions to the GCS `paths`.

## Configuration

### Required

- `paths` (list of string) - The list of GCS paths, e.g.
  'gs://mybucket/path/to/file.tar.gz', where the image will be exported.

### Optional

- `account_file` (string) - The JSON file containing your account
  credentials. If specified, this take precedence over `googlecompute`
  builder authentication method.

- `disk_size` (number) - The size of the export instances disk, this disk
  is unused for the export but a larger size increase `pd-ssd` read speed.
  This defaults to `200`, which is 200GB.

- `disk_type` (string) - Type of disk used to back export instance, like
  `pd-ssd` or `pd-standard`. Defaults to `pd-ssd`.

- `keep_input_artifact` (boolean) - If `true`, do not delete the Google Compute
  Engine (GCE) image being exported. defaults to `false`.

- `machine_type` (string) - The export instance machine type. Defaults
  to `"n1-highcpu-4"`.

- `network` (string) - The Google Compute network id or URL to use for the
  export instance. Defaults to `"default"`. If the value is not a URL, it
  will be interpolated to
  `projects/((builder_project_id))/global/networks/((network))`. This value
  is not required if a `subnet` is specified.

- `subnetwork` (string) - The Google Compute subnetwork id or URL to use for
  the export instance. Only required if the `network` has been created with
  custom subnetting. Note, the region of the subnetwork must match the
  `zone` in which the VM is launched. If the value is not a URL,
  it will be interpolated to
  `projects/((builder_project_id))/regions/((region))/subnetworks/((subnetwork))`

- `zone` (string) - The zone in which to launch the export instance. Defaults
  to `googlecompute` builder zone. Example: `"us-central1-a"`

## Basic Example

The following example builds a GCE image in the project, `my-project`, with an
account whose keyfile is `account.json`. After the image build, a temporary VM
will be created to export the image as a gzipped tarball to
`gs://mybucket1/path/to/file1.tar.gz` and
`gs://mybucket2/path/to/file2.tar.gz`. `keep_input_artifact` is true, so the
GCE image won't be deleted after the export.

In order for this example to work, the account associated with `account.json`
must have write access to both `gs://mybucket1/path/to/file1.tar.gz` and
`gs://mybucket2/path/to/file2.tar.gz`.

```json
{
  "builders": [
    {
      "type": "googlecompute",
      "account_file": "account.json",
      "project_id": "my-project",
      "source_image": "debian-7-wheezy-v20150127",
      "zone": "us-central1-a"
    }
  ],
  "post-processors": [
    {
      "type": "googlecompute-export",
      "paths": [
        "gs://mybucket1/path/to/file1.tar.gz",
        "gs://mybucket2/path/to/file2.tar.gz"
      ],
      "keep_input_artifact": true
    }
  ]
}
```
