Blog

Brandon Rozek

Photo of Brandon Rozek

Software Developer, Researcher, and Linux Enthusiast.

Shared Packer & Terraform Config

Published on

You might have noticed from my last two posts on Packer and Terraform that the configuration files are highly similar. In fact, we can trick them into sharing a configuration file!

Shared Configuration

First let’s create a file we’ll call config that contains all our assignments. Here is an example configuration:

base_system_image = "ubuntu-20-04-x64"
region = "nyc3"
size = "512mb"
domain = "example.com"
subdomain = "temp"

# Secrets
do_token = "DO-TOKEN-HERE"
key_name = "KEY-NAME-ON-DO"

Then we’ll create a file named variables.hcl that contains the type definitions

variable "do_token" {
  type = string
}

variable "base_system_image" {
  type = string
}

variable "domain" {
  type = string
}

variable "key_name" {
  type = string
}

variable "subdomain" {
  type = string
}

variable "region" {
  type = string
}

variable "size" {
  type = string
}

Packer

Now to trick Packer into reading the configuration files we need to:

  • map variables.auto.pkrvars.hcl to config
  • map variables.pkr.hcl to variables.hcl

We can do this with symbolic links

ln -s config variables.auto.pkrvars.hcl
ln -s variables.hcl variables.pkr.hcl

Terraform

To trick Terraform into reading the configuration files we need to:

  • map terraform.tfvars to config
  • map variables.tf to variables.hcl

As before, we can do this with symbolic links

ln -s config terraform.tfvars
ln -s variables.hcl variables.tf
Reply via Email

Have you published a response to this? :