Terraform 嵌套块内的地形动态块不传递值

Terraform 嵌套块内的地形动态块不传递值,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我希望使用google_os_config_guest_Policys资源,但在将值传递到软件包存储库的嵌套代码块时遇到问题 子模块main.tf package_repositories { dynamic "apt" { for_each = var.apt content { archive_type = lookup(apt.value, "archive_type", "

我希望使用google_os_config_guest_Policys资源,但在将值传递到
软件包存储库的嵌套代码块
时遇到问题

子模块main.tf

package_repositories {
      dynamic "apt" {
        for_each = var.apt
        content {
          archive_type = lookup(apt.value, "archive_type", "abc")
          uri          = lookup(apt.value, "uri", "abc")
          distribution = lookup(apt.value, "distribution", null)
          components   = lookup(apt.value, "components", null)
          gpg_key      = lookup(apt.value, "gpg_key", null)
        }
      }
  }
变量.tf

variable "apt" {
  description = "Variable used for the APT block supported in the package_repositories variable. Pass in variables for apt_archive_type, apt_components, apt_distribution, apt_uri, apt_gpg_key."
  type        = any
  default     = []
}
terraform.tfvars

apt = [
  {
    archive_type = "DEB"
    uri          = "https://packages.cloud.google.com/apt"
    distribution = "cloud-sdk-stretch"
    components       = ["main"]
  }
]
每当我尝试从我的TFVAR中传入值时,我只会在我的
地形规划
步骤中传入一个空白的
包_存储库
地图

+ package_repositories { }
我已尝试删除动态块并静态定义
package\u存储库
的值,这些存储库没有任何问题

package_repositories {
    apt {
      archive_type = "DEB"
      uri          = "https://packages.cloud.google.com/apt"
      distribution = "cloud-sdk-stretch"
      components       = ["main"]
  }
}

如果我尝试重新编写代码以使用动态
apt
块,它将尝试传入
null
值。语法是否有问题,或者这是因为动态块不工作的beta资源吗?

我尝试运行它,得到了所需的输出

     + package_repositories {
          + apt {
              + archive_type = "DEB"
              + components   = [
                  + "main",
                ]
              + distribution = "cloud-sdk-stretch"
              + uri          = "https://packages.cloud.google.com/apt"
            }
        }

请确认您使用的是
terraform.tfvars
或任何其他tfvars文件。如果是其他文件,您是否正在使用-var文件传递到您的地形平面图?

不确定这是否会改变任何内容,但您是否尝试添加
terraform.tfvars
文件中添加地图每个元素的结尾?@LazyEval在地图的每个元素后面加一个逗号是不走运的。是的,只是使用一个terraform.tfvars文件,terraform应该注意到这一点,因为我的.tfvars文件中有其他正确使用的值。只是为了确保您使用了动态apt块并像我一样从TFVAR中传入了值?只有当我将这些值硬编码到子模块中时,我才看到您的输出。是的,我使用的代码感谢您对疑难解答的帮助。我上面的代码被用作子模块,我在父模块中使用secondary main.tf引用
source=./modules/os config
,但忘记将
apt=var.apt
放在secondary main.tf中,因此它从不引入tfvars值。