책소개
테라폼의 기초부터 고급 기술까지
클라우드 인프라 구축의 완벽한 가이드
이 책은 테라폼을 이용해서 코드형 인프라를 구축하는 방법을 자세히 다룬다. 테라폼의 설치부터 시작해서 구축하고, CLI를 사용하여 워크플로우를 수행하며, 모듈을 사용하는 방법을 설명한다. 주요 클라우드 프로바이더인 애저, AWS, GCP에서 인프라를 구축하는 실질적인 방법을 포함하여, 쿠버네티스와의 통합도 다룹니다. 또한, 테라폼의 고급 기술이라고 할 수 있는 테스트, CI/CD 파이프라인 통합, 협업 플랫폼인 테라폼 클라우드 사용법도 설명한다. 다양한 예제를 통해 테라폼 구성을 작성하고, 다른 도구와의 통합 사례도 제시한다.
목차
CHAPTER 1 테라폼 환경 구성하기
1.1 기술적 요구사항
1.2 테라폼 모범 사례 살펴보기
1.3 윈도우에서 수동으로 테라폼 다운로드하고 설치하기
1.4 윈도우에서 Chocolatey를 사용해 테라폼 설치하기
1.5 APT 패키지 매니저를 사용하여 리눅스에 테라폼 설치하기
1.6 리눅스에서 스크립트를 사용해 테라폼 설치하기
1.7 도커 컨테이너에서 테라폼 실행하기
1.8 여러 테라폼 버전간 전환하기
1.9 테라폼 프로바이더 업그레이드하기
CHAPTER 2 테라폼 구성 작성하기
2.1 기술적 요구사항
2.2 사용할 테라폼과 프로바이더 버전 구성하기
2.3 프로바이더에 별칭을 추가해서 동일한 프로바이더의 여러 인스턴스 만들기
2.4 변수 조작하기
2.5 민감 변수 안전하게 유지하기
2.6 사용자 정의 함수에서 로컬 변수 사용하기
2.7 출력을 사용해서 프로비저닝된 데이터 노출하기
2.8 테라폼 내장 함수 호출하기
2.9 테라폼 구성에서 YAML 파일 사용하기
2.10 조건문 작성하기
2.11 테라폼으로 패스워드 생성하기
2.12 테라폼 리소스간 의존성 관리하기
2.13 사용자 지정 사전 및 사후 조건 추가하기
2.14 인프라의 유효성 검사하기
CHAPTER 3 테라폼으로 인프라 확장하기
3.1 기술적 요구사항
3.2 여러 환경에서 인프라를 프로비저닝하기
3.3 count 인수를 사용해서 여러 리소스를 프로비저닝하기
3.4 맵 사용하기
3.5 객체로 구성된 맵 순환하기
3.6 dynamic 블록을 사용해서 여러 개의 블록 생성하기
3.7 맵 필터링하기
CHAPTER 4 외부 데이터를 활용해서 테라폼 사용하기
4.1 기술적 요구사항
4.2 데이터 소스를 활용해 외부 데이터 획득하기
4.3 테라폼으로 외부 데이터 쿼리하기
4.4 테라폼으로 로컬 파일 조작하기
4.5 테라폼으로 로컬 프로그램 실행하기
4.6 테라폼 쉘 프로바이더를 사용해서 쉘 스크립트 실행하기
CHAPTER 5 테라폼 상태 관리하기
5.1 로컬 테라폼 상태 사용하기
5.2 테라폼 상태에 있는 리소스 관리하기
5.3 테라폼 상태 동기화하기
5.4 기존 리소스 가져오기
5.5 다른 테라폼 상태에 있는 리소스 사용하기
5.6 테라폼 구성에 있는 리소스 리팩터링하기
CHAPTER 6 기본적인 테라폼 워크플로우 적용하기
6.1 기술적 요구사항
6.2 테라폼 구성을 깔끔하게 유지하기
6.3 코드 문법 검증하기
6.4 인프라 리소스 삭제하기
6.5 테라폼 구성에서 사용하는 프로바이더 나열하기
6.6 윈도우와 리눅스에 호환성을 갖춘 테라폼 의존성 파일 만들기
6.7 테라폼 모듈 복사하기
6.8 여러 환경을 관리하기 위해 워크스페이스 사용하기
6.9 출력을 JSON으로 내보내기
6.10 리소스 테인팅하기
6.11 의존성 그래프 생성하기
6.12 다른 테라폼 구성 디렉터리 사용하기
6.13 테라폼 표현식 분석하기
6.14 테라폼 실행 디버깅하기
CHAPTER 7 모듈을 사용해서 테라폼 구성 공유하기
7.1 기술적 요구사항
7.2 테라폼 모듈을 생성하고 로컬에서 사용하기
7.3 테라폼 모듈의 여러 인스턴스를 프로비저닝하기
7.4 공개 모듈 저장소에 있는 모듈 사용하기
7.5 깃허브를 사용해서 공개 저장소에 테라폼 모듈 공유하기
7.6 사용자 정의 모듈 내에서 다른 파일 사용하기
7.7 테라폼 모듈 생성기 사용하기
7.8 모듈 문서 생성하기
7.9 비공개 깃 저장소를 사용해서 테라폼 모듈 공유하기
7.10 모듈 사용을 위해 테라파일 패턴 적용하기
CHAPTER 8 테라폼으로 애저 인프라 프로비저닝하기
8.1 기술적 요구사항
8.2 애저 클라우드 쉘에서 테라폼 사용하기
8.3 애저 자격 증명 프로바이더 보호하기
8.4 애저 원격 백엔드에 있는 상태 파일 보호하기
8.5 테라폼에서 ARM 템플릿 실행하기
8.6 테라폼에서 애저 CLI 명령 실행하기
8.7 테라폼과 애저 키 볼트(Key Vault)를 사용해서 민감 정보 보호하기
8.8 테라폼으로 애저 가상머신 프로비저닝하고 구성하기
8.9 기존 애저 인프라를 위한 테라폼 구성 생성하기
8.10 선택적인 애저 기능 활성화하기
8.11 인프라코스트(Infracost)를 사용해서 애저 인프라 비용 추정하기
8.12 AzApi 테라폼 프로바이더 사용하기
CHAPTER 9 테라폼으로 AWS와 GCP 인프라 프로비저닝하기
9.1 기술적 요구사항
9.2 AWS를 위한 테라폼 사용 시작하기
9.3 AWS에서 S3 백엔드 사용하기
9.4 GCP를 위한 테라폼 사용 시작하기
9.5 GCP에서 구글 클라우드 스토리지(GCS) 백엔드 사용하기
9.6 구글 클라우드 쉘에서 테라폼 실행하기
CHAPTER 10 도커와 쿠버네티스 배포에 테라폼 사용하기
10.1 기술적 요구사항
10.2 테라폼을 사용해서 도커 컨테이너 만들기
10.3 테라폼을 사용해서 쿠버네티스 리소스 배포하기
10.4 테라폼을 사용해서 헬름 차트를 쿠버네티스에 배포하기
10.5 테라폼 동기화 루프로 쿠버네티스 컨트롤러 사용하기
CHAPTER 11 테라폼 구성에 대한 테스트 및 컴플라이언스 검사하기
11.1기술적 요구사항
11.2 파워쉘의 Pester 프레임워크르 사용해서 테라폼 테스트하기
11.3 파이썬을 사용해서 테라폼 구성 테스트하기
11.4 OPA를 사용해서 테라폼 구성 확인하기
11.5 tfsec을 사용해서 테라폼 구성의 컴플라이언스 분석하기
11.6 terraform-compliance를 사용해서 테라폼 컴플라이언스 적용하기
11.7 테라테스트를 사용해서 테라폼 모듈 테스트하기
11.8 Kitchen-Terraform을 사용해서 테라폼 구성 테스트하기
11.9 새로운 테라폼 모듈 통합 테스트 사용하기
CHAPTER 12 테라폼 심층 분석
12.1 기술적 요구사항
12.2 리소스 삭제 방지하기
12.3 수동 변경 무시하기
12.4 테라폼 템플릿 기능 사용하기
12.5 테라폼으로 다운타임없이 배포하기
12.6 테라그런트를 사용해서 테라폼 구성의 의존성 관리하기
12.7 테라폼을 감싸는 래퍼로써 테라그런트 사용하기
12.8 테라폼을 사용해서 자체 서명 인증서 생성하기
12.9 깃 훅을 사용해서 테라폼 구성을 커밋하기 전에 확인하기
12.10 로버(Rover)를 통해 테라폼 리소스 의존성 시각화하기
12.11 개발자용 테라폼 CDK 사용하기
CHAPTER 13 CI/CD 파이프라인을 통해 테라폼 실행 자동화하기
13.1 자동화 모드에서 테라폼 실행하기
13.2 terraform plan의 실행 요약 표시하기
13.3 애저 파이프라인에서 테라폼 구성을 적용하기 위한 CI/CD 파이프라인 구축하기
13.4 깃허브 액션에서 테라폼 실행 자동화하기
13.5 CI/CD에서 워크스페이스를 통해 작업하기
13.6 애저 파이프라인에서 테라폼 모듈을 위한 CI/CD 파이프라인 구성하기
13.7 깃허브 액션을 사용해서 테라폼 모듈을 게시하는 워크플로우 구축하기
CHAPTER 14 테라폼 클라우드를 사용해서 협업 향상하기
14.1 기술적 요구사항
14.2 테라폼 클라우드에 인증하기
14.3 테라폼 클라우드에서 워크스페이스 관리하기
14.4 테라폼 클라우드에서 원격 백엔드 사용하기
14.5 테라폼 클라우드로 테라폼 상태 이전하기
14.6 테라폼 클라우드를 비공개 모듈 저장소로 사용하기
14.7 테라폼 클라우드에서 테라폼 구성을 원격으로 실행하기
14.8 테라폼 클라우드에서 OPA를 사용해서 테라폼 구성의 컴플라이언스 확인하기
14.9 클라우드 리소스에 대한 통합 비용 추정 사용하기
14.10 테라폼 클라우드 실행 중 인프라코스트 실행 작업 통합하기
14.11 TFE 프로바이더를 통해 테라폼 클라우드 구성하기
CHAPTER 15 테라폼 에러 트러블 슈팅
15.1 보간 에러 수정하기
15.2 의존성 순환 에러 수정하기
15.3 for_each 에러 수정하기
15.4 출력 에러 수정하기
부록 A 테라폼 치트 시트
부록 B 테라폼 리소스
저자소개
출판사리뷰
이 책은 코드형 인프라의 핵심 개념과 테라폼을 통한 인프라 자동화를 포괄적으로 다룬 책입니다. 저자는 테라폼의 설치부터 시작하여 구성 작성, CLI 사용, 모듈 활용 등 기본적인 내용을 체계적으로 설명합니다. 특히 애저, AWS, GCP에서의 실제 적용 사례와 쿠버네티스와의 통합 방법을 통해 실질적인 활용 능력을 배양할 수 있도록 돕습니다.
테라폼의 고급 사용법을 다루는 부분에서는 테스트, CI/CD 파이프라인 통합, 협업 플랫폼인 테라폼 클라우드 사용법 등을 상세히 설명하여, 독자가 더욱 효율적으로 테라폼을 활용할 수 있도록 안내합니다.
이 책은 실제 예제와 실습을 통해 독자가 직접 경험하고 이해할 수 있도록 구성되어 있으며, 다양한 도구와의 통합 사례도 제공하여 실무에 바로 적용할 수 있는 지식을 전달합니다.
코드형 인프라와 데브옵스 문화에 관심 있는 모든 전문가에게 필수적인 이 책은, 특히 테라폼을 통해 인프라 자동화를 구현하려는 개발자와 운영자, 데브옵스 엔지니어에게 큰 도움이 될 것입니다. 실용적인 접근 방식과 풍부한 예제를 통해, 독자가 테라폼을 활용한 인프라 구축을 제대로 배울 수 있도록 도와줍니다.
옮긴이의 말
특히 이 책의 가장 큰 장점은 테라폼 그 자체에 집중하고 있다는 점입니다. 대부분의 테라폼 관련 자료들이 AWS, GCP, 애저 등 특정 클라우드 서비스에 초점을 맞추는 반면, 이 책은 테라폼의 핵심 개념과 기능을 깊이 있게 다루고 있습니다. 이를 통해 독자들은 테라폼의 다양한 기능을 충분히 경험하고 활용할 수 있을 것입니다.
이 책을 통해 테라폼을 처음 접하는 분들은 기본기를 탄탄히 다질 수 있을 것이며, 이미 테라폼을 사용하고 있는 분들도 보다 효율적이고 재미있게 테라폼을 활용할 수 있는 방법을 배울 수 있을 것입니다. 번역 과정에서 제가 겪었던 어려움과 성장을 고스란히 담아낼 수 있었던 만큼, 이 책이 많은 분들에게 큰 도움이 되기를 바랍니다. 테라폼을 처음 배울 때의 제 경험처럼, 이 책이 독자 여러분께도 유익한 길잡이가 되었으면 합니다.
【 대상 독자층 】
- 코드형 인프라에 대한 기술 역량을 향상시키고 싶은 개발자
- 데브옵스 엔지니어