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.hcl
toconfig
- map
variables.pkr.hcl
tovariables.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
toconfig
- map
variables.tf
tovariables.hcl
As before, we can do this with symbolic links
ln -s config terraform.tfvars
ln -s variables.hcl variables.tf