Today
-
Yesterday
-
Total
-


  • [TF]HCL 기초문법
    DevOps/Terraform 2021. 12. 19. 00:27

    HashiCorp Configuration Language(HCL)

    Terraform 파일은 HashiCorp에서 만든 언어인 HCL을 사용하고 있다.

    파일과 디렉토리로 구성되었고 UTF-8을 사용한다.

    Terraform 형식 .tf와 JSON 형식인 .json을 모두 사용 가능하다

    보통 작성할 때는 Terraform 형식으로 많이 사용하는데 사람이 읽기 좋은 구조로 되어 있고 주석도 사용이 가능하기 때문이다.

    주석

    라인 주석 #, // 사용하고 여러 라인 주석은 /*, */를 사용한다.

    Style Conventions

    Terraform에서 권장하는 작성 규약이 있다.

    ami           = "ami-example"
    instance_type = "t2.micro"

    1. = 열을 맞춰서 작성

    2. 들여쓰기를 Tap이 아닌 Space 2개로 사용

    3. 명령어 terraform fmt를 사용하여 규약에 맞게 코드 정렬을 사용할 수 있다.

    Block의 종류

    • resource : 생성할 인프라 자원
      • ex) aws_iam_group, aws_iam_user
    • provider : Terraform으로 정의할 Infrastucture Provider를 의미
      • ex) AWS, GCP, Azure, Kubernetes
    • module : 공통적으로 활용할 수 있는 인프라 코드를 한 곳에서 정의하는 부분
    • Root Module과 Child Module이 존재한다.
    • 변수만 변경하여 동일한 리소스를 쉽게 생성 가능한 장점이 있다.
    • 3개의 디렉토리 A, B, C 가 있으면 C를 apply를 하면 C의 워크 스페이스는 Root module이 되고 A, B는 Child module이 된다.
    • locals : 지역 변수와 비슷하게 모듈 내에서 재사용 할 값을 정의, 모듈 내 리소스에 공통 태그를 지정할 때 유용하다.
    • data : provider에서 값을 가져오기 사용된다. ARN 파싱, JSON 구성, 다른 module의 output 값 접근 등 수많은 용도로 사용이 가능하다.
    • variable : 변수를 입력 받을 수 있다.
    • output : 인프라를 프로비저닝 한 후에 생성된 자원을 output 부분으로 출력할 수 있다. 추출한 부분은 remote state에서 활용할 수 있다.
    • remote state : VPC, IAM 등과 같은 공용 서비스를 다른 서비스에서 참조할 수 있다. tfstate파일이 저장되어 있는 backend 정보를 명시하면 terraform이 해당 backend에서 output 정보들을 가져온다.
    • backend : terraform의 상태를 정할 공간을 지정하는 부분 backend를 사용하여 현재 배포된 최신 상태를 외부에 저장하여 다른 사람과의 협업이 가능하다 대표적으로는 AWS S3가 있다.

     


    참조

    [1] https://www.terraform.io/language/syntax/style

    [2] https://blog.outsider.ne.kr/1259

    [3] https://techblog.woowahan.com/2646/

    'DevOps > Terraform' 카테고리의 다른 글

    [TF]Terraform 조건문  (0) 2021.12.21
    [TF]Terraform Count, Foreach  (0) 2021.12.19
    [TF]Terraform Variable & Local & Output  (0) 2021.12.19
    [TF] AWS Resource 생성  (0) 2021.12.19
    [TF]Terraform 기초 및 설치  (0) 2021.12.15

    댓글

www.devc4sh.com