테라폼으로 인스턴스를 생성시켜 웹 서버를 동작시키는 실습을 해보려고 합니다.
최대한 간단하게 웹 서버 하나만을 생성하는 것이 이번 실습의 목표이고, Hello,world를 웹 페이지에 표시해보려고 합니다.
본 실습에서는 포트번호를 80 대신 8080 번호를 사용하였는데 1024 이하 모든 포트번호를 사용하기 위해서는 root 권한이 필요한데, 80 포트를 사용할 경우 공격자가 root 권한을 가지게 되기 때문에, 보안의 위협이 생길 수 있습니다. 따라서, 권한이 제한된 포트번호로 웹 서버를 가동시키는 것이 가장 이상적인 방법이며, 그러기 위해선 높은 숫자 번호의 포트를 사용해야 합니다.
단일 웹 서버 배포하기
EC2를 생성하기 앞서, 사용자 데이터 스크립트의 구조를 먼저 알아야 합니다.
#!/bin/bash
echo "Hello, World" > index.html
nohup busybox httpd -f -p 8080 &
본 사용자 데이터는 bash 스크립트로 작성되었으며, index.html 파일에 Hello,world를 실행하도록 설정한 것입니다.
nohup과 & 을 통해 bash 스크립트가 종료 되더라도 웹 서버가 백그라운드에서 영구적으로 실행 되도록 구성했습니다.
provider "aws"{
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0c9c942bd7bf113a2"
instance_type = "t2.micro"
vpc_security_group_ids = ["${aws_security_group.instance.id}"]
user_data = <<-E0F
#!/bin/bash
echo "Hello, World" > index.html
nohup busybox httpd -f -p 8080 &
E0F
//E0F는 테라폼의 히어닥 문법 (여러 줄의 단락으로 처리하는)
tags = {
Name = "terraform-example"
}
}
resource "aws_security_group" "instance" {
name = "terraform-example-sg"
ingress{
from_port = 8080
to_port = 8080
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
aws에서의 인스턴스 생성 코드입니다.
user_data에 bash 스크립트 코드를 넣어줌으로써 ec2가 생성될때 8080포트에서의 웹 사이트가 실행되도록 설정해주고, 보안그룹을 만들어줌으로써 인바운드 규칙에 8080포트를 열어주어 해당 포트에 접근할 수 있도록 설정해 주었습니다.
인스턴스의 설정은 t2.micro에 우분트 22.04 LTS 버전을 베이스로 설정해주었습니다.
유저 데이터에 자세히 보면 EOF 표시가 있는 것을 알 수 있는데 이는 히어닥 문법으로, 새로운 줄에 매번 문자를 추가하는 것이 아닌 여러줄의 단락으로 처리하는 테라폼의 문법입니다.
해당 퍼블릭 ip의 인바운드 포트로 접속해주면 정상적으로 Hello,World가 찍히는 것을 볼 수 있습니다.
'Devops' 카테고리의 다른 글
[k8s] 쿠버네티스 정의와 구성 요소 간 통신 방법 (0) | 2023.08.23 |
---|---|
[Vagrant] 가상머신 설정 자동 구축하기 (0) | 2023.08.13 |
[Vagrant] 기존 파일로 가상 머신 만들어보기 (0) | 2023.08.13 |