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

2023. 12. 13. 15:24·Terraform
반응형

 

 

 

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
'Terraform' 카테고리의 다른 글
  • [Terraform] 테라폼으로 EKS 프로비저닝
운덩하는 개발자
운덩하는 개발자
    반응형
  • 운덩하는 개발자
    ddo_hyung_
    운덩하는 개발자
  • 전체
    오늘
    어제
    • 분류 전체보기
      • EKS
      • Container
      • Python
      • AI
      • Java
      • 자기개발, 일기
      • AWS
      • Algorithm
      • Spring Boot
      • Kubernetes
      • Github Action
      • CS
      • Network
      • Etc
      • Linux
      • Terraform
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    youtube 접속 과정
    카펜터
    AWS
    Kubernetes
    테라폼 프로비저닝 실습
    에프큐디엔
    쿠버네티스 ExternalName
    쿠버네티스 Headless Service
    쿠버네티스
    쿠버네티스 셀렉터 예시
    테라폼 AWS
    clusterautoscaler
    인터넷 접속 과정
    배포
    karpenter
    쿠버네티스 셀렉터
    쿠버네티스 cluster ip
    테라폼 프로비저닝 예제
    metricserver
    쿠버네티스 dns
    메트릭서버
    쿠버네티스 파드 실습
    DNS
    Container
    쿠버네티스 로드밸런서
    코어디엔에스
    쿠버네티스 파드 예시
    쿠버네티스 도메인 쿼리 질의
    테라폼 예제
    쿠버네티스 도메인
    kubernetes pod example
    쿠버네티스 node port
    쿠버네티스 서비스 종류
    클러스터오토스케일링
    쿠버네티스 셀렉터 사용사례
    테라폼
    테라폼 EC2
    docker
    테라폼 예시
    컨테이너
    ca와kapenter비교
    쿠버네티스 셀렉터 실습
    terraform
    Network
    쿠버네티스 서비스 쓰는 이유
    테라폼 실습
    네트워크
    쿠버네티스 파드
    테라폼 프로비저닝 예시
    network 과정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
운덩하는 개발자
[Terraform] 테라폼으로 AWS EC2 프로비저닝 실습(예제)
상단으로

티스토리툴바