운 좋게 회사 동료분이 가져오셔서 빠르게 읽어볼 수 있었습니다.
실무에서 테라폼으로 AWS 관리하고 있는데, 기본 개념 정리 겸 추가로 적용할 만한 내용만 짧게 정리해보았습니다~
개인적으로 업무 중에 가장 무서운게 테라폼 plan 했는데 갑자기 delete 예정 뜨는 거랑 plan 후 apply 했는데 이상 동작하는 거...

책 구매 링크
심각한 테라폼 중독입니다 | 홍수민 - 교보문고
심각한 테라폼 중독입니다 | 구성하고, 관리하고, 확장하는 테라폼의 정석빠르게 변화하는 클라우드 환경에서 인프라를 안정적으로 운영하려면 선언만으로는 부족하다. 이 책은 테라폼을 실무
product.kyobobook.co.kr
- 클라우드 인프라 관리에서 명령형 패러다임(Imperative) 패러다임은 1회성 작업을 수행하는 데는 도움이 될 수 있지만 기존 프로비저닝 상태의 유지 및 점층적 수정에는 불리함.
- 서비스가 성장할 수록 인프라를 수동으로 관리하기는 어려움. 협업에 대한 안전성 등등을 고려하면 선언형(declarative) 패러다임의 IaC 도구가 필요함
- 상태 변경 스크립트를 작성하는 것이 아니라 desired status 를 변경하는 것으로 목적 달성 가능하게.
- 코드 기반이기에 형상관리에 용이, 가장 최근 커밋으로 현재 인프라 상태 파악 가능.
2 단원 우리는 왜 테라폼을 쓰는가
Iac 도구 특성
- 해당 도구의 인프라 관리 방식이 선언형 패러다임을 따라야 함
- 다양한 프로바이더 제공
- 해당 도구의 스크립트 언어가 선언형 패러다임을 따라야 함
테라폼과 비교할 도구들:
- 앤서블 : 설정 관리 도구
- AWS CDK
- Aws 리소스만 프로바이더로 제공
테라폼 작동 방식
- 현재 인프라의 프로비저닝 상태를 스캔하여 terraform states의 형태로 저장. (Terraform plan)
- 코드의 기대 상태와 다르다면 현재 상태를 기대 상태에 맞게 변경한 뒤 테라폼 상태를 갱신함(terraform apply)
테라폼의 스크립트 언어
Harshicorp(HCL)
3단원 테라폼 작동 방식
- 테라폼 프로젝트 구조
- .tf 확장자를 가짐.
- Terraform init
- 주요 테라폼 명령을 수행할 수 있도록 필요한 설정이 진행됨.
- 초기화가 완료된 디렉터리를 루트 모듈이라고 함
- 루트 모듈 안에는 초기화 이후 .terraform 디렉터리가 생성됨.
- .tfstate
- 플랜, 반영 명령어를 실행하면 테라폼이 코드에 정의한 리소스에 따른 실제 인프라 리소스를 읽어들여 json 형식의 terraform 상태로 저장함. 이 파일을 state file 이라고 함
- 상태 파일은 한 실행 환경 안에 하나만 생성됨.
- 보통 s3등의 상태 백엔드를 설정.
- 테라폼은 테라폼 상태로 저장한 리소스가 아닌 경우 인프라 조작의 대상으로 인식하지 않음.
- 만약 기존 리소스에서 이름 같은 수정 불가능한 매개변수를 변경하면, 상태 파일에 없기 때문에 삭제 후 재생성 예정으로 뜰 것임. 이런 경우 terraform state mv {예전 이름} {바꿀 이름} 으로 상태 동기화 가능.
- 이런 현상을 리소스 드리프트 , 리소스 드리프트 해소 라고 함
- 테라폼 프로바이더
- 테라폼 단독으로는 그 어떤 외부 프로바이더와도 소퉁 불가
- 테라폼은 외부 프로바이더로부터 실제 상태를 읽어들이고, 테라폼 명령에 따라 외부 프로바이더에 적절한 api 요청을 전송할 수 있는 부분이 플러그인 형태로 추상화되어 있음.
- Init 명령어때 테라폼 프로바이더를 모두 .terraform 디렉터리로 다운로드함.
6단원 실행 환경 관리
- 실행 환경을 분리해야 하는 이유?
- 한 명만 테라폼 실행 가능
- 생명주기 블록(lifecycle block)
- Ignore_changes
- 특정 속성에 대한 변경을 무시하도록 설정
- EX) 오토스케일링 그룹의 기대 인스턴스 수
- create_before_destroy
- 기본값 false
- 수정 불가한 매개변수가 변경될 때 테라폼은 기본적으로 해당 리소스를 삭제 후 재생성함. 이 옵션을 true로 설정하면 리소스가 삭제되기 전에 생성을 먼저 수행하므로 서비스 중단을 방지하는 데 유용하다 .ᐟ .ᐟ.ᐟ .ᐟ.ᐟ .ᐟ.ᐟ .ᐟ
- Ignore_changes
8 단원 유효성 검사
- EKS 애드온 권장 버전 확인
- EKS 애드온의 경우 버전, 시기별로 권장 버전이 달라짐.
- Check block 사용으로 ㅗ권장 버전이 업데이트되면 WARNING 문구로 확인 가능
Appendix B
- 테라폼 코드를 검증하고 플래닝하는 깃허브 액션 파이프라인 도입??
Appendix D
- terraformer : 대량의리소스 임포트를 돕는 도구
- Terraform-docs : 테라폼 문서화 오픈소스 도구
- 오 이거는 꼭 넣어보기
'후기' 카테고리의 다른 글
| [행사 후기] AWS Summit 2025 (1) | 2025.05.18 |
|---|