Shared Packer & Terraform Config
Published on
Updated 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.hcltoconfig - map
variables.pkr.hcltovariables.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.tfvarstoconfig - map
variables.tftovariables.hcl
As before, we can do this with symbolic links
ln -s config terraform.tfvars
ln -s variables.hcl variables.tf