I’ve been working with Terraform recently for deploying the required architecture for a data pipeline in Google Cloud Platform (GCP). It’s my first project with Terraform and I decided to dive into its random_something resources, because I couldn’t have duplicate resource names. Here are some findings.
Randomize a resource name with Terraform random_string
Randomizing a resource’s name or ID is super easy with Terraform. You can use the random_string resource, and use it as a suffix or a prefix. In the following example, I’ve created a random string of three digits, and used it as the suffic of a GCP Cloud SQL database.
resource "random_string" "random_suffix" { length = 3 special = false upper = false } resource "google_sql_database_instance" "my_database" { name = "my-database-${random_string.random_suffix.result}" database_version = "POSTGRES_13" ...
However, this could lead to issues along the way. Whenever you’re rerunning the apply command, a new suffix will be generated, and your new resource name won’t match the one from the previous state. Consequently, Terraform will try to apply the new name to the resource — which isn’t even always possible.
That’s why you should set the keeper argument in your Terraform schema. The keeper argument behaves like a random seed. You could set it to a specific value, so that it only changes once that specific value changes. Another approach is to link the existence of your random_string to the ID of another resource. When the other resource is created again, so will the random_string. Even more interesting: you can use multiple values in the keeper argument!
In this example, I set the IP address of a GCP compute instance as the random seed.
resource "random_string" "random_suffix" { length = 3 special = false upper = false keepers = { instance_ip = "${google_compute_address.my_instance.address}" } } resource "google_sql_database_instance" "my_database" { name = "my-database-${random_string.random_suffix.result}" database_version = "POSTGRES_13" ...
The resulting name of my_database? my-database-ht5. Exciting, right? 🤷♀️
Randomize a resource name with Terraform random_pet
Terraform has quite a lot of random providers to create random strings. The random_id resource has quite a lot in common with random_string, but is focussed on minimizing collision (receiving the same ID twice or more).
Without doubt, the most interesting random provider is random_pet, which can be used to generate a random pet, with some adjectives — how many depends on the length argument.
resource "random_pet" "pet" { keepers = { some_id = "100" } length = 10 }
For demonstration purpose only, I set the length argument to 10, which gave me the following random pet name: “tightly-generally-moderately-mostly-usually-arguably-ultimately-badly-willing-lizard”. Extremely useful!
Точно важные события индустрии.
Абсолютно все мероприятия известнейших подуимов.
Модные дома, торговые марки, высокая мода.
Свежее место для трендовых людей.
https://femalemoda.ru/
Очень трендовые новости моды.
Все события мировых подуимов.
Модные дома, торговые марки, haute couture.
Новое место для стильныех людей.
https://breakmoda.ru/
Style, luxe, travel
Good style startpage for hypebeasts and stylish people.
Industry news, events. Last collections, collaborations, drops.
https://dubai.luxepodium.com/
Полностью актуальные новости подиума.
Абсолютно все эвенты мировых подуимов.
Модные дома, бренды, высокая мода.
Лучшее место для трендовых хайпбистов.
https://richlifestyle.ru/
Абсолютно все свежие события часового искусства – актуальные новинки именитых часовых домов.
Точно все модели хронографов от дешевых до ультра люксовых.
https://podium24.ru/
Все свежие события мира часов – новые модели именитых часовых компаний.
Все варианты часов от недорогих до ультра роскошных.
https://podium24.ru/
Наиболее стильные события индустрии.
Исчерпывающие мероприятия лучших подуимов.
Модные дома, торговые марки, гедонизм.
Свежее место для трендовых людей.
https://balenciager.ru/
Очень свежие новинки мира fashion.
Важные эвенты мировых подуимов.
Модные дома, бренды, haute couture.
Интересное место для модных людей.
https://rfsneakers.ru
Полностью свежие новинки мира fashion.
Актуальные новости мировых подуимов.
Модные дома, лейблы, гедонизм.
Приятное место для модных людей.
https://whitesneaker.ru/
Очень свежие события модного мира.
Все эвенты известнейших подуимов.
Модные дома, торговые марки, высокая мода.
Интересное место для стильныех хайпбистов.
https://rfsneakers.ru
Абсолютно стильные новинки мира fashion.
Исчерпывающие события мировых подуимов.
Модные дома, лейблы, высокая мода.
Свежее место для модных людей.
https://worldsfashion.ru/