- 포스팅에서는 주로 IaC 도구중에서 terraform을 위주로 다룰 것이다.
- terraform은 provider agnostic 하다, 즉 프로바이더에 의존하지 않는다. terraform은 GCP, AWS, Azure 등의 프로바이더를 지원한다. AWS 프로바이더를 사용하면 AWS 인프라를 관리할 수 있다는 뜻이다.
- terraform의 registry에 들어가면 크게 providers와 modules로 나뉘는데 providers은 말 그대로 AWS, GCP, k8s 같은 프로바이더를 말한다. module은 예를 들어 Open VPN을 AWS EC2 환경에서 사용할 때 AWS 인스턴스, 보안 그룹, EBS 볼륨 등의 설정이 있는데 이러한 것들을 하나로 모아서 모듈처럼 활용하는 것이다.
- providers의 AWS 탭에 들어가면 관련 git 소스코드 링크와 어떻게 사용하는지에 대한 Documentation이 있다.
- 아래와 같이 Use Provider를 누르면 terraform에서 어떻게 AWS를 사용하는지 알 수 있다.
- 아래는 module 탭이다.
- 또한 terraform을 처음 사용하는 사람을 위한 인트로도 잘 정리되어 있으니 참고하자. 이제 terraform을 설치해보자. 먼저 링크에서 OS에 맞게 terraform을 설치한다.
- terraform은 워크스페이스 단위로 생성된다. 워크스페이스가 한 프로젝트 단위라고 생각하면 된다. 인프라는 버전관리가 중요한데, 변경사항을 나타내기 위해 상태(state)가 존재한다. 즉 워크스페이스가 버전 단위라고 생각하면 편하다.
- 이제 프로바이더를 선택해보자. 여기서는 테스트를 위해 local 프로바이더를 선택할 것이다. 모든 프로바이더는 크게 "terraform" 설정 블록과 "provider" 설정 블록으로 나뉜다. "terraform" 블록에서는 해당 프로바이더의 버전을 명시하고 만약 버전을 명시하지 않으면 자동으로 최신버전으로 간주한다.
- 또한 프로바이더 왼쪽을 보면 Resources, Data Sources라고 적혀있는 것이 있다. 간단하게 Resources는 인프라구성에 필요한 데이터를 쓰는(W) 용도이고, Data Sources는 데이터를 읽는(R) 용도라고 생각하면 된다.
'IaC' 카테고리의 다른 글
코드를 통한 인프라 관리 #4 (0) | 2023.06.01 |
---|---|
코드를 통한 인프라 관리 #3 (0) | 2023.05.31 |
코드를 통한 인프라 관리 #1 (0) | 2023.05.25 |