import#

有时候我们想把一个已经存在的resource,但并没有被terraform管理的,纳入到terraform中来管理,这时候就需要用到import命令。

文档 https://www.terraform.io/cli/commands/import

import命令的格式如下:

terraform import [options] ADDR ID

其中ADDR是resource的地址,ID是resource的ID,比如一个aws_instance的ID就是instance的ID,一个aws_security_group的ID就是security group的ID。

Demo#

我们在aws上创建一个VPC,然后用terraform import把它纳入到terraform的管理中来, 通过aws的web console可以看到这个VPC的ID,比如

vpc-0af5cb081c28cf2e3

新建一个文件夹,比如 import_demo,然后在这个文件夹下新建一个 main.tf 文件,内容如下:

provider "aws" {
  region = "us-east-1"
}

# create vpc
resource "aws_vpc" "my-vpc" {

  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  tags                 = {
    Name = "my-vpc"
  }
}
$ terraform import aws_vpc.my-vpc vpc-0af5cb081c28cf2e3
aws_vpc.my-vpc: Importing from ID "vpc-0af5cb081c28cf2e3"...
aws_vpc.my-vpc: Import prepared!
  Prepared aws_vpc for import
aws_vpc.my-vpc: Refreshing state... [id=vpc-0af5cb081c28cf2e3]

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.