В этой части (и последней части серии) мы рассмотрим, как генерировать случайное значение.
Это очень полезно, например, для создания уникальных имен для снапшотов. Вы увидите, что существует несколько определений, в зависимости от того, что вам нужно.
Random Id
resource "random_id" "rdm_id" {
byte_length = 8
}
Объявленный как это, он сгенерирует для вас идентификатор длиной 8 байт, который может быть получен в формате :
- base64 : random_id.rdm_id.id => MDc3NDA2OGE5YTNhMjc5MQ==
- десятичные цифры : random_id.rdm_id.dec => 537061447926687633
- шестнадцатеричные цифры : random_id.rdm_id.hex => 0774068a9a3a2791
Но если вы делаете это таким образом, random_id всегда будет одним и тем же!
Поэтому, чтобы быть уверенным, что значение изменится, когда что-то добавится, вы можете использовать параметр keepers.
С его помощью вы можете сказать: «Если параметры X и Y меняются, то и случайное значение должно измениться».
В данном примере случайная величина будет меняться каждый раз, когда будет меняться arn глобального кластера.
resource "random_id" "rdm_id" {
byte_length = 8
keepers = {
first = aws_rds_global_cluster.example.arn
}
}
А если вы хотите, чтобы это значение менялось при каждом выполнении скрипта, используйте метку времени :
resource "random_id" "rdm_id" {
byte_length = 8
keepers = {
first = timestamp()
}
}
Другие случайные возможности
Следуя той же схеме, Terraform позволяет вам генерировать случайные
- целое число
resource "random_integer" "priority" {
min = 1
max = 50000
}
- пароль
resource "random_password" "password" {
length = 16
special = true
override_special = "_%@"
}
- строка
resource "random_string" "random" {
length = 16
special = true
override_special = "/@£$"
}
- UUID
resource "random_uuid" "test" {
}
- Перемешанный подсписок
resource "random_shuffle" "az" {
input = ["us-west-1a", "us-west-1c", "us-west-1d", "us-west-1e"]
result_count = 2
}
Здесь вы получите подсписок входного списка, содержащий только 2 элемента.
Ссылки
- Terraform doc random_id : https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id
- Terraform doc random_integer : https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/integer
- Terraform doc random_password : https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password
- Terraform doc random_shuffle : https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/shuffle
- Terraform doc random_string : https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string
- Terraform doc random_uuid : https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/uuid
Надеюсь, это поможет вам и вам понравилась эта серия! 🍺
Ссылка на серию
- 1 — Начало : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-1-1ko7
- 2 — Определения : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-2-definitions-93p
- 3 — Простая база данных : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-3-simple-database-a9o
- 4 — База данных HA : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-4-ha-database-4kek
- 5 — База данных DR : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-5-dr-database-278b
- 6 — Создание из моментального снимка : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-6-create-from-snapshot-2mbf
- 7 — Динамическое определение бэкенда Terraform : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-7-dynamic-terraform-backend-definition-3aga
- 8 — Несколько экземпляров в нескольких регионах : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-8-multiple-instances-in-multiple-regions-210d
- 9 — Генерирование случайного значения : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-9-generate-a-random-value-5g8a