본문 바로가기
INFRA/DevOps

Terraform Import

by BTC_보담씨 2023. 10. 27.

베하~~

안녕하세요 항상 웃음이 나는 픠식팀 입니다.

terraform import 명령어는 기존의 인프라스트럭처의 특정 리소스를 Terraform 상태를 가져오는데 사용한다.

1. import 블럭 방법

provider "aws" {
  region  = "ap-northeast-2"
  profile = "mfa"
}

terraform {
  required_version = ">= 1.0.0, < 2.0.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

import {
  to = aws_s3_bucket.test_bucket
  id = "import-bucket-s3"
}

resource "aws_s3_bucket" "test_bucket" {
  bucket = "import-bucket-s3"
/*   force_destroy = true
  tags = {
    Environment = "test"
  } */
}
terraform plan 
terraform apply

import를 통해서 가져오는 리소스에 대한 상태를 출력하고 apply 하게 되면 상태 파일에 가져온 리소스를 반영한다.

앞에 방법보다 더 편하고 간편하게 사용할 수 있다.

resource "aws_s3_bucket" "test_bucket" {
  bucket = "import-bucket-s3"
/*   force_destroy = true
  tags = {
    Environment = "test"
  } */
}

그리고 위에 처럼 해당 가져올 리소스를 직접 적지 않거나 잘 모를 수도 있다.

terraform plan -generate-config-out=generated.tf

이 명령어를 사용하게 되면 자동으로 generated.tf 파일에서 리소스 코드를 가져오게 된다.

2. Import 명령어 방법

1. Terraform 구성 작성:

먼저, 아래와 같이 main.tf 파일을 작성하여 AWS S3 버킷 리소스의 유형과 이름을 정의합니다.

provider "aws" {
  region  = "ap-northeast-2"
  #profile = "사용하는 profile"
}

terraform {
  required_version = ">= 1.0.0, < 2.0.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

resource "aws_s3_bucket" "test_bucket" {
# 이 구성은 예시를 위한 것이며 실제 구성에는 버킷 이름이 필요합니다.
    bucket = "import-bucket-s3"
  force_destroy = true
  tags = {
    Environment = "test"
  }
}

2. 리소스 가져오기:
그런 다음 terraform import 명령을 사용하여 기존 AWS S3 버킷을 Terraform 상태에 가져옵니다.

   terraform import aws_s3_bucket.example_bucket import-bucket-s3

3. 구성 확인 및 업데이트

가져온 리소스의 Terraform 구성을 terraform.tfstate 파일에서 확인하고 필요한 경우 업데이트합니다. 예를 들어, 버킷의 태그 또는 정책과 같은 추가 속성을 구성에 추가할 수 있습니다.

 

4. Terraform 계획 및 적용

terraform plan  terraform apply 명령을 사용하여 변경 사항을 검토하고 적용합니다.

변경사항을 추가하고 적용을 할 수 있다.

다른 리소스 유형에 대한 terraform import 명령어의 사용은 리소스 유형과 프로바이더에 따라 약간 다를 수 있습니다.

Registry 사이트에서 참고하여 사용하시면 됩니다.

Terraform Registry

'INFRA > DevOps' 카테고리의 다른 글

[K8S] Environment  (1) 2023.11.12
[K8S] SecurityContext  (1) 2023.10.28
[K8S] Resource  (0) 2023.10.16
[K8S] SideCar  (0) 2023.10.16
kind  (1) 2023.10.13

댓글