0421 Terraform

Ada·2022년 4월 21일
0

Playdata-Cloud

목록 보기
13/21

테라폼

▪ HashiCorp 사의 코드형 인프라스트럭처(Infrastructure as Code) 도구
▪ 클라우드, 물리 시스템, VM, 네트워크 장비, 컨테이너 등 인프라의 자동화된 배포,
변경 및 관리를 제공
▪ 사람이 쓰고 읽을 수 있고 자동화된 배포를 위해 HCL(HashiCorp Configuration
Language)이라는 구성 파일로 작성하고 인프라, 플랫폼 및 소프트웨어를 관리할 수
있음
▪ 구성 파일은 단일 애플리케이션 또는 인프라 전체를 실행하는데 필요한 구성 요소를
선언
▪ 관리자가 원하는 상태에 도달하기 위해 수행 할 작업을 선언하고, 실행 계획을 생성 한
다음 이를 실행하여 정의된 인프라를 구성
▪ 기존의 구성이 변경되어야 한다면 변경된 사항을 확인하고 적용할 수 있는 증분 실행
계획을 적용
▪ 프로바이더(Provider)의 API와 상호작용하며 리소스를 배포 및 관리

[테라폼 의 주요 기능]

▪ 코드형 인프라

  • Terraform은 HCL 구성 파일로 정의하며, 이를 통해 인프라의 구성을 코드화하고 버전 관리를
    통해 관리할 수 있다. 또한 이런 코드를 재사용하고 공유할 수 있음

▪ 실행 계획

  • Terraform은 구성 파일에 정의된 리소스를 실제 배포하기 전에 "계획" 단계를 통해 수행 할
    작업을 미리 확인할 수 있음

▪ 리소스 종속성

  • Terraform은 구성 파일에 정의된 모든 리소스의 종속성을 확인하고 비 종속적인 리소스의
    생성을 병렬화 함

▪ 변경 자동화

  • 리소스의 종속성을 통해 리소스가 어떤 순서로 변경되는지 정확히 알 수 있으며, 이는 사람이
    직접 구성함으로써 발생하는 오류를 방지함

[구성 파일 및 디렉토리]

▪ 파일 확장자

  • Terraform 구성 파일은 .tf 또는 JSON 기반의 Terraform 구성 파일인.tf.json 을 사용

▪ 텍스트 인코딩

  • 구성 파일은 UTF8 인코딩을 사용하며 Unix 스타일의 줄바꿈인 LF를 사용하지만 Windows
    스타일의 줄바꿈인 CRLF도 허용

▪ 디렉토리

  • Terraform은 현재 작업 디렉토리의 모든 구성 파일을 읽어 하나의 문서로 처리
  • 단일 구성 파일을 정의하거나 여러 구성 파일을 분리하여 정의하는 것은 사용자의 편의를 위한
    것이며 동작에는 영향을 미치지 않음

[구성 파일 기본]

▪ 구성 파일은 인프라의 리소스를 정의하는 것이 주요 목적

▪ 구성 파일에는 프로바이더(Provider), 프로바이더 요구사항, 리소스 등을 정의
▪ 구성 파일의 블록 정의

  • BLOCK_TYPE: 여러 블록 형식이 있지만 일반적으로 리소스 형식을 정의
  • BLOCK_LABEL: 블록 형식에 따라 블록 레이블은 0개 이상 있을 수 있음
  • ARGUMENT: 블록의 구성 정보를 정의

[프로바이더 요구사항 (옵션)]

▪ Terraform은 프로바이더 플러그인을 사용하여 원격 시스템(클라우드 등)과 상호작용
▪ 프로바이더 요구사항을 정의해 필요한 프로바이더 및 버전을 지정

▪ 프로바이더는 리소스를 관리
▪ 모든 리소스의 유형은 프로바이더에 의해 구현

[구성 파일 규칙 및 검증]

▪ Terraform 구성 파일의 문법 및 스타일은 어느 정도 유연성을 가지고 있음
▪ 하지만 팀의 다른 사람이 작성한 파일 및 모듈간에 스타일 및 규칙을 일관성있게
유지하는 것이 유리

  • 각 중첩 레벨에 대해 두 개의 공백을 가짐

  • 여러 속성이 동일 레벨에 있는 경우 등호를 정렬함

  • 블록을 구분할 때 빈 줄 하나를 삽입

  • 블록 내에서 속성의 논리적인 그룹을 빈 줄로 분리

  • 속성과 메타 속성이 모두 포함된 블록의 경우, 메타 속성을 먼저 나열하고,

  • 빈 줄로 다른 속성과 분리

  • 최상위 블록은 항상 하나의 빈 줄로 서로 분리

  • 동일한 유형의 여러 블록을 다른 유형의 다른 블록과 분리하지 않음

profile
백엔드 프로그래머

0개의 댓글