104 lines
4.2 KiB
Markdown
104 lines
4.2 KiB
Markdown
---
|
|
layout: docs
|
|
sidebar_current: docs-commands-push
|
|
page_title: packer push - Commands
|
|
description: |-
|
|
The `packer push` command uploads a template and other required files to the
|
|
Atlas build service, which will run your packer build for you.
|
|
---
|
|
|
|
# `push` Command
|
|
|
|
The `packer push` command uploads a template and other required files to the
|
|
Atlas service, which will run your packer build for you. [Learn more about
|
|
Packer in Atlas.](https://atlas.hashicorp.com/help/packer/features)
|
|
|
|
Running builds remotely makes it easier to iterate on packer builds that are not
|
|
supported on your operating system, for example, building docker or QEMU while
|
|
developing on Mac or Windows. Also, the hard work of building VMs is offloaded
|
|
to dedicated servers with more CPU, memory, and network resources.
|
|
|
|
When you use push to run a build in Atlas, you may also want to store your build
|
|
artifacts in Atlas. In order to do that you will also need to configure the
|
|
[Atlas post-processor](/docs/post-processors/atlas.html). This is optional, and
|
|
both the post-processor and push commands can be used independently.
|
|
|
|
!> The push command uploads your template and other files, like provisioning
|
|
scripts, to Atlas. Take care not to upload files that you don't intend to, like
|
|
secrets or large binaries. **If you have secrets in your Packer template, you
|
|
should [move them into environment
|
|
variables](https://www.packer.io/docs/templates/user-variables.html).**
|
|
|
|
Most push behavior is [configured in your packer
|
|
template](/docs/templates/push.html). You can override or supplement your
|
|
configuration using the options below.
|
|
|
|
## Options
|
|
|
|
- `-token` - Your access token for the Atlas API. Login to Atlas to [generate an
|
|
Atlas Token](https://atlas.hashicorp.com/settings/tokens). The most convenient
|
|
way to configure your token is to set it to the `ATLAS_TOKEN` environment
|
|
variable, but you can also use `-token` on the command line.
|
|
|
|
- `-name` - The name of the build in the service. This typically looks like
|
|
`hashicorp/precise64`, which follows the form `<username>/<buildname>`. This
|
|
must be specified here or in your template.
|
|
|
|
- `-var` - Set a variable in your packer template. This option can be used
|
|
multiple times. This is useful for setting version numbers for your build.
|
|
|
|
- `-var-file` - Set template variables from a file.
|
|
|
|
## Environment Variables
|
|
|
|
- `ATLAS_CAFILE` (path) - This should be a path to an X.509 PEM-encoded public
|
|
key. If specified, this will be used to validate the certificate authority
|
|
that signed certificates used by an Atlas installation.
|
|
|
|
- `ATLAS_CAPATH` - This should be a path which contains an X.509 PEM-encoded
|
|
public key file. If specified, this will be used to validate the certificate
|
|
authority that signed certificates used by an Atlas installation.
|
|
|
|
## Examples
|
|
|
|
Push a Packer template:
|
|
|
|
```shell
|
|
$ packer push template.json
|
|
```
|
|
|
|
Push a Packer template with a custom token:
|
|
|
|
```shell
|
|
$ packer push -token ABCD1234 template.json
|
|
```
|
|
|
|
## Limits
|
|
|
|
`push` is limited to 5gb upload when pushing to Atlas. To be clear, packer *can*
|
|
build artifacts larger than 5gb, and Atlas *can* store artifacts larger than
|
|
5gb. However, the initial payload you push to *start* the build cannot exceed
|
|
5gb. If your boot ISO is larger than 5gb (for example if you are building OSX
|
|
images), you will need to put your boot ISO in an external web service and
|
|
download it during the packer run.
|
|
|
|
## Building Private `.iso` and `.dmg` Files
|
|
|
|
If you want to build a private `.iso` file you can upload the `.iso` to a secure
|
|
file hosting service like [Amazon
|
|
S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html),
|
|
[Google Cloud
|
|
Storage](https://cloud.google.com/storage/docs/gsutil/commands/signurl), or
|
|
[Azure File
|
|
Service](https://msdn.microsoft.com/en-us/library/azure/dn194274.aspx) and
|
|
download it at build time using a signed URL. You should convert `.dmg` files to
|
|
`.iso` and follow a similar procedure.
|
|
|
|
Once you have added [variables in your packer
|
|
template](/docs/templates/user-variables.html) you can specify credentials or
|
|
signed URLs using Atlas environment variables, or via the `-var` flag when you
|
|
run `push`.
|
|
|
|
![Configure your signed URL in the Atlas build variables
|
|
menu](/assets/images/packer-signed-urls.png)
|