IaC/Terraform

[Mac OS] Terraform 을 이용한 어플리케이션 구성 - Step 2

chanstory 2023. 2. 11. 12:24
반응형

** Terraform 실행 시 현 디렉토리 내 모든 tf 파일 참조됨 
      => 리소스 별 분리 관리 시 편함

 

최종 목표 아키텍처


STEP 2: EC2 인스턴스 생성

- AMI : Ubuntu Server 18

- instance type : t2.micro

- 사용자 데이터 (최종 출력 확인 시 Hello, World 확인)

#!/bin/bash
echo "Hello, World" > index.html
nohup busybox httpd -f -p ${var.server_port} &

- 키페어 : EC2 할당 (수동 or 원래 있던 키페어 사용 - 필자는 원래 있던것 사용)

 

 

1. Key pair 생성 (ec2.tf)

#key-pair 생성

#키페어 생성 및 설정 
resource "aws_key_pair" "ec2-key" {      # ec2-key라는 이름의 aws_key_pair라는 타입의 리소스를 정의한다.
  key_name = "Terraform-ec2-keypair"    # 생성될 키페어의 이름
  public_key = file("~/.ssh/id_rsa.pub")  # 키페어에 사용할 public key 지정

  tags = {
    Name = "Terraform-ec2-keypair"
  }
}

key-pair 생성 참고 링크

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/key_pair

 

Terraform Registry

 

registry.terraform.io

https://kitty-geno.tistory.com/72

 

AWS | EC2 인스턴스 키 페어 추가, SSH 접속하기

EC2에 SSH로 접근제어를 위해 키 페어(private-public)를 사용한다. 하나의 키 페어를 여러 개발자가 공유해서 쓸 수도 있겠지만 필요에 따라 개발자별로 키 페어를 관리하는 상황이 있을 수 있기 때문

kitty-geno.tistory.com

 

2. EC2 생성 (ec2.tf)

#EC2 생성

# EC2 생성 및 설정
resource "aws_instance" "app_server" {      # EC2 인스턴스 생성
  ami           = "ami-0cb1d752d27600adb"   # ami 확인 필수
  instance_type = "t2.micro"                # 인스턴스 타입

  security_groups = [aws_security_group.pubSg.id]
  subnet_id = aws_subnet.pub_subnet1.id
  key_name = aws_key_pair.ec2-key.key_name
  associate_public_ip_address = "true"
  
  # 유저데이터 작성
  user_data = <<-EOF
              #!/bin/bash
              echo "Hello, World" > index.html
              nohup busybox httpd -f -p 8080 &
              EOF
  tags = {
    Name = "Terraform-EC2"
  }
}

 

 

EC2 생성 참고 링크

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

 

Terraform Registry

 

registry.terraform.io

 

 

* ami 확인

- 인스턴스 생성 란에서 확인 가능

반응형