책소개
구성하고, 관리하고, 확장하는 테라폼의 정석 빠르게 변화하는 클라우드 환경에서 인프라를 안정적으로 운영하려면 선언만으로는 부족하다. 이 책은 테라폼을 실무에 제대로 적용하기 위한 실전 가이드다. 상태 관리, 실행 환경 분리, 커스텀 모듈 설계, 다양한 프로바이더 연용 등 핵심 개념을 하나씩 짚어간다. 또한, YAML과 CSV를 활용한 입력값 관리, 키클록 등 오픈소스 연동, 멀티 리전 환경 구성까지 실제 업무에 적용 가능한 예제를 담았다. 테라폼을 더 깊이 이해하고 안정적으로 운영하고 싶은 사람에게 이 책은 훌륭한 출발점이 되어줄 것이다.
저자소개
유저 리서치 SaaS를 서비스하는 스타트업인 디비디랩의 CTO. 최고의 개발팀을 경험하고 싶은 열망으로 오늘도 고군분투하고 있다. AWS와 오늘의집 등 국내외 다양한 규모의 조직에서 클라우드 기반의 개발과 시스템 설계를 수행하였으며, 수년간 테라폼과 같은 코드형 인프라를 기반으로 클라우드 자원을 운영해왔다. 패스트캠퍼스에서 ‘실무 장애 대응 프로세스로 끝내는 장애율 0% 서비스 운영의 모든 것’이라는 주제로 장애 대응 관련 온라인 강의를 하고 있으며, 멘토링 플랫폼 F-Lab에서는 현업 백엔드 및 DevOps 엔지니어를 대상으로 멘토로 활동하고 있다.
목차
추천의 글 xii베타리더 후기 xx시작하며 xxv이 책에 대하여 xxviiiPART I 왜 테라폼인가?CHAPTER 1 클라우드와 코드형 인프라스트럭처 31.1 클라우드 컴퓨팅 vs. 온프레미스 컴퓨팅 31.2 클라우드 네이티브 패러다임 51.3 클라우드 인프라의 복잡성과 관리의 어려움 61.4 선언형 IaC 도구의 필요성 9CHAPTER 2 우리는 왜 테라폼을 쓰는가? 112.1 선언형 인프라 관리 112.2 다양한 프로바이더 122.3 선언형 스크립트 언어 142.4 하시코프 설정 언어에 대한 오해 16PART II 테라폼 기본CHAPTER 3 테라폼 작동 방식 213.1 테라폼 프로젝트 구조 213.2 테라폼 상태의 역할 223.3 테라폼 명령과 작동 263.4 테라폼 프로바이더 31CHAPTER 4 테라폼 기본 문법 344.1 데이터 타입 344.2 반복문 354.3 조건문 424.4 for 표현식 444.5 테라폼 블록 494.6 테라폼 함수 59CHAPTER 5 테라폼 모듈 665.1 모듈 사용 665.2 모듈 작성의 기본 구조 70PART III 테라폼 기능별 실무 사례CHAPTER 6 실행 환경 관리 796.1 실행 환경을 분리하지 않을 때의 문제점 796.2 실행 환경 분리 사례 816.3 테라폼 워크스페이스? 85CHAPTER 7 다양한 인라인 블록 867.1 중첩 블록 867.2 다이내믹 블록 877.3 중첩 블록 vs. 별도 리소스 블록 907.4 생명주기 블록 92CHAPTER 8 유효성 검사 958.1 검사 블록 958.2 생명주기 블록 968.3 체크 블록 98CHAPTER 9 유틸리티 모듈 만들기 1049.1 AWS의 메타데이터 가져오기 1049.2 두 AWS 프로바이더가 동일한지 체크하기 1079.3 리스트 내의 맵 합치기 109PART IV AWS 모듈 사례CHAPTER 10 모듈을 직접 만드는 이유와 만드는 방법 11710.1 공개 모듈 vs. 직접 만든 모듈 11710.2 모듈을 쉽게 만드는 방법 118CHAPTER 11 YAML 파일로 관리하는 VPC 모듈 만들기 12211.1 입력값 정하기 12311.2 입력값을 모듈에 전달할 방법 정하기 12611.3 모듈 만들기 13011.4 변수 유효성 검사 14911.5 모듈 출력값 설정 16211.6 더 고려해볼 만한 것 163CHAPTER 12 CSV 파일로 관리하는 보안 그룹 모듈 만들기 16612.1 입력값 정하기 16612.2 입력값을 모듈에 전달할 방법 정하기 16812.3 모듈 만들기 17412.4 변수 타입 유효성 18612.5 모듈 출력값 설정 18712.6 더 고려해볼 만한 것 187CHAPTER 13 VPC와 보안 그룹 모듈의 출력값을 활용하는 EC2 모듈 만들기 18913.1 입력값 정하기 18913.2 입력값을 모듈에 전달할 방법 정하기 19513.3 모듈 만들기 19813.4 변수 유효성 검사 20713.5 모듈 출력값 설정 21713.6 더 고려해볼 만한 것 218CHAPTER 14 다른 실행 환경의 출력값을 참조하는 네트워크 실행 환경 구성하기 22014.1 미리 고려해야 할 점 22014.2 실행 환경 재구성하기 22114.3 요구사항 정리하기 22314.4 원격 상태 설정하기 22414.5 입력값과 전달 방식 정의하기 22614.6 모듈 만들기 23114.7 유효성 검사 23614.8 모듈 출력값 설정 23814.9 더 고려해볼 만한 것 238PART V 다양한 프로바이더 활용 예제CHAPTER 15 하시코프 공식 유틸리티 프로바이더 24115.1 테라폼 프로바이더 티어 24115.2 랜덤 프로바이더 24215.3 HTTP 프로바이더 24415.4 로컬 프로바이더 24615.5 널 프로바이더와 terraform_data 리소스 24915.6 그 외 252CHAPTER 16 쿠버네티스 관련 프로바이더 25616.1 쿠버네티스 프로바이더 25616.2 헬름 프로바이더 27016.3 커스텀 리소스과 Kubectl 프로바이더 284CHAPTER 17 키클록 프로바이더로 AWS SSO 구현하기 29217.1 테라폼 키클록 프로바이더 설정하기 29417.2 키클록과 AWS SAML 간 연동을 위한 리소스 생성 29717.3 키클록 그룹과 AWS IAM 역할 매핑하기 30117.4 키클록 사용자로 AWS 로그인 테스트하기 30917.5 더 고려해볼 만한 것 311APPENDIX 테라폼 Q&AAPPENDIX A 테라폼을 사용하면서 생기는 문제는 어떻게 트러블슈팅하나요? 315APPENDIX B 테라폼 작업할 때 팀원들과 잘 협업하는 방법이 있나요? 320APPENDIX C 이미 존재하는 인프라 리소스를 테라폼으로 관리하고 싶어요 325APPENDIX D 테라폼 관련 서드파티 오픈소스 도구는 어떤 걸 쓰세요? 331APPENDIX E 테라폼의 라이선스가 변경된다고 하는데 문제없을까요? 336찾아보기 339