Ошибка Terraform: в «cluster_identifier» rds_cluster разрешены только строчные буквенно-цифровые символы и дефисы.
Подробная ошибка:
Error: only lowercase alphanumeric characters and hyphens allowed in "cluster_identifier"
on ../rds_cluster/main.tf line 6, in resource "aws_rds_cluster" "mysql-cluster":
6: cluster_identifier = var.identifier
Я получаю указанную выше ошибку при создании rds_cluster из terraform. Мой файл main.tf имеет следующий код:
provider "aws"{
region = var.region
}
resource "aws_rds_cluster" "mysql-cluster" {
cluster_identifier = var.identifier
availability_zones = var.azs
database_name = var.db_name
master_username = var.username
master_password = var.password
}
Файл variable.tf:
variable "region"{
default = "us-east-1"
}
variable "identifier" {
default = "aurora-cluster"
}
variable "db_name" {
default = "mydb"
}
variable "username" {}
variable "password" {}
variable "azs" {}
И файл модуля, который вызывает этот "rds_cluster":
provider "aws"{
region = "us-east-1"
}
data "aws_availability_zones" "azs" {
}
data "aws_secretsmanager_secret_version" "creds" {
secret_id = "db-creds"
}
module "mysql_aurora_instances" {
source = "../rds_instance/"
my_count = 2
identifier = "aurora-cluster"
cluster_identifier = "mysql_aurora_cluster"
instance_class = "db.t2.micro"
engine = "aurora-mysql"
engine_version = "5.7"
}
module "mysql_aurora_cluster" {
source = "../rds_cluster/"
identifier = "mysql_aurora_cluster"
azs = data.aws_availability_zones.azs.names
db_name = "my_db"
username = "demo"
password = data.aws_secretsmanager_secret_version.creds.secret_id
}
Обратите внимание:
- Я использую терраформ 0.14
- Когда я выполняю проверку terraform, я получаю сообщение «Успех! Конфигурация действительна».
- Однако, когда я выполняю план терраформирования, я получаю указанную выше ошибку.
1 ответ
terraform validate
только проверяет, является ли конфигурация
синтаксически действительный и внутренне непротиворечивый, независимо от любых предоставленных переменных или существующего состояния. Таким образом, он в первую очередь полезен для общей проверки повторно используемых модулей, включая правильность имен атрибутов и типов значений.
То есть в вашем случае код выглядит хорошо, ресурсы правильно взаимодействуют друг с другом, типы правильные и т. д. Но фактические значения неверны, в частности, не соответствует ожидаемому шаблону, но
validate
просто так не проверяет.
Решение: исправить
var.identifier
чтобы соответствовать шаблону
aws_rds_cluster
требования к своей
cluster_identifier
, а именно
"mysql_aurora_cluster"
должно быть
"mysql-aurora-cluster"