All in Notion
Background
- 최근에 배운 기술 2가지를 사용하여 간단하게 만드는 프로젝트를 진행하고자 했다.
- Terraform과 Ansible을 사용하여 간단한 3-tier를 자동으로 구현할 수 있는 주제로 하였다.
PLAN
- terraform의 기초를 배우면서 Project를 만드는 기간을 포함해서 1달(20.12.25 ~ 21.01.25)을 잡았다.
- 이미 AWS Cloud Resource를 Web Console을 통해 원하는 것을 조작해서 만들 수 있는 수준으로 자가판단(?)해서 그 부분에 대해서 Design적인 부분보다 그것을 어떻게 IaC로 만들 수 있는가를 고민하는 부분이 많이했다.
=> Architecture에 대한 고민 X, IaC로 구현의 고민 O
What is?
-
Terraform : 인프라를 building, changing, 그리고 versioing하는 안전하고 강력한 도구이다. 프로젝트에서는 AWS를 사용하여 VPC를 구성하고 EC2를 만드는 등 Cloud Resource의 provisioning하는 부분으로 접근하였다.
-
Ansible : 어플리케이션 전개 + 구성관리 + Provisioning 도구이다. 프로젝트에서는 mysql, ansible, flask 등 Package과 그 환경 구성으로 사용했다.
Concept
두 기술을 사용하기 때문에 그 역활에 맞는 정확한 구분이 필요했다.
[Terraform]
- VPC를 생성한다.
- Subnet과 Route Table을 생성하고 구성한다.
- Internet Gateway를 생성하고 VPC에 Attach한다.
- 필요한 개수만큼 Security Group을 생성하고 EC2에 Attach한다. 각 Security Group의 in/outbonud의 rules에 대해서는 필요에 의한 변경이 필요하다.
- Load Balancer는 Auto Scaling부분과 High Availability 부분에서 필요해서 생성한다.
- DB는 RDS를 사용한다.
- 필요한 수만큼 EC2 instance를 생성한다. (Ansible Master, WEB, WAS)
- Ansible Master Instance에는 Ansible의 기본 환경을 구성한다. ( Ansible 설치, ssh connection, inventory 등 )
[Ansible]
- Nginx 설치 및 nginx.conf 설정
- Flask 설치 및 환경 구성, App project는 github에서 clone
- MySQL 설치 및 환경 구성 (for mysql-client)
Architecture
최종적으로 구성된 Project의 Architecture입니다.
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] Security Group과 Remote-exec의 관계 (0) | 2021.01.23 |
---|---|
[Terraform] AWS Provider credential Authentication (0) | 2021.01.05 |
[Terraform] Terraform resource Graph (0) | 2020.12.29 |