首页 > 解决方案 > terraform中的depends_on可以设置为文件路径吗?

问题描述

我正在尝试分解我的main.tf文件。因此,我通过 terraform 设置了 aws config,创建了配置记录器并将传递通道设置为在同一 main.tf 文件中创建的 s3 存储桶。现在对于 AWS 配置规则,我创建了一个单独的文件,即config-rule.tf。众所周知,我们创建的每个 aws_config_config_rule 都有一个depends_on子句,我们在其中调用依赖资源,在本例中为aws_config_configuration_recorder。所以我的问题是我可以将depends_on子句插入到类似的内容:

    resource "aws_config_config_rule" "s3_bucket_server_side_encryption_enabled" {
    name = "s3_bucket_server_side_encryption_enabled"

    source {
    owner             = "AWS"
    source_identifier = "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"
    }

    depends_on = ["${file("aws-config-setup.tf")}"]
    }

考虑到我将我的 aws 配置设置从我的 main.tf 文件移动到一个名为aws-config-setup.tf的新文件中。

标签: amazon-web-servicesterraformterraform-provider-awsiaasaws-config

解决方案


如果我正确阅读了您的问题,则假设您没有将代码移动到其自己的模块(单独的目录)中,则无需对其进行任何更改即可。

当 terraform 在特定目录中执行时,它会考虑所有文件,基本上将它们全部视为一个 terraform 文件。

所以,一般来说,如果你有一个main.tf看起来像下面这样的

resource "some_resource" "resource_1" {
  # ...
}

resource "some_resource" "resource_2" {
  # ...

  depends_on = [some_resource.resource_1]
}

并且您决定将它们拆分为以下文件

文件1.tf

resource "some_resource" "resource_1" {
  # ...
}

文件2.tf

resource "some_resource" "resource_2" {
  # ...

  depends_on = [some_resource.resource_1]
}

如果terraform在同一目录中运行,它将评估与main.tf多文件场景完全相同的场景。


推荐阅读