Terraform

[Terraform] 테라폼으로 AWS EC2 프로비저닝 실습(예제)

운덩하는 개발자 2023. 12. 13.
반응형

 

 

 

1. 테라폼 설치 및 환경변수 설정

 

1 -1) 테라폼 설치

https://developer.hashicorp.com/terraform/install?product_intent=terraform

 

Install | Terraform | HashiCorp Developer

Explore Terraform product documentation, tutorials, and examples.

developer.hashicorp.com

 

저는 해당 경로에 테라폼 폴더를 따로 만들어 주었습니다.




1 -2) 테라폼 환경변수 설정

\



1 -3) 테라폼 설치 확인

 

cmd에서 terraform을 입력하였을 때 아래와 같이 나오면 설치완료된 것입니다.



 

2. IAM User & ACCESS KEY 등록

 

2-1)  사용자 추가, ACCESSKY & SECRET KEY 생성

 

 

테라폼에서 AWS의 EC2를 프로비저닝 하기 위해서는
AWS계정의 ACCESS KEY와 SECRET KEY가 필요합니다.
ROOT계정에서 하는 것은 보안 상 위험하다 생각하여
IAM에서 새로운 사용자를 추가해 주고, EC2-FULL-ACCESS만 주었습니다.

 




2 -2)  AWSCLI 설치 & 액세스 키 등록

2-2-1)  AWSCLI 설치

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

 

최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface

이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이

docs.aws.amazon.com



2-2-2) 액세스 키 등록

C:\Users\user>aws configure
AWS Access Key ID [None]: [액세스 키 ID]
AWS Secret Access Key [None]: [ 시크릿 키 ]
Default region name [None]: ap-northeast-2
Default output format [None]: json
  1. AWS CLI 구성:
    • 커맨드 프롬프트나 PowerShell을 열고 aws configure 명령어를 입력합니다.
  2. 자격증명 및 기본 설정 입력:
    • AWS Access Key ID: 여기에 앞서 생성한 AWS Access Key ID를 입력합니다. 
    • AWS Secret Access Key: 여기에 해당 Access Key의 Secret Access Key를 입력합니다. 
    • Default region name: AWS 리소스를 생성할 기본 리전 코드를 입력합니다. 예를 들어, 서울 리전이면 **ap-northeast-2**를 입력합니다.
    • Default output format: AWS CLI의 기본 출력 포맷을 입력합니다. 일반적으로 **json**을 사용하지만, **text**나 **table**도 가능합니다.
  3. 자격증명 파일 확인:
    • 구성이 완료되면, 자격증명은 ~/.aws/credentials 파일에 저장되고, 기본 리전 설정과 출력 포맷은 ~/. aws/config 파일에 저장됩니다.
    • Windows에서 이 파일들의 위치는 보통 **C:\\Users\\[Your-Username]\\. aws\\**입니다.

 

3. main.tf 파일 작성

# AWS 공급자(provider) 설정
provider "aws" {
  region = "ap-northeast-2" # 리전을 지정합니다 (예: 서울 리전)
}

# AWS EC2 인스턴스 리소스 정의
resource "aws_instance" "terraform-EC2" {
  ami           = "ami-0e17ad9abf7e5c818" # 인스턴스에 사용할 AMI ID (예: Amazon Linux 2)
  instance_type = "t2.micro"             # 인스턴스 유형 (예: t2.micro)
}

[ 'provider' 블록]

  1. region :
    • 매개 변수는 프로비저닝 하려는 리전을 지정합니다.
    • 여기서는 "ap-northeast-2" (서울 리전)로 설정되어 있습니다.
  2. aws_instance:
    • 테라폼에서 제공하는 EC2 인스턴스 리소스 유형을 나타냅니다.
    • **"terraform-EC2"**는 리소스의 이름(임의로 지정 가능)입니다.

 

[ 'reource' 블록]

  1. ami:
    • 인스턴스에 사용할 AMI (Amazon Machine Image) ID를 지정합니다.
    • 여기서는 "ami-0e17ad9abf7e5c818"을 사용하고 있으며, 이는 특정 AMI를 나타냅니다.
  2. instance_type:
    • 인스턴스의 유형을 지정합니다.
    • "t2.micro"는 가장 작은 유형의 인스턴스인 t2.micro를 나타냅니다.

 

 

 main.tf 파일을 사용하여 테라폼을 실행하면, 지정된 리전과 AMI를 기반으로 새로운 EC2 인스턴스가 프로비저닝 됩니다. 단, 이 파일만으로는 EC2 인스턴스에 대한 네트워크 설정, 보안 그룹, 키 페어 등의 추가 구성은 없으므로 필요한 경우 해당 구성을 추가로 정의해야 합니다.



main.tf 파일 위치

 

 

4. Terraform을 활용한 EC2 프로비저닝

 

terraform init
terraform plan
terraform apply

 

4-1) Terraform Init

terraform init 명령어는 Terraform 프로젝트를 초기화하는 데 사용됩니다. 

  • 플러그인 설치: 필요한 Terraform 프로바이더와 모듈의 설치와 업데이트를 관리합니다.
  • 구성 검증: Terraform 구성 파일을 검사하여 구문 오류가 없는지 확인합니다.
  • Backend 초기화: Terraform 상태 파일을 저장하고 관리할 백엔드를 설정합니다.

 

4-2) Terraform Plan

terraform plan 명령어는 실행하기 전에 Terraform 코드의 결과를 미리 보여줍니다. 

  • 변경사항 확인: 현재 인프라와 Terraform 코드 사이의 차이점을 분석하여 어떤 변경이 발생할지 보여줍니다.
  • 실행 계획 생성: 실제로 적용될 변경사항들의 목록을 만듭니다. 이는 실제 변경을 적용하기 전에 검토할 수 있는 기회를 제공합니다.


 

4-3) Terraform Apply

terraform apply 명령어는 Terraform 코드에 정의된 대로 인프라를 생성, 수정, 또는 삭제합니다. 

  • 자동 실행: **terraform plan**에서 생성된 실행 계획을 바탕으로 변경사항을 자동으로 적용합니다.
  • 상태 업데이트: 인프라 변경 후 Terraform 상태 파일을 업데이트하여 현재 인프라의 상태를 반영합니다.
  • 결과 출력: 변경된 인프라의 세부 정보를 출력하여 사용자가 변경된 부분을 확인할 수 있게 합니다.

각 단계는 다음 단계로 넘어가기 전에 필수적으로 수행해야 하며, 이 과정들을 통해 인프라를 코드로 관리하는 Terraform의 기능을 효과적으로 사용할 수 있습니다.

 

 



다음과 같이 EC2가 프로비저닝이 된 것을 볼 수 있습니다.
반응형

'Terraform' 카테고리의 다른 글

[Terraform] 테라폼으로 EKS 프로비저닝  (0) 2023.12.14

댓글