我刚刚运行了 Terraform 升级。我的代码已更新,但现在显示一些错误。第一个是:
variable "s3_bucket_name" {
type = list(string)
default = [
"some_bucket_name",
"other_bucket_name",
...
]
}
不喜欢
list(string)
。我回到第一个方块并重新编写了整个Getting Started教程。它说我可以显式声明type = list
,也可以通过省略类型并仅使用[方括号]来隐式声明它。
我在这里看到:IP地址变量的未知令牌IDENT列表错误我可以使用
"list"
(引号)但我找不到关于list(string)
的任何信息。
所以我注释掉了我的
list(string)
,这将错误移到了下一部分。
provider "aws" {
region = var.aws_region
}
教程表明这是创建区域标签的正确方法(实际上教程的一部分具有该确切代码)。
任何人都可以帮助我理解
Unknown token IDENT
的含义,因为它贯穿于我的代码中,但它并不能帮助我理解我应该如何修复它。
当您执行
terraform 0.12upgrade
并且您的代码语法已经在 Terraform 0.12x 中或者显然是混合语法版本时出现此错误 <= 0.11x and 0.12x. Also the Unknown token IDENT error can happen when your installed version on your local machine (or in the remote CI/CD server) is 0.11x and your code syntax is on 0.12x and you run a terraform command such as terraform init
variable "var1" {
type = "list"
...
}
这是一个 Terraform 0.11x syntax 替代方案 12x 是 type = list(string)
为了重现你的错误,我有一个 Terraform 代码 0.12x,我执行了
terraform 0.12upgrade
然后 unknown token: IDENT
出现了!
总而言之,我认为您的第一个代码迭代已经使用了正确的语法,因此无需升级。 为避免此类错误,您可以在代码中添加一个新的
version.tf
文件,内容如下:
terraform {
required_version = ">= 0.12"
}
升级技巧:
Terraform 版本:
0.11.14
我也必须修复代码。
改变了
data.terraform_remote_state.vpc.main_vpc_id
到
"${data.terraform_remote_state.vpc.main_vpc_id}"