본문 바로가기

리눅스

기존 AWS 설정을 Terraform으로 가져오는 일반적인 절차

반응형

기존 AWS 설정을 Terraform으로 가져오는 일반적인 절차

기존의 AWS 설정을 Terraform으로 가져오는 것은 AWS 리소스를 코드로 정의하는 것을 의미합니다. 이렇게 하면 이전에 수동으로 수행한 설정을 코드로 관리하고, 인프라스트럭처를 버전 관리하며, 재현 가능한 인프라를 유지할 수 있습니다.

1. 테라폼 환경 설정

먼저 테라폼 프로젝트 디렉토리를 생성하고 테라폼 설정 파일 (예: main.tf, variables.tf, terraform.tfvars)을 작성합니다.

2. Provider 설정

main.tf 파일에서 AWS 프로바이더를 설정하여 테라폼이 AWS와 상호 작용할 수 있도록 합니다. 아래는 AWS 프로바이더의 예시 설정입니다.

provider "aws" {
  region = "us-east-1"  # 원하는 리전으로 변경
}

3. 기존 리소스 식별

기존에 설정한 AWS 리소스의 정보를 수집하고, 필요한 경우 AWS Management Console 또는 AWS CLI를 사용하여 해당 리소스의 속성을 확인합니다.

4. 테라폼 코드 작성

수집한 리소스 정보를 토대로 테라폼 코드를 작성합니다. 예를 들어, EC2 인스턴스를 Terraform으로 가져오려면 aws_instance 블록을 작성하여 해당 인스턴스를 정의합니다.

resource "aws_instance" "example" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
  tags = {
    Name = "example-instance"
  }
}

5. 변수 사용

필요한 경우 variables.tf 파일을 생성하여 변수를 정의하고, terraform.tfvars 파일을 사용하여 변수 값을 설정합니다.

6. terraform init 실행

terraform init

테라폼 프로젝트 디렉토리에서 terraform init 명령을 실행하여 테라폼을 초기화합니다. 이 명령은 테라폼 상태 파일과 필요한 모듈을 다운로드합니다.

7. terraform plan 실행

terraform plan

terraform plan 명령을 실행하여 테라폼이 수행할 작업을 미리 확인합니다. 이 명령은 코드가 실제로 적용되기 전에 어떤 작업이 수행될 것인지 보여줍니다.

8. terraform apply 실행

terraform apply

확인이 완료되면 terraform apply 명령을 실행하여 테라폼 코드를 실행하고 기존 AWS 리소스를 생성 또는 업데이트합니다.

 

이러한 절차를 따라가면 기존의 AWS 설정을 Terraform 코드로 가져올 수 있습니다. 하지만 이 작업은 주의 깊게 수행되어야 하며, 코드를 신중하게 작성하고 테스트하는 것이 중요합니다.

728x90

기존에 생성한 AWS EC2 인스턴스를 Terraform으로 가져오는 방법

  • Terraform의 import 명령어 사용
    • Terraform은 리소스를 가져올 수 있는 import 명령어를 지원합니다.
    • 이 명령어를 사용하면 Terraform의 상태 파일과 호환되도록 리소스를 가져올 수 있습니다.
    • 예를 들어:
terraform import aws_instance.example-instance i-0123456789abcdef0

위의 명령어에서 aws_instance.example-instance는 리소스 식별자이며, i-0123456789abcdef0은 가져올 EC2 인스턴스의 식별자입니다.

terraform show
$ terraform show
# aws_instance.example-instance:
resource "aws_instance" "example-instance" {
    ami                                  = "ami-053b0d53c279acc90"
...
    }

    root_block_device {
        delete_on_termination = true
        device_name           = "/dev/sda1"
        encrypted             = false
        iops                  = 3000
        tags                  = {}
        throughput            = 125
        volume_id             = "vol-08f09faf0c62543c3"
        volume_size           = 8
        volume_type           = "gp3"
    }
}

 

728x90
반응형