ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Terraform 작동 방식 ✨
    DevOps/Terraform 2021. 7. 16. 00:29


    Terraform은 인프라를 안전하고 효율적으로 구축, 변경, 관리하기 위한 도구입니다.
    Terraform은 논리적으로 Terraform CoreTerraform Plugin의 두 가지 주요 부분으로 나뉩니다 .

    Terraform CoreRPC(원격 프로시저 호출)를 사용하여 Terraform Plugin과 통신하고 사용할 플러그인을 검색하고 로드하는 다양한 방법을 제공합니다.

    Terraform 플러그인의 중요성과 확장성을 모두 이해하려면 Terraform의 아키텍처를 이해하는 것이 중요합니다.

    🎈Terraform Core


    Terraform Core는 Go 프로그래밍 언어로 작성된 정적으로 컴파일된 바이너리입니다. 컴파일된 바이너리는 Terraform을 사용하는 모든 사람을 위한 진입점인 명령줄 도구(CLI) 입니다.

    Terraform Core는 구성을 읽고 종속성 그래프를 작성하는 역할을 합니다.

    Terraform Core의 역할

    • 코드로서의 인프라: 구성 파일 및 모듈 읽기 및 보간
    • 리소스 상태 관리
    • 리소스 그래프 구성
    • 계획 실행
    • RPC를 통한 플러그인과의 통신

     

    🎈Terraform Plugin


    Terraform 플러그인 은 외부 단일 정적 바이너리입니다. Plan 및 Apply 단계에서 Terraform CoreRPC 인터페이스를 통해 이러한 Terraform 플러그인과 통신 합니다.

    Terraform Provider 플러그인은 타사 서비스와 통신하기 위한 기본 CRUD (생성, 읽기, 업데이트 및 삭제) API를 사용하여 리소스를 구현합니다.

    Terraform Provider Plugins 역할

    • API 호출에 사용되는 포함된 라이브러리의 초기화
    • 인프라 제공자를 통한 인증
    • 특정 서비스에 매핑되는 리소스 정의Terraform Provisioner Plugins 역할
    • 생성 후 또는 파괴 시 지정된 리소스에서 명령 또는 스크립트를 실행합니다.

     

    🎈Upstream APIs


    Upstream API는 Terraform이 상호 작용하는 타사, 외부 서비스 또는 API입니다.
    Terraform Core는 이러한 API와 직접 상호 작용하지 않습니다. 대신 Terraform CoreTerraform 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

    1. 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

    댓글

작은거인's Blog / Designed by TISTORY