?
사용자

Terraform으로 AWS EC2 인스턴스 및 보안 그룹 생성 및 관리

Terraform을 사용하여 AWS 클라우드에 기본적인 EC2 인스턴스와 보안 그룹을 프로비저닝하고 관리하는 방법을 안내합니다. IaC(Infrastructure as Code)의 기초를 다지는 데 유용합니다.

#terraform#aws#iac#devops
recipe.md

Terraform으로 AWS EC2 인스턴스 및 보안 그룹 생성 및 관리

이 레시피는 Terraform을 사용하여 AWS에 EC2 인스턴스와 보안 그룹을 생성하고 관리하는 방법을 보여줍니다. 실습 환경을 빠르게 구축하고 IaC의 기본 개념을 익히는 데 활용할 수 있습니다.

1. Terraform 설정 및 AWS Provider 구성

main.tf 파일을 생성하고 다음 내용을 작성합니다.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-2" # 서울 리전
}
2. VPC, 서브넷, 보안 그룹 정의

기본적인 VPC, 퍼블릭 서브넷, 그리고 SSH 및 HTTP 트래픽을 허용하는 보안 그룹을 정의합니다.

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "my-terraform-vpc"
  }
}

resource "aws_subnet" "public" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
  availability_zone = "ap-northeast-2a"
  map_public_ip_on_launch = true

  tags = {
    Name = "my-terraform-public-subnet"
  }
}

resource "aws_security_group" "instance_sg" {
  name        = "allow_ssh_http"
  description = "Allow SSH and HTTP inbound traffic"
  vpc_id      = aws_vpc.main.id

  ingress {
    description = "SSH from anywhere"
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    description = "HTTP from anywhere"
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "instance-security-group"
  }
}
3. EC2 인스턴스 정의

Amazon Linux 2 AMI를 사용하여 EC2 인스턴스를 생성합니다. instance_typet2.micro로 설정합니다.

resource "aws_instance" "web_server" {
  ami           = "ami-0c94857c736823147" # 최신 Amazon Linux 2 AMI ID (ap-northeast-2 기준, 변경될 수 있음)
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.public.id
  vpc_security_group_ids = [aws_security_group.instance_sg.id]
  key_name      = "my-aws-key" # 미리 생성된 EC2 키 페어 이름

  tags = {
    Name = "my-web-server"
  }
}

참고: ami ID는 AWS 리전 및 시점에 따라 달라질 수 있습니다. AWS 콘솔에서 최신 AMI ID를 확인하여 업데이트하세요. key_name은 미리 생성해 둔 EC2 키 페어 이름으로 바꿔야 합니다.

4. Terraform 실행

터미널에서 다음 명령어를 순서대로 실행합니다.

  1. Terraform 초기화: terraform init
  2. 실행 계획 확인: terraform plan
  3. 인프라 프로비저닝: terraform apply apply 실행 시 yes를 입력하여 생성을 확인합니다.
5. 프로비저닝된 리소스 확인 및 접속

AWS Management Console에서 EC2 대시보드로 이동하여 생성된 인스턴스와 보안 그룹을 확인할 수 있습니다. 인스턴스의 퍼블릭 IP 주소를 복사하여 SSH로 접속할 수 있습니다. (예: ssh -i my-aws-key.pem ec2-user@<인스턴스_퍼블릭_IP>).

6. 리소스 삭제

더 이상 필요하지 않은 리소스를 삭제하려면 다음 명령어를 실행합니다.

terraform destroy

destroy 실행 시 yes를 입력하여 삭제를 확인합니다.

추가 팁: Terraform 상태 파일(terraform.tfstate)을 원격 저장소(S3 등)에 저장하여 팀원 간의 협업을 강화하고 상태 관리를 효율적으로 할 수 있습니다.

3
스크랩
14
좋아요
0
댓글