Giving your servers fun pet names with Terraform

Published
Updated

You are probably aware that that Terraform have a random number module that works like this:

bash
resource "random_integer" "server-id" {
  min = 100
  max = 999
}

However, this isn’t very helpful as is, because it would regenerate new numbers after each Terraform run.

You can introduce a “keepers”-stanza that makes the random number dependent on the input, it works like this:

bash
resource "random_integer" "server-id" {
  min = 100
  max = 999

  keepers = {
    image = data.digitalocean_images.server-images.images.0.image
  }
}

So now Terraform will only change the number when data.digitalocean_images.server-images.images.0.image changes, very handy!

So what about those pet names then?!

The random2-module provides us with a random_pet-resource that works like this:

bash
resource "random_pet" "server-pet" {
  length = 2

  keepers = {
    image = data.digitalocean_images.server-images.images.0.image
  }
}

And it can be used like this:

bash
resource "digitalocean_droplet" "server" {
  name = "server-${random_pet.server-pet.id}${random_integer.server-id.result}"

Examples on some fun names I’ve had:

  • peaceful-fowl
  • modest-kite
  • open-scorpion
  • joint-dove
  • pet-dane
  • outgoing-elf
  • exciting-snail
  • ideal-griffon
  • resolved-finch
  • pumped-chipmunk
  • cuddly-elephant

Kudos

Don't move!