首页 > 解决方案 > 如何使用带有传入变量的 terraform 导入?

问题描述

我正在学习 terraform,并想使用该工具设置 AWS 基础设施。

我们有 3 个 AWS 环境、沙盒、暂存和生产环境,并且拥有支持这些环境的现有基础设施。例如,我们为每个环境有 3 个独立的 VPC。

我想terraform import根据我尝试设置的环境来导入这些资源的状态。所以我本质上想这样做,虽然我知道这在语法上是不正确的,但你明白了。

$ terraform import aws_vpc.my_vpc -var 'environment=sandbox'

因此,我有这样的模块设置

vpc/main.tf
-----------
provider "aws" {
  region = "us-east-1"
}
resource "aws_vpc" "my_vpc" {
  cidr_block = ""
}

vpc/variables.tf
----------------
variable "environment" {
  type map = map(string)
  default {
    sandbox    = "vpc-1234"
    staging    = "vpc-2345"
    production = "vpc-3456"
  }
}

所以这意味着我基本上想做

$ terraform import aws_vpc.my_vpc vpc-1234

我怎样才能做到这一点?

标签: terraformterraform-provider-aws

解决方案


我有同样的问题,并发现订单很重要。此命令有效:

$ terraform import -var 'environment=sandbox' aws_vpc.my_vpc vpc-1234

推荐阅读