-
Terraform 작동 방식 ✨DevOps/Terraform 2021. 7. 16. 00:29
Terraform은 인프라를 안전하고 효율적으로 구축, 변경, 관리하기 위한 도구입니다.
Terraform은 논리적으로Terraform Core
와Terraform Plugin
의 두 가지 주요 부분으로 나뉩니다 .Terraform Core
는 RPC(원격 프로시저 호출)를 사용하여Terraform Plugin
과 통신하고 사용할 플러그인을 검색하고 로드하는 다양한 방법을 제공합니다.Terraform 플러그인의 중요성과 확장성을 모두 이해하려면 Terraform의 아키텍처를 이해하는 것이 중요합니다.
🎈Terraform Core
Terraform Core
는 Go 프로그래밍 언어로 작성된 정적으로 컴파일된 바이너리입니다. 컴파일된 바이너리는 Terraform을 사용하는 모든 사람을 위한 진입점인 명령줄 도구(CLI) 입니다.Terraform Core
는 구성을 읽고 종속성 그래프를 작성하는 역할을 합니다.Terraform Core의 역할
- 코드로서의 인프라: 구성 파일 및 모듈 읽기 및 보간
- 리소스 상태 관리
- 리소스 그래프 구성
- 계획 실행
- RPC를 통한 플러그인과의 통신
🎈Terraform Plugin
Terraform 플러그인
은 외부 단일 정적 바이너리입니다. Plan 및 Apply 단계에서Terraform Core
는 RPC 인터페이스를 통해 이러한Terraform 플러그인
과 통신 합니다.Terraform Provider 플러그인
은 타사 서비스와 통신하기 위한 기본 CRUD (생성, 읽기, 업데이트 및 삭제) API를 사용하여 리소스를 구현합니다.Terraform Provider Plugins 역할
- API 호출에 사용되는 포함된 라이브러리의 초기화
- 인프라 제공자를 통한 인증
- 특정 서비스에 매핑되는 리소스 정의Terraform Provisioner Plugins 역할
- 생성 후 또는 파괴 시 지정된 리소스에서 명령 또는 스크립트를 실행합니다.
🎈Upstream APIs
Upstream API
는 Terraform이 상호 작용하는 타사, 외부 서비스 또는 API입니다.Terraform Core
는 이러한 API와 직접 상호 작용하지 않습니다. 대신Terraform Core
는Terraform Provider
에 작업을 수행하도록 요청하고 플러그인은 업스트림 API와 통신합니다.Terraform Core
는 API 뉘앙스에 대해 알 필요가 없고Terraform Provider Plugins
는 그래프 이론에 대해 알 필요가 없습니다.정리하면,
Terraform Provier 플러그인
자체는 기본 CRUD 작업에 대해서만 업스트림 API를 호출한다는 점에 유의 하는 것이 중요하다. Terraform 구성 로딩, 그래프 등과 관련된 어떤 것도 전혀 알지 못합니다.Terraform 플러그
인 제공자와Terraform Core
간의 분리 때문에 , 제공자에게 필요한 작업은 더 간단하며 클라이언트 라이브러리의 추상화일 뿐입니다.🎈Terraform 오류
앞에서 Terraform 작동 방식에 대해서 알아보았습니다.
Terraform 아키텍처를 이해함으로써 어떤 포인트에서 에러가 발생했는지 조기에 발견 하여 신속한 조치가 가능합니다. 추가로 Terraform에서 발생할 수 있는 오류에 대해 살펴 보도록 하겠습니다.Terraform에서 발생할 수있는 잠재적인 문제 유형에는 언어, 상태, 핵심, 공급자 오류의 4가지가 있습니다.
Terraform troubleshooting model Terraform troubleshooting model
- Language Error :
- Terraform의 기본 인터페이스는 선언적 구성 언어 인 HCL (HashiCorp 구성 언어)입니다.
- Terraform 핵심 애플리케이션은 구성 언어를 해석합니다.
- Terraform이 구성에서 구문 오류를 발견하면 줄 번호와 오류 설명을 출력합니다.
2. State Error :
- Terraform 상태 파일은 프로비저닝 된 리소스에 대한 정보를 저장합니다.
- 리소스를 구성에 매핑하고 모든 관련 메타 데이터를 추적합니다.
- 상태가 동기화되지 않은 경우 Terraform은 기존 리소스를 파괴하거나 변경할 수 있습니다.
- 리소스를 새로 고치거나 가져 오거나 교체하여 구성이 동기화되었는지 확인합니다.
3. Core Error :
- Terraform 핵심 애플리케이션에는 작업에 대한 모든 논리가 포함되어 있습니다.
- 구성을 해석하고, 상태 파일을 관리하고, 리소스 종속성 그래프를 구성하고, 공급자 플러그인과 통신합니다.
- 이 수준에서 생성 된 오류는 버그 일 수 있습니다.
4. Provider Error :
- 공급자 플러그인은 인증, API 호출 및 서비스에 대한 리소스 매핑을 처리합니다.
🎈Reference
How Terraform Works : https://www.terraform.io/docs/extend/how-terraform-works.html
'DevOps > Terraform' 카테고리의 다른 글
[IaC] Terraform 모범 사례 & 컨벤션 💫 (1) 2021.06.11