#terraform #terraform-provider-aws #amazon-aurora #terraform0.12 #terraform-modules
#terraform #terraform-provider-aws #amazon-aurora #terraform0.12 #terraform-модули
Вопрос:
Подробная ошибка:
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
}
Переменная.файл 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
}
Указывает на примечание:
- Я использую terraform 0.14
- Когда я выполняю проверку terraform, я получаю «Успех! Конфигурация действительна «.
- Однако, когда я выполняю план терраформирования, я получаю указанную выше ошибку
Ответ №1:
terraform validate
проверяет только, является ли конфигурация
синтаксически допустимый и внутренне согласованный, независимо от любых предоставленных переменных или существующего состояния. Таким образом, это в первую очередь полезно для общей проверки повторно используемых модулей, включая правильность имен атрибутов и типов значений.
То есть в вашем случае код выглядит хорошо, ресурсы правильно взаимодействуют друг с другом, типы правильные и т.д. Но фактические значения неверны, в частности var.identifier
, не соответствует ожидаемому шаблону, но validate
просто не проверяет это.
Решение: исправьте свой var.identifier
шаблон так, чтобы он соответствовал aws_rds_cluster
требованиям к нему cluster_identifier
, а именно "mysql_aurora_cluster"
должен быть "mysql-aurora-cluster"
Комментарии:
1. Спасибо, это сработало. Просто измените идентификатор переменной в модуле «mysql_aurora_cluster» с «mysql_aurora_cluster» на «mysql-aurora-cluster». Подчеркивание не допускается.