Terraform: Fun with Random Resources
Yes! You can actually have some fun with Terraform!
I saw this in Kristin Laemmert’s video A Tour of Terraform 0.12 (transcript). She used the random_pet resource to generate random pet names.
The code is very simple and fun to play with. Here is my own version of her example:
variable "pet_count" { default = 5 }
variable "default_prefix" { default = "Whiskers" }
variable "zoo_enabled" { default = false }
variable "prefix_list" { default = ["Whiskers", "Spot", "Fluffy", "Rex", "Pistol", "Pookie"] }
resource "random_pet" "my_pet" {
count = var.pet_count
separator = " "
length = "3"
prefix = var.zoo_enabled ? element(var.prefix_list, count.index) : var.default_prefix
}
output "pet_out" {
value = random_pet.my_pet[*].id
}
The result looks something like this:
Outputs: pet_out = [ "Whiskers partially charming horse", "Whiskers wholly enough sculpin", "Whiskers remotely vast boxer", "Whiskers cheaply choice octopus", "Whiskers mistakenly immortal griffon", ]
There are a number of options to play with. For example if you set zoo_enabled to true. The prefix_list will be used:
pet_out = [ "Whiskers partially charming horse", "Spot generally certain toad", "Fluffy normally discrete sturgeon", "Rex yearly grand mallard", "Pistol totally legible bird", ]
There are various other random resources provided. They can generate IDs, integers, passwords, strings, and UUIDs.
resource "random_id" "my_id" {
count = 3
byte_length = 5
prefix = "Yowsa_"
}
output "id_out" {
value = random_id.my_id[*].b64
}
id_out = [ "Yowsa_sjJKWqI", "Yowsa_wW24YDs", "Yowsa_Bd_pWlk", ]
Another fun random resource is shuffle. It shuffles a given list of items:
variable "strings" { default = ["a","b","c","d"]}
resource "random_shuffle" "my_shuffle" {
input = var.strings
result_count = length(var.strings)
}
output "shuffle_out" {
value = random_shuffle.my_shuffle.result
}
shuffle_out = [ "c", "a", "b", "d", ]
Read more about these resources in the official Terraform documentation.