--- description: | The Atlas post-processor for Packer receives an artifact from a Packer build and uploads it to Atlas. Atlas hosts and serves artifacts, allowing you to version and distribute them in a simple way. layout: docs page_title: 'Atlas Post-Processor' ... # Atlas Post-Processor Type: `atlas` The Atlas post-processor for Packer receives an artifact from a Packer build and uploads it to Atlas. [Atlas](https://atlas.hashicorp.com) hosts and serves artifacts, allowing you to version and distribute them in a simple way. ## Workflow To take full advantage of Packer and Atlas, it's important to understand the workflow for creating artifacts with Packer and storing them in Atlas using this post-processor. The goal of the Atlas post-processor is to streamline the distribution of public or private artifacts by hosting them in a central location in Atlas. Here is an example workflow: 1. Packer builds an AMI with the [Amazon AMI builder](/docs/builders/amazon.html) 2. The `atlas` post-processor takes the resulting AMI and uploads it to Atlas. The `atlas` post-processor is configured with the name of the AMI, for example `hashicorp/foobar`, to create the artifact in Atlas or update the version if the artifact already exists 3. The new version is ready and available to be used in deployments with a tool like [Terraform](https://terraform.io) ## Configuration The configuration allows you to specify and access the artifact in Atlas. ### Required: - `token` (string) - Your access token for the Atlas API. This can be generated on your [tokens page](https://atlas.hashicorp.com/settings/tokens). Alternatively you can export your Atlas token as an environmental variable and remove it from the configuration. - `artifact` (string) - The shorthand tag for your artifact that maps to Atlas, i.e `hashicorp/foobar` for `atlas.hashicorp.com/hashicorp/foobar`. You must have access to the organization, hashicorp in this example, in order to add an artifact to the organization in Atlas. - `artifact_type` (string) - For uploading AMIs to Atlas, `artifact_type` will always be `amazon.ami`. This field must be defined because Atlas can host other artifact types, such as Vagrant boxes. -> **Note:** If you want to upload Vagrant boxes to Atlas, use the [Atlas post-processor](/docs/post-processors/atlas.html). ### Optional: - `atlas_url` (string) - Override the base URL for Atlas. This is useful if you're using Atlas Enterprise in your own network. Defaults to `https://atlas.hashicorp.com/api/v1`. - `metadata` (map) - Send metadata about the artifact. If the artifact type is "vagrant.box", you must specify a "provider" metadata about what provider to use. ### Example Configuration ``` {.javascript} { "variables": { "aws_access_key": "ACCESS_KEY_HERE", "aws_secret_key": "SECRET_KEY_HERE", "atlas_token": "ATLAS_TOKEN_HERE" }, "builders": [{ "type": "amazon-ebs", "access_key": "{{user `aws_access_key`}}", "secret_key": "{{user `aws_secret_key`}}", "region": "us-east-1", "source_ami": "ami-de0d9eb7", "instance_type": "t1.micro", "ssh_username": "ubuntu", "ami_name": "atlas-example {{timestamp}}" }], "provisioners": [ { "type": "shell", "inline": [ "sleep 30", "sudo apt-get update", "sudo apt-get install apache2 -y" ] }], "post-processors": [ { "type": "atlas", "token": "{{user `atlas_token`}}", "artifact": "hashicorp/foobar", "artifact_type": "amazon.ami", "metadata": { "created_at": "{{timestamp}}" } } ] } ```