2013-06-18 19:51:46 -04:00
---
layout: "docs"
2014-08-21 20:41:35 -04:00
page_title: "DigitalOcean Builder"
2014-10-20 16:47:30 -04:00
description: |-
The `digitalocean` Packer builder is able to create new images for use with DigitalOcean. The builder takes a source image, runs any provisioning necessary on the image after launching it, then snapshots it into a reusable image. This reusable image can then be used as the foundation of new servers that are launched within DigitalOcean.
2013-06-18 19:51:46 -04:00
---
# DigitalOcean Builder
Type: `digitalocean`
2014-10-20 16:47:30 -04:00
The `digitalocean` Packer builder is able to create new images for use with
2013-06-18 19:51:46 -04:00
[DigitalOcean ](http://www.digitalocean.com ). The builder takes a source
image, runs any provisioning necessary on the image after launching it,
then snapshots it into a reusable image. This reusable image can then be
used as the foundation of new servers that are launched within DigitalOcean.
The builder does _not_ manage images. Once it creates an image, it is up to
you to use it or delete it.
## Configuration Reference
There are many configuration options available for the builder. They are
segmented below into two categories: required and optional parameters. Within
each category, the available configuration keys are alphabetized.
2015-06-10 17:16:40 -04:00
### Required:
2013-06-18 19:51:46 -04:00
2015-06-10 17:16:40 -04:00
* `api_token` (string) - The client TOKEN to use to access your account.
It can also be specified via environment variable `DIGITALOCEAN_API_TOKEN` , if set.
2014-09-15 07:43:10 -04:00
2014-04-29 23:33:31 -04:00
* `image` (string) - The name (or slug) of the base image to use. This is the
2015-06-10 21:56:03 -04:00
image that will be used to launch a new droplet and provision it.
2015-02-24 14:32:27 -05:00
See https://developers.digitalocean.com/documentation/v2/#list-all-images for details on how to get a list of the the accepted image names/slugs.
2014-04-29 23:33:31 -04:00
* `region` (string) - The name (or slug) of the region to launch the droplet in.
Consequently, this is the region where the snapshot will be available.
2015-02-24 14:32:27 -05:00
See https://developers.digitalocean.com/documentation/v2/#list-all-regions for the accepted region names/slugs.
2013-06-18 19:51:46 -04:00
2014-04-29 23:33:31 -04:00
* `size` (string) - The name (or slug) of the droplet size to use.
2015-02-24 14:32:27 -05:00
See https://developers.digitalocean.com/documentation/v2/#list-all-sizes for the accepted size names/slugs.
2013-06-18 19:51:46 -04:00
2015-06-10 21:56:03 -04:00
### Optional:
* `droplet_name` (string) - The name assigned to the droplet. DigitalOcean
sets the hostname of the machine to this value.
* `private_networking` (boolean) - Set to `true` to enable private networking
for the droplet being created. This defaults to `false` , or not enabled.
2013-06-18 19:51:46 -04:00
* `snapshot_name` (string) - The name of the resulting snapshot that will
2013-08-08 20:01:33 -04:00
appear in your account. This must be unique.
To help make this unique, use a function like `timestamp` (see
[configuration templates ](/docs/templates/configuration-templates.html ) for more info)
2013-06-18 19:51:46 -04:00
2014-05-04 13:47:40 -04:00
* `ssh_port` (integer) - The port that SSH will be available on. Defaults to port
2013-06-18 19:51:46 -04:00
22.
* `ssh_timeout` (string) - The time to wait for SSH to become available
before timing out. The format of this value is a duration such as "5s"
or "5m". The default SSH timeout is "1m".
* `ssh_username` (string) - The username to use in order to communicate
over SSH to the running droplet. Default is "root".
2013-06-23 06:57:05 -04:00
* `state_timeout` (string) - The time to wait, as a duration string,
2014-05-04 13:47:40 -04:00
for a droplet to enter a desired state (such as "active") before
timing out. The default state timeout is "6m".
2013-06-23 06:57:05 -04:00
2015-06-10 22:29:48 -04:00
* `user_data` (string) - User data to launch with the Droplet.
2013-06-18 19:51:46 -04:00
## Basic Example
Here is a basic example. It is completely valid as soon as you enter your
own access tokens:
2014-10-20 13:55:16 -04:00
```javascript
2013-06-18 19:51:46 -04:00
{
"type": "digitalocean",
2015-06-10 21:56:03 -04:00
"api_token": "YOUR API KEY",
"image": "ubuntu-12-04-x64",
"region": "nyc2",
"size": "512mb"
2013-06-18 19:51:46 -04:00
}
2014-10-20 13:55:16 -04:00
```