Skip to content

Latest commit

 

History

History

do-packer-terraform

Deploying to DigitalOcean Using Packer & Terraform

Prerequisites

  • Packer
  • Terraform (version 0.9+)
  • Environment variable DIGITALOCEAN_API_TOKEN exposing a DigitalOcean API token

Optional prerequisites

  • Graphviz (only needed for visualizing the terraform plan)

Run

Create the image:

$ TBD

Deploy the terraform plan:

$ TBD

Or do altogether:

$ sh go.sh

Destroy the deployed plan (& cleanup):

$ sh destroy.sh

Screenshots

Packer running

Packer running

Notes:

packer command:

$ packer build -machine-readable packer-ubuntu-docker.json | tee packer-ubuntu-docker.log

Create keygen:

# -f - filename
# -N - passphrase
# -q - quiet mode
$ ssh-keygen -t rsa -f ./do-packer-terraform -N '' 

Terraform:

Enable Logging

$ export TF_LOG=1

Plan

Output the plan:

$ terraform graph

Visualize the plan:

$ terraform graph | dot -Tpng > graph.png
$ terraform plan -target digitalocean_droplet.swarm-manager -target digitalocean_droplet.swarm-worker

Apply the plan

$ terraform apply -target digitalocean_droplet.swarm-manager -target digitalocean_droplet.swarm-worker
$ terraform apply \
  -target digitalocean_droplet.swarm-manager \
  -var swarm_init=true \
  -var swarm_managers=1

Destroy

$ terraform destroy -force

Todos

  • Make the number of mangers & workers fully dynamic in all scripts & outputs
  • Store certs in a sub-folder
  • Store logs in a sub-folder
  • Store terraform logs in a sub-folder
  • Destroy snapshots created by packer
  • Rename the packer image

Reference links: