존재하는 리소스를 Terraform으로 가져오기
리소스 주소(Resource Address)
리소스 주소(<resourceAddress>)는 모듈 이름, 리소스 타입, 리소스 이름 으로 구성됩니다. count나 for_each 등을 써서 생성한 모듈이나 리소스는 [<index>]나 ["<key>"]를 사용할 수 있습니다.
[<modulePath>.[<modulePath>.]]<resourceSpec>
<modulePath>module.<moduleName>module.<moduleName>[<index>]module.<moduleName>["<key>"]
<resourceSpec><resourceType>.<resourceName><resourceType>.<resourceName>[<index>]<resourceType>.<resourceName>["<key>"]
리소스 ID(Resource ID)
<resourceID>- 리소스를 특정지을 수 있는 값입니다.
- https://registry.terraform.io/providers/hashicorp 문서에서 각 리소스 설명에
import시 사용할 수 있는id를 확인할 수 있습니다.
terraform import 커맨드로 가져오기
terraform import <resourceAddress> <resourceID>
import 블록으로 가져오기
import {
to = <resourceSpec>
id = "<resourceID>"
}
resource "<resourceType>" "<resourceName>" {
# 가져올 리소스의 설정을 적습니다.
}
정보
리소스 설정을 빠짐없이 가져오는 것이 어려울 수 있습니다. import 블록만 선언한 후 -generate-config-out=<file> 옵션을 사용하여 plan을 실행하면 가져올 리소스 설정을 자동으로 생성할 수 있습니다. 아직 실험적인 기능이므로, 터미널에 출력된 내용과 생성된 파일을 꼼꼼히 확인해야 합니다.
terraform plan -generate-config-out=generated.tf
리소스 선언 후 terraform plan 명령으로 확인한 후, terraform apply를 하면 리소스가 상태 파일에 추가됩니다.