728x90
안녕하세요, 오늘은 테라폼에 대해서 정리한 내용을 가지고 포스팅합니다.
‘테라폼으로 시작하는 IaC’를 기준으로 내용 정리하였으며, cloudnet의 테라폼 스터디 내용을 기반으로 하고 있습니다.
1. 테라폼이란?
테라폼(Terraform)은 인프라스트럭처를 코드로 관리하고 프로비저닝 하는 오픈 소스 도구입니다.
HashiCorp에 의해 개발되었으며, 클라우드 서비스, 가상 머신, 스토리지 등 다양한 서비스에 대한 관리를 자동화하는 데 사용됩니다.
테라폼을 사용하여 인프라의 구성을 코드로 작성하고, 코드를 사용하여 인프라를 생성, 변경 및 관리할 수 있습니다.
2. 테라폼의 구성
이 이미지는 테라폼의 인프라 관리 및 프로비저닝 프로세스를 나타내는 워크플로우를 보여줍니다.
워크플로우는 "Terraform Core"에서 시작하여 설정된 리소스 관리 명령을 "Terraform Provider"에 RPC(Remote Procedure Call) 방식으로 전송합니다. 그 후, "Terraform Provider"는 Golang으로 작성된 "Client Library"를 통해 "Target API"에 HTTP(S) 프로토콜을 사용하여 실제 클라우드 리소스를 관리(생성, 수정, 삭제)합니다.
자세한 용어 설명은 다음과 같습니다.
- Terraform Core: 테라폼의 핵심 컴포넌트로서, 인프라스트럭처의 구성과 상태 관리를 담당합니다. 이 컴포넌트는 인프라 관리의 중심적인 역할을 하며, 사용자가 작성한 설정 파일을 분석하고 실행 계획을 수립합니다.
- Terraform Provider: 테라폼 프로바이더는 테라폼 코어와 실제 클라우드 서비스나 서비스 프로바이더 간의 중개자 역할을 합니다. 각 프로바이더는 특정 기술이나 플랫폼 (예: AWS, Google Cloud, Azure 등)과의 상호작용을 가능하게 하며, 이러한 API 호출을 통해 인프라를 생성하거나 수정합니다.
- Terraform 플러그인 : 플러그인은 RPC 인터페이스를 통해 Terraform Core와 통신하는 Go로 작성된 실행 가능한 바이너리입니다. Terraform은 현재 공급자 라는 한 가지 유형의 플러그인을 지원합니다 .
각 공급자 플러그인은 AWS 공급자 또는 cloud-init 공급자 와 같은 특정 서비스 또는 도구에 대한 구현을 노출합니다. - Golang: Golang은 테라폼 프로바이더가 작성된 언어를 지칭하며, Go 언어를 사용하여 프로바이더가 개발되었다는 것을 나타냅니다. Go 언어는 동시성 처리와 빠른 실행 속도 때문에 시스템 프로그래밍에 적합합니다.
- Client Library: 클라이언트 라이브러리는 특정 API와의 상호작용을 단순화하는 역할을 합니다. 프로바이더는 이 라이브러리를 사용하여 구체적인 API 호출을 구성하고 실행합니다.
- HTTP(S): 이는 프로바이더와 타깃 API 간의 통신 프로토콜을 나타냅니다. 보통 HTTP 또는 HTTPS 프로토콜을 사용하여 보안 연결을 통해 데이터를 전송합니다.
- Target API: 타깃 API는 최종적으로 테라폼이 인프라 구성을 위해 상호작용하는 외부 서비스의 API입니다. 이 API를 통해 실제 리소스 생성, 수정, 삭제 등의 작업이 수행됩니다.
3. 테라폼 동작 방식
- Write:
- 인프라스트럭처를 정의하는 설정 파일을 작성하는 단계입니다. 테라폼 프로젝트 내에서 설정 파일과 상태 파일이 있습니다.
- Terraform Configuration: 사용자가 인프라의 구성을 정의하는 파일입니다.
- Terraform State File: 테라폼이 인프라의 현재 상태를 추적하는 데 사용하는 파일입니다.
- Plan:
- 작성된 설정에 따라 테라폼이 인프라에 어떤 변경을 할지 미리 보여주는 단계입니다. 여기서는 실제로 리소스를 생성, 수정, 삭제하기 전에 계획을 검토할 수 있습니다.
- 명령어 terraform plan을 실행하면 계획된 작업들이 출력됩니다.
- Apply:
- 계획된 변경사항을 실제 인프라에 적용하는 단계입니다. 이 단계에서는 설정 파일에 기술된 대로 클라우드 서비스나 다른 인프라 서비스에 리소스를 생성, 수정, 삭제합니다.
- Terraform Apply: 이 명령을 실행하면 테라폼이 인프라를 구성하고 상태 파일을 업데이트합니다.
- 다양한 프로바이더들과의 통합을 보여주는 아이콘들이 있습니다 (예: AWS, Google Cloud, Datadog 등). 테라폼은 1000개 이상의 다양한 프로바이더들과 호환됩니다.
728x90
반응형
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] 테라폼을 이용한 vpc 배포 (0) | 2024.06.23 |
---|---|
[Terraform] 테라폼으로 서브넷 생성하기 (0) | 2024.06.23 |
[Terraform] 테라폼 lifecycle의 precondition (0) | 2024.06.16 |
[Terraform] 테라폼을 활용한 EC2 웹 서버 배포 (0) | 2024.06.16 |
[Terraform] 테라폼으로 ec2 배포하기 (0) | 2024.06.16 |