IaC/Terraform

[Terraform] Configuration file과 HCL

dhyuck 2022. 8. 8. 22:01
반응형

Terraform & Configuration file

  • 테라폼은 IaC(Infra as a Code) Tool로 구성 파일(configuration file)선언적(declarative)으로 작성함으로서 인프라를 관리 할 수 있게 해줍니다.
  • 구성 파일은 테라폼에게 설치할 플러그인, 생성할 인프라, 가져올 데이터 등을 알려줍니다.
  • 구성 파일은 테라폼 네이티브 언어인 HCL(Hashicorp Configuration Language)JSON으로 작성 할 수 있습니다. 각각 .tf, .tf.json의 확장자를 갖으며 평문(plain text)으로 저장됩니다.
  • 테라폼은 CDKTF(Cloud Development Kit for Terraform)을 지원합니다. Typescript, Python, Java, Go, C#으로 인프라를 정의하면 CDKTF는 JSON으로 작성된 테라폼 구성 파일로 변환합니다.

HCL(Hashicorp Configuration Language)

  • HCL은 ArgumentsBlocks이라는 2가지 중심 구문(key syntax)으로 이루어져 있습니다.

  • Arguments

    • 일종의 Attribute를 의미합니다.

      image_id = "abc123"
  • Blocks

    • 블럭은 다른 컨텐츠의 컨테이너로 Blcok Type과 Block Type에 따른 Block Label으로 구성됩니다.

    • 블럭의 본문(Block body){, }로 구분되며 Arguments과 Blocks이 중첩되어 있을 수 있습니다.

      <BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
      # Block body
      <IDENTIFIER> = <EXPRESSION> # Argument
      <NESTED BLOCK> {
          <IDENTIFIER> = <EXPRESSION> # Argument
      }
      }
    • Block Type은 resource, data, provider, terraform, variable 등이 될 수 있습니다.

Style Conventions

  • 테라폼은 다른 사용자가 작성한 파일이나 모듈관의 일관성을 위해 권장되는 스타일 컨벤션(style conventions)이 존재합니다. terraform fmt를 실행하면 스타일 컨벤션을 손쉽게 적용할 수 있습니다.

참고

Overview - Configuration Language | Terraform by HashiCorp

반응형