AWS with Terraform:当每个VPC是一个单独的.tf时,如何映射VPC ID以进行对等?

时间:2017-07-18 00:21:24

标签: amazon-web-services amazon-vpc terraform

我正在使用Terraform部署中心辐射式VPC架构,其中传输/管理/基础架构VPC充当通信中心。

项目组织分为模块和模块。实时环境,实时环境被拆分,每个VPC都有自己的子目录。我想遇到的问题是在我想要创建VPC对等资源时动态检索VPC ID - 显然,如果我在平面main.tf中实例化我的所有模块,这不会成为问题。但是,这是我试图避免的事情。

使用Terraform可以解决这个问题吗?在我看来,我想到的任何解决方案都要求静态提供数据,将两个VPC映射到一起,但问题是VPC ID是在资源创建时分配的,而不是我将要知道的事情。时间

我是否必须压扁我的生活" .tf文件还是有其他方法吗?我的文件模式完全出错吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我们在“层”中创建环境,我们构建VPC和子网的基础网络层,然后构建共享基础架构层,然后构建应用层的所有应用程序片。现在每个层的terraform代码都存在于自己的文件夹中,并且有自己的状态文件。这使我们可以更新上层,而无需遍历整个terraform托管基础架构。

现在,上层经常需要来自较低层的值。在应用层创建ec2需要来自基础层的vpc和子网信息。我们通过data.terraform_remote_state执行此操作。我们对环境的所有状态文件都存在于具有可预测文件名的s3存储桶中。因此,在应用程序片中,我们会这样做:

data "terraform_remote_state" "base" {
    backend = "s3"
    config {
        bucket = "remote-state-bucket"
        key = "environment-staging/base-layer.tfstate"
        region = "some-region"
    }
}

然后我们可以抓住基础层定义为输出的属性,如下所示:

value = "${data.terraform_remote_state.base.some_output}"