В трех разных средах я хочу иметь возможность динамически устанавливать переменные в зависимости от среды. В моем примере ниже допустим, что тип экземпляра отличается для dev и prod. Я не могу ссылаться на instance_type
в модуле, ЕСЛИ у меня нет vars.tf
файла вместе с моим terraform.tfvars
.
Я получаю следующую ошибку:
unknown variable referenced: 'instance_type'. define it with 'variable' blocks
Если это так, то разве этот файл не будет таким же файлом в modules/apollo/vars.tf
?
Я думал, что modules/apollo/vars.tf
определяет необходимые переменные, необходимые для модуля. Я не думал, что это необходимо на уровне "корня" под env-dev/services/apollo/
. Если есть «лучший» способ сделать это, я весь в ушах.
├── env-dev
│ └── services
│ └── apollo
│ ├── main.tf
│ ├── terraform.tfvars
│ └── vars.tf # Do i need this?
├── env-test
├── global
├── mgmt
└── modules
├── apollo
│ ├── main.tf
│ ├── user_data.tpl
│ └── vars.tf
└── defaults
└── main.tf
env-dev / services / apollo / terraform.tfvars
instance_type = "t2.medium"
env-prod / services / apollo / terraform.tfvars
instance_type = "t2.large"
модули / apollo / vars.tf
variable "instance_type" {
description = "EC2 Instance Type"
}
модули / apollo / main.tf
resource "aws_instance" "instance" {
...
instance_type = "${var.instance_type}"
...
}