CloudNet@ T101 스터디 진행 후 정리한 글 입니다. |
T101 스터디에서 배운 것들을 정리 할겸 위의 이미지와 같이 가장 기본적으로 많이 쓰이는 서비스의 구성을 테라폼 코드를 이용하여 AWS 서비스를 구축 해보려고 합니다.
테라폼 코드들은 생성 이후 수정, 유지보수 등을 위하여 가독성을 높이기 위해 서비스 별로 나누어 총 9개의 파일로 구성하였습니다.
테라폼 구성 파일
$ tree
.
|-- alb.tf
|-- asg.tf
|-- aws.tf
|-- ec2.tf
|-- outputs.tf
|-- rds.tf
|-- sg.tf
|-- variables.tf
`-- vpc.tf
0 directories, 9 files
aws.tf
aws.tf 파일에서는 테라폼에서 사용할 프로바이더를 지정하였습니다.
vpc.tf
vpc.tf 파일에서는 VPC 등 네트워크와 관련 된 내용을 담당하며,
아래와 같이 총 6개의 설정을 넣어두었습니다.
- vpc ( 서비스에서 사용할 VPC )
- Public subnet ( Bastion Host에서 사용할 인터넷망 )
- Private subnet ( Web 서버가 사용할 내부망 )
- Nat Gateway ( Web 서버에서 외부로 나갈때 사용할 Nat Gateway )
- Internet Gateway ( 인터넷망에서 외부로 나갈때 사용할 Internet Gateway )
- RDS subnet ( RDS가 사용할 내부망 )
ec2.tf
ec2.tf에서는 EC2와 관련 된 코드들을 넣어두었으며,
아래와 같은 역할의 코드를 넣어두었습니다.
- ec2에서 사용할 AMI를 지정
- Bastion Host 서버 생성
- Web 서버 생성
sg.tf
sg.tf에서는 SecurityGroup의 내용을 담당하고 있으며,
Bastion Host, Web Server, RDS 등에서 사용할 SecurityGroup을 세팅합니다.
rds.tf
rds.tf 파일에서는 rds의 엔진, 사양 등 기본적인 사항들을 지정하며,
db_name, username, password 는 variables.tf 파일에서 가져옵니다.
alb.tf
alb.tf파일 에서는 LB의 Listener, TargetGroup 등을 지정하며,
위의 ec2.tf에서 만들어진 웹서버도 LB에 포함하도록 설정하였습니다.
asg.tf
asg.tf에서는 AutoScaling Group에 대한 설정을 해두었습니다.
variables.tf
variables.tf 파일은 파일명을 보면 어떤 역할을 하는지 느낌이 오듯, 자주 사용하는 부분들을 변수처럼 사용이 가능하도록 해주는 파일입니다.
variable 에서는 type에는 number, string 등 다양한 유형의 타입이 있으며, db_username, db_password 세팅 부분은 string 타입을 사용하며, sensitive를 사용하여 테라폼 실행 시 텍스트를 입력받아 값을 지정합니다.
outputs.tf
outputs.tf 파일은 테라폼으로 인프라가 구축 된 뒤 아웃풋 받고 싶은 정보들을 기입하여 두었습니다.
저는 EC2에서 워드프레스를 설치하였으므로, 워드프레스를 처음 세팅하는데 필요한 RDS의 엔드포인트 주소, Bastion Host의 주소 등을 불러오도록 하였습니다.
구축 완료 된 후 정상 접근 여부 확인
위에서는 서비스 구성을 구축해보는 것이 목표이기 때문에 워드프레스의 소스를 한곳으로 뭉치지 않았지만,
실제로 서비스를 구성한다면 EFS 등을 이용하여 소스를 한 곳으로 몰거나, AutoScaling의 이미지를 워드프레스 구축 후 구운 이미지로 변경하는 등의 작업이 추가로 필요합니다.
'Newb > Terraform' 카테고리의 다른 글
Trraform으로 지정한 AWS 리소스 비용 계산 해보기 (0) | 2022.12.08 |
---|---|
Terraform 기본 명령어 & Flow (0) | 2022.11.08 |
Terraform ? (0) | 2022.10.30 |