Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[week3 tmi]Why HCL? #27

Open
zzu-yaaa opened this issue Oct 3, 2023 · 0 comments
Open

[week3 tmi]Why HCL? #27

zzu-yaaa opened this issue Oct 3, 2023 · 0 comments
Labels
documentation Improvements or additions to documentation

Comments

@zzu-yaaa
Copy link
Member

zzu-yaaa commented Oct 3, 2023

WHY HCL?

HCL (HashiCorp Configuration Language)

  • 인프라를 정의하고 구성하는데 사용되는 도메인 특화 언어
  • JSON, YAML 과 호환

사용하는 이유

  • 사람 친화적 & 기계 친화

    • 사람이 읽고 이해하기 쉬운 구문을 가지고 있음

    • 파이썬 VS HCL

      tmi3-1

    • JSON과 YAML 파일은 기계 친화적 언어에 가까움

      tmi3-2

      JSON - 구문이 길어지고 주석 지원 X

      YAML - 적응기간이 필요

  • 구성 관리의 유연성

    • JSON, YAML 파일보다 훨씬 유연한 구문을 가짐
    • EX) 변수, 함수
  • 확장 가능성

    • 여러 프로바이더 및 모듈을 함께 사용 가능
    • 다양한 클라우드 제공업체 및 서비스와 통합 가능

HCL Syntax

// 한줄 주석 방법1
# 한줄 주석 방법2

/*
다중
라인
주석
*/

locals {
  key1 =      "value1" // = 를 기준으로 키와 값이 구분되며
  key2     = "value2"  // = 양쪽의 공백 무시

  myStr = "TF ♡ UTF-8" // UTF-8 문자를 지원합니다.

  multiStr = <<FOO     // <<EOF 같은 여러줄의 스트링을 지원합니다.
  Multi
  Line
  String
  with <<ANYTEXT
  FOO                  // 앞과 끝 문자만 같으면 됩니다.
  
  boolean1 = true      // boolean true
  boolean2 = false     // boolean false를 지원합니다.

  deciaml = 123        // 기본적으로 숫자는 10진수,
  octal = 0123         // 0으로 시작하는 숫자는 8진수,
  hexadecimal = "0xD5" // 0x 값을 포함하는 스트링은 16진수,
  scientific = 1e10    // 과학표기 법도 지원합니다.

  //funtion 들이 많이 준비되어있습니다.
  myprojectname = format("%s is myproject name", var.project)
  //인라인 조건문도 지원합니다.
  credentials = var.credentials == "" ? file(var.credentials_file) : var.credentials
}
@zzu-yaaa zzu-yaaa added the documentation Improvements or additions to documentation label Oct 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant