terraform 51

테라폼 시리즈 27편. HCL 언어 구조

테라폼 코드는 HCL라는 언어로 작성합니다. HCL은 Block이라는 기본단위를 사용합니다. 테라폼 코드는 Block단위의 집합입니다. Block의 설정(Body)은 Argument로 구성됩니다. Argument는 IDENTIFIER과 EXPRESSION으로 표현할 수 있습니다. 공식문서는 어렵게 설명되어 있는데, 단순하게 “필드이름”=”필드값”이라고 생각하면 됩니다. Argument 중에 특수한 기능을 담당하는 Argument는 Meta-Argument라고 부릅니다. Meta-arguments는 공식문서(https://developer.hashicorp.com/terraform/language)에서 찾을 수 있습니다.

연재 시리즈 2022.11.14

테라폼 시리즈 26편. terraform pre-commit

1. git pre-commit hook 1.1 개요 git hook pre commit은 커밋 메시지를 작성하기 전에 호출됩니다. 만약 종료(Exit)코드가 0이 아니면 사용자가 요청한 커밋은 취소됩니다. 민감정보 검사, lint검사 등 커밋을 하기 위한 필요조건을 검사할 때 사용할 수 있습니다. git init 또는 git clone을 하면 .git폴더가 생성됩니다. 그리고 .git/hooks폴더에 hook예제가 있습니다. 확장자 .sample을 제거하면 git hook이 동작합니다. cd .git/hooks ls 1.2 예제 git commit이 항상 실행되지 못하도록 pre-commit파일을 수정하겠습니다. pre-commit.sample파일에서 .sample확장자를 제거합니다. 그리고 파일 내용..

연재 시리즈 2022.11.12

테라폼 시리즈 25편. Module

module은 여러 테라폼 코드를 하나의 그룹으로 관리하는 방법입니다. 하나의 그룹은 폴더를 의미합니다. module의 장점은 재사용성입니다. 모듈은 여러 곳에서 import해서 사용할 수 있습니다. Module 생성방법 module 생성방법은 간단합니다. 폴더를 만든 후, 생성한 폴더에 테라폼 코드를 작성하면 됩니다. my-s3 module은 aws s3를 생성합니다. bucket이름을 입력받을 수 있도록 variable을 사용했습니다. # variable.tf variable "bucket_name" { description = "bucket name" type = string sensitive = true default = "akbun-t101-week4-local-example" } # s3.tf..

연재 시리즈 2022.11.10

테라폼 시리즈 24편. Local value

local value는 프로그래밍 언어 변수기능과 같습니다. 이름과 값을 설정하면 하나의 변수가 생성되고 테라폼 코드에서 변수를 참조하여 사용할 수 있습니다. 동일한 값을 여러 번 사용하거나 값에 이름을 부여하여 관리하고 싶을 때 local value를 사용하면 좋습니다. locals block으로 local value를 정의할 수 있습니다. local value는 local.으로 참조할 수 있습니다. provider "aws" { region = "ap-northeast-2" } locals { bucket_name = "akbun-t101-week4-local-example" } resource "aws_s3_bucket" "mys3bucket" { bucket = local.bucket_name }..

연재 시리즈 2022.11.10

테라폼 시리즈 23편. 레이아웃

레이아웃이란? 애플리케이션을 개발/운영을 나누듯이 인프라 환경도 개발/운영 등 분리해서 관리합니다. 인프라 환경을 분리함에 따라 테라폼 코드도 적절하게 구조를 만들어서 관리해야 합니다. 이 때, 코드 구조를 “레이아웃”이라고 부릅니다. 레이아웃 예시 레이아웃은 정답이 없습니다. 주어진 상황에 맞게 적절히 레이아웃을 만들면 되는데요. 이 글에서는 스터디에서 다룬 레이아웃을 소개합니다. 레이아웃은 크게 2종류로 분리할 수 있을 것 같습니다. 1. 최상위(root): 환경(개발, 스테이지)과 global리소스3(SS, IAM 등)로 분류했습니다. 2. 하위구성요소: 최상위 아래에는 모듈과 tf파일 집합으로 구성되어 있습니다. 예제 코드 github 링크: https://github.com/sungwook-pr..

연재 시리즈 2022.11.05

테라폼 시리즈 22편. Terraform Remote State Data Source

개요 terraform remote state는 원격 상태파일에 있는 값을 참조하는 방법입니다. 다른 팀이 작업한 리소스를 참조하거나 레이아웃을 여러 개 만든 상황에서 레이아웃끼리 리소스 참조 등에 사용할 수 있습니다. data block와 terraform_remote_state을 조합해서 원격상태파일을 가져올 수 있습니다. data "terraform_remote_state" "remote" { backend = "s3" config = { bucket = "..." key = "terraform.tfstate" region = "ap-northeast-2" } } 원격상태파일 값을 참조하려면 제공해주는 곳에서 output block을 선언해야 합니다. 예제 github 링크: https://gith..

연재 시리즈 2022.11.04