Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 地形变量获取“;“缓存”;在执行地形图时_Terraform - Fatal编程技术网

Terraform 地形变量获取“;“缓存”;在执行地形图时

Terraform 地形变量获取“;“缓存”;在执行地形图时,terraform,Terraform,我有以下问题。假设我有这样的设置: Main.tf resource "aws_security_group" "vpc_security_group" { name = var.security_group_name ... } variable "security_group_name" { type = string } 变量。tf resource "aws_security_grou

我有以下问题。假设我有这样的设置:

Main.tf

resource "aws_security_group" "vpc_security_group" {
  name        = var.security_group_name
  ...
}
variable "security_group_name" {
    type = string
}
变量。tf

resource "aws_security_group" "vpc_security_group" {
  name        = var.security_group_name
  ...
}
variable "security_group_name" {
    type = string
}
我的变量文件.tfvars

security_group_name = "foo"
我有一个指向AWS S3存储桶的后端

我不久前应用了它,它生成了一个tfplan文件和
.tfstate
文件。现在,我想更改安全组的名称(以及其他内容),使我的
.tfvars
文件如下所示

security_group_name = "bar"
如果我执行以下操作:

$ terraform init
$ terraform plan -var-file="my_var_file.tfvars" -out "tfplan.out"
我注意到该计划包括创建一个名为“foo”而不是“bar”的安全组,好像它没有注意var文件中的更新值:

Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
aws_security_group.vpc_security_group: Refreshing state... [id=foo:terraform-20201014191031939100000001]
是否需要在
plan
命令中包含某些内容,以使其忽略以前的计划


谢谢你

你能发布
地形图
的输出吗?你不需要包含任何内容来制定
计划
忽略以前的计划,因此我想确认输出实际上是说它将再次使用
foo
创建sg。@theonlyrao我用该信息更新了帖子我猜你没有正确地在资源之间传递该变量。从你发布的内容很难判断。在代码中仔细遵循变量,并确保按预期传递。如果这一切都是真的,我会在github上向AWS提供商提交一个bug。我几乎每周都会在地形上发现虫子。例如,这与您在这里看到的并没有什么不同,尽管显然是一个完全不同的提供商,etc@Heathcliff
terraform plan
的输出应该比您发布的更多。如果您粘贴的是所有输出,那么您连接到AWS帐户的能力存在一些问题。也许您需要打开VPN隧道或更新/刷新AWS凭据。您发布的输出只是terraform,表示它已在您的状态文件中找到旧的“foo”安全组,并在确定您所做的更改之前查询AWS以确定该安全组当前的情况。