我们可以".terraform/modules"更改子模块中的某些内容吗?



当我运行terraform plan时,我得到了以下错误:

Error: Reference to undeclared input variable
│ 
│   on .terraform/modules/ec2-datapipeline/main.tf line 5, in resource "aws_instance" "this":
│    5:   count = "${var.count}"
│ 
│ An input variable with the name "count" has not been declared. This
│ variable can be declared with a variable "count" {} block.
╵
╷
│ Error: Incorrect attribute value type
│ 
│   on .terraform/modules/ec2-datapipeline/main.tf line 13, in resource "aws_instance" "this":
│   13:   vpc_security_group_ids = ["${var.vpc_security_group_ids}"]
│     ├────────────────
│     │ var.vpc_security_group_ids is a list of string, known only after apply
│ 
│ Inappropriate value for attribute "vpc_security_group_ids": element 0:
│ string required.
╵
╷
│ Error: Unsupported argument
│ 
│   on .terraform/modules/ec2-datapipeline/main.tf line 23, in resource "aws_instance" "this":
│   23:   root_block_device      = "${var.root_block_device}"
│ 
│ An argument named "root_block_device" is not expected here. Did you mean to
│ define a block of type "root_block_device"?
╵
╷
│ Error: Unsupported argument
│ 
│   on .terraform/modules/ec2-datapipeline/main.tf line 24, in resource "aws_instance" "this":
│   24:   ebs_block_device       = "${var.ebs_block_device}"
│ 
│ An argument named "ebs_block_device" is not expected here. Did you mean to
│ define a block of type "ebs_block_device"?
╵
╷
│ Error: Unsupported argument
│ 
│   on .terraform/modules/ec2-datapipeline/main.tf line 25, in resource "aws_instance" "this":
│   25:   ephemeral_block_device = "${var.ephemeral_block_device}"
│ 
│ An argument named "ephemeral_block_device" is not expected here. Did you
│ mean to define a block of type "ephemeral_block_device"?
╵
╷
│ Error: Error in function call
│ 
│   on .terraform/modules/ec2-datapipeline/main.tf line 36, in resource "aws_instance" "this":
│   36:   tags = "${merge(var.tags, map("Name", format("%s-%d", var.name, count.index+1)))}"
│     ├────────────────
│     │ count.index is a number, known only after apply
│     │ var.name will be known only after apply
│ 
│ Call to function "map" failed: the "map" function was deprecated in
│ Terraform v0.12 and is no longer available; use tomap({ ... }) syntax to
│ write a literal map.

当我在.terraform/modules/main.tfvariables.tf文件中修复它们时,计划是成功的,当我从CLI触发时,它通过了。但是,当我真正推送代码时当我从UI触发计划时它不起作用

所以,当我做terraform init --upgrade时。它恢复正常了,我可以看到同样的问题。

你能帮我解决这个问题吗?谢谢!

.terraform/modules/ec2-datapipeline/main.tf中的物质实际上是主要的。从名为"ec2- datap管线"的外部模块获取的Tf文件;在您自己的代码中引用(查找module "ec2-datapipeline")。

您必须修复"ec2- datap管线"的源代码中的错误,提交并标记它,然后在您自己的代码中更新源代码引用。

你的更改在重新初始化时消失的原因是,你通过了--upgrade开关,它告诉Terraform重新下载外部模块源,即使它们在.terraform/modules缓存中本地缓存。

相关内容

  • 没有找到相关文章

最新更新