У меня есть проект Terraform, который я настраивал с использованием Параметры менеджера систем AWS . Представьте себе проект Terraform со следующим variables.tf
:
variable "stack_name" {
type = "string"
default = "stack"
}
variable "vpc_cidr_block" {
type = "string"
}
variable "subnet_config_public_subnets" {
type = "list"
}
variable "subnet_config_private_subnets" {
type = "list"
}
terraform.tfvars
может выглядеть так:
vpc_cidr_block = "10.1.0.0/16"
subnet_config_public_subnets = ["10.1.2.0/24", "10.1.4.0/24", "10.1.6.0/24"]
subnet_config_private_subnets = ["10.1.1.0/24", "10.1.3.0/24", "10.1.5.0/24"]
Вместо этого представьте, что variables.tf
содержит это вместо:
variable "stack_name" {
type = "string"
default = "stack"
}
data "aws_ssm_parameter" "vpc_cidr_block" {
name = "/terraform/${var.stack_name}/vpc_cidr_block"
}
data "aws_ssm_parameter" "subnet_config_public_subnets" {
name = "/terraform/${var.stack_name}/subnet_config_public_subnets"
}
data "aws_ssm_parameter" "subnet_config_private_subnets" {
name = "/terraform/${var.stack_name}/subnet_config_private_subnets"
}
locals {
vpc_cidr_block = "${data.aws_ssm_parameter.vpc_cidr_block.value}"
subnet_config_public_subnets = "${split(",", data.aws_ssm_parameter.subnet_config_public_subnets.value)}"
subnet_config_private_subnets = "${split(",", data.aws_ssm_parameter.subnet_config_private_subnets.value)}"
}
Теперь, пока у меня установлены параметры SSM с правильными именами, я могу использовать ${local.vpc_cidr_block}
вместо ${var.vpc_cidr_block}
везде в моем проекте.
Это работает отлично , пока я работаю с существующими ресурсами и существующим файлом состояния. То есть, если я создаю свои ресурсы, используя первые файлы переменных / tfvars, а затем переключаюсь на источник данных SSM. Но если я начинаю с нуля, используя версию SSM, я получаю ошибку value of 'count' cannot be computed
из ресурсов, которые зависят от ${length(local.subnet_config_private_subnets)}
и ${length(local.subnet_config_public_subnets)}
.
Я не могу понять, почему это происходит, особенно когда значения не вызывают проблем при работе refresh
, plan
или apply
с существующими ресурсами.
Помощь и / или предложения о том, как разобраться в этом, будут очень оценены.