#terraform #terraform-provider-aws #terraform-provider-gcp
Вопрос:
У меня есть два файла с терраформами main.tf
и var.tfvars
:
main.tf:
provider "google" {
project = var.project_id
region = var.gcp_region
}
provider "aws" {
region = var.aws_region
alias = "aws"
}
варс.тфварс:
variable "gcp_region" {
type = string
default = "asia-southeast1"
}
variable "aws_region" {
type = string
default = "ap-southeast-2"
}
variable "project_id" {
type = string
default = "test-oidc-arosha"
}
когда я бегу terraform apply
, я получил ошибку ниже:
Error: Reference to undeclared input variable
│
│ on local.tf line 6, in locals:
│ 6: state_backet = "${local.component_name}-${local.part_name}-deployment-${var.aws_region}-${data.aws_caller_identity.current.account_id}"
│
│ An input variable with the name "aws_region" has not been declared. This variable can be declared
│ with a variable "aws_region" {} block.
╵
╷
│ Error: Reference to undeclared input variable
│
│ on main.tf line 2, in provider "google":
│ 2: project = var.project_id
│
│ An input variable with the name "project_id" has not been declared. This variable can be declared
│ with a variable "project_id" {} block.
╵
╷
│ Error: Reference to undeclared input variable
│
│ on main.tf line 3, in provider "google":
│ 3: region = var.gcp_region
│
│ An input variable with the name "gcp_region" has not been declared. This variable can be declared
│ with a variable "gcp_region" {} block.
Я не понимаю, почему я получил эту ошибку, даже если я уже указал значения по умолчанию для каждой переменной.
Моя версия терраформирования такова:
$ terraform --version
Terraform v1.0.0
on darwin_amd64
provider registry.terraform.io/hashicorp/aws v3.45.0
provider registry.terraform.io/hashicorp/google v3.72.0
Комментарии:
1. Вы проверили это обсуждение? hashicorp.com/t/… Что вам, вероятно, следует сделать, так это изменить расширение с
.tfvars
на.tf
, потому.tfvars
что оно используется для анализа фактических значений. Объявление переменных и их значений по умолчанию будет выполнено в вашемmain.tf
или вvar.tf
.tfvars
на самом деле это перезапись значений по умолчанию, если вы хотите, чтобы ваш код был настроен для каждой среды и т. Д
Ответ №1:
вам нужно добавить определение переменной в свой main.tf а затем используйте свою переменную в var.tf приблизительно
пример
variable "aws_region" {
type = string
default = "ap-southeast-2"
}
вар.тфварс
пример
aws_region = {
Name = "created by jatin/terraform",
instance_type="t2.micro"
}
Ответ №2:
Измените имя vars.tfvars
файла на variables.tf
, и он должен принять значение по умолчанию. .tfvars
файлы предназначены для ввода переменных, которые, в свою очередь, определены в variables.tf
файле (или любом .tf
файле на самом деле, не имеет значения, как вы его называете).