[책 리뷰] 심각한 테라폼 중독입니다

2025. 7. 20. 19:26·후기

 

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

 

ㅋㅋㅋ

 

책 구매 링크

 

심각한 테라폼 중독입니다 | 홍수민 - 교보문고

심각한 테라폼 중독입니다 | 구성하고, 관리하고, 확장하는 테라폼의 정석빠르게 변화하는 클라우드 환경에서 인프라를 안정적으로 운영하려면 선언만으로는 부족하다. 이 책은 테라폼을 실무

product.kyobobook.co.kr

 

 

 

  • 클라우드 인프라 관리에서 명령형 패러다임(Imperative) 패러다임은 1회성 작업을 수행하는 데는 도움이 될 수 있지만 기존 프로비저닝 상태의 유지 및 점층적 수정에는 불리함.
  • 서비스가 성장할 수록 인프라를 수동으로 관리하기는 어려움. 협업에 대한 안전성 등등을 고려하면 선언형(declarative) 패러다임의 IaC 도구가 필요함
    • 상태 변경 스크립트를 작성하는 것이 아니라 desired status 를 변경하는 것으로 목적 달성 가능하게.
    • 코드 기반이기에 형상관리에 용이, 가장 최근 커밋으로 현재 인프라 상태 파악 가능.

 

2 단원 우리는 왜 테라폼을 쓰는가

Iac 도구 특성

  1. 해당 도구의 인프라 관리 방식이 선언형 패러다임을 따라야 함
  2. 다양한 프로바이더 제공
  3. 해당 도구의 스크립트 언어가 선언형 패러다임을 따라야 함

테라폼과 비교할 도구들:

  • 앤서블 : 설정 관리 도구
  • AWS CDK
    • Aws 리소스만 프로바이더로 제공

테라폼 작동 방식

  1. 현재 인프라의 프로비저닝 상태를 스캔하여 terraform states의 형태로 저장. (Terraform plan)
  2. 코드의 기대 상태와 다르다면 현재 상태를 기대 상태에 맞게 변경한 뒤 테라폼 상태를 갱신함(terraform apply)

테라폼의 스크립트 언어

Harshicorp(HCL)

 

 

3단원 테라폼 작동 방식

  1. 테라폼 프로젝트 구조
  • .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로 설정하면 리소스가 삭제되기 전에 생성을 먼저 수행하므로 서비스 중단을 방지하는 데 유용하다 .ᐟ .ᐟ.ᐟ .ᐟ.ᐟ .ᐟ.ᐟ .ᐟ


8 단원 유효성 검사

  • EKS 애드온 권장 버전 확인
    • EKS 애드온의 경우 버전, 시기별로 권장 버전이 달라짐.
    • Check block 사용으로 ㅗ권장 버전이 업데이트되면 WARNING 문구로 확인 가능

 

Appendix B

  • 테라폼 코드를 검증하고 플래닝하는 깃허브 액션 파이프라인 도입??

 

Appendix D

  • terraformer : 대량의리소스 임포트를 돕는 도구
  • Terraform-docs : 테라폼 문서화 오픈소스 도구
    • 오 이거는 꼭 넣어보기

 

 

'후기' 카테고리의 다른 글

[행사 후기] AWS Summit 2025  (1) 2025.05.18
'후기' 카테고리의 다른 글
  • [행사 후기] AWS Summit 2025
HH_g
HH_g
  • HH_g
    HH_Techlog
    HH_g
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 테스트
      • 프로젝트
        • 식선생
      • K8S
        • 주요 개념
        • Scheduling
        • Cluste Maintenance
        • Application Lifecylcle Mana..
      • NCloud
      • AWS
      • 트러블슈팅
      • Observability
      • 후기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    kube-dns
    스택
    10828
    k8s
    파이썬
    백준
    volumemodificationfeature
    coredns
    시뮬레이션
    EKS
    8911
    로드테스트
    ㅐ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
HH_g
[책 리뷰] 심각한 테라폼 중독입니다
상단으로

티스토리툴바