최근 AWS에 관해 공부를 하다가 AWS 유튜브 채널에 상당히 좋은 내용들이 많아 들으며 일부 내용을 발췌하면서 조금 이해하기 쉽게, 간략하게 정리할 예정이다. 시간이 된다면 전문을 한번 보는것을 추천한다.
(출처 : https://www.youtube.com/watch?v=9PTdO7DM6XQ&t=1580s)
엔터프라이즈급 특히 대규모 인프라를 구축할 경우 고려해야할 세 가지 Terraform을 잘 쓸 수 있는지 알아BOZA
처음 Terraform을 접하는 테린이 (필자..)의 경우 하나의 폴더에 리소스를 추가하면서 시작하게 된다.
이럴 경우 큰 단점이 있는데
terraform plan
, terraform apply
시간이 오래걸림그렇다면 BestPractice는 뭘까?
MS단위로 쪼개는걸 베이스로 한다.
환경 별 리소스 차이를 최소화하라.
환경 별로 다를 수 있는거 알지만, 최소한 Prod 에 있는 리소스는 모든 환경별로 기본적으로 포함 하고 있어야한다.
당연하겠지만 동일 코드로 DEV -> STG -> PROD 환경으로 단계적으로 승격한다.
terraform workspaces
: 분리된 tfstate 공간을 제공한다. ex) terraform workspaces select dev
, terraform workspaces select qa
..
그러나 실수하기 매우 쉽기 때문에 테라폼 apply를 자동화 한 경우에만 쓰는걸 권장한다.
메인 레포의 폴더 구조를 설명하자면, 아래와 같다.
그리고 MS 레포의 폴더링 구조는 모든 리소스를 포함하는걸 기본으로 한다.
iam은 글로벌리소스인데 ms모듈에 있는게 맞아?
- ms에서 이게 빠지거나..담당자 바뀌다보면 어딧는지 못찾아..
- nameing 규칙만 잘 지켜줘..
모듈을 테스트 가능한가? 인프라에 반영해봐야 아는거 아냐??
- 공용모듈만 새로운 버전으로 업뎃 했을때 A MS는 되고 B MS는 안되면 어떡할려?
이런걸 미리 테스트 해봐야 된다.
아니 그니까 어떤 테스트가 가능한데??
terraform fmt
terraform validate
terraform plan