전체 글 794

테라폼 시리즈 31편. for_each를 활용한 반복문

영상: https://youtu.be/fhgGcC7wJoc for_each란? for-each는 반복(for)을 할 때 타입 값에 대해 하나하나 each object로 접근한다는 의미입니다. each object는 key, value 2개의 속성을 가지고 있습니다. each object로 접근한다는 의미가 이해하기 어려운데요. each object를 json과 비교해서 이해하면 쉽습니다. json은 key, value들의 집합입니다. value에 접근하기 위해 key를 사용합니다. 아래 world라는 값에 접근하기 위해 a[”hello”]로 접근합니다. json에서 key를 이용하여 value를 접근한 것처럼 테라폼 each object도 key로 value를 얻을 수 있습니다. 하지만 for_each는..

연재 시리즈 2022.11.18

테라폼 시리즈 30편. count를 이용한 반복문

영상: https://youtu.be/xOSshyyJoZk 사용방법 meta-argument 중 count는 block을 count 값 만큼 반복합니다. 아래 예제에서 EC2 instace가 2대 생성됩니다. count가 2개로 설정되어서 2대 생성됩니다. resource "aws_instance" "server" { count = 2 ... } 예제 아래 예제에서 EC2 instace가 2대 생성됩니다. count가 2개로 설정되어서 2대 생성됩니다. 예제코드 링크: https://github.com/sungwook-practice/terraform-study/tree/main/week5/for-loop/count-meta-argument provider "aws" { region = "ap-north..

연재 시리즈 2022.11.14

테라폼 시리즈 28편. Terraform console

테라폼 console은 대화형(interactive command-line) 콘솔입니다. 테라폼 특정 문법을 실시간으로 테스트할 때 사용합니다. 실행방법 terraform console 명령어를 입력하면 콘솔로 진입합니다. terraform console 변수선언 테라폼 콘솔은 python, nodejs 등 다른 프로그래밍 언어 콘솔과 다르게 콘솔에서 변수 선언이 안됩니다. 변수를 사용하려면 local/var block 사용해야 합니다. var/local block은 테스트하고 싶은 변수를 tf파일에 작성하면 됩니다. locals { map = { a = 1 b = 2 c = 3 } } variable "test" { type = map(any) default = { a = 1 b = 2 c = 3 } ..

연재 시리즈 2022.11.14

테라폼 시리즈 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

운전면허 온라인 갱신

정부에서 운전면허 갱신하라고 문자가 왔습니다! 운전면허를 취득 후 한번도 운전을 안했지만... 갱신을 안하면 벌칙금이 있다고 들어 갱신을 하기로 했습니다. 시간과 장소 제약이 없는 온라인으로 갱신했습니다. 온라인에서 주의사항은 최근 2년이내 국민건강보험공단 건강검진 자료가 꼭 필요합니다. 온라인 발급신청이 끝나면 주변 경찰서 또는 운전면허시험장에서 수령할 수 있습니다. 준비 운전면허 규격 증명사진 최근 2년이내 국민건강보험공단 건강검진 자료 온라인 뱅킹 또는 계좌이체 갱신방법 1. "안전운전 통합민원" 홈페이지를 방문합니다. 홈페이지 링크: https://www.safedriving.or.kr/main.do 2. 홈페이지 상단 "운전면허증(모바일) 발급"버튼을 클릭합니다. 그리고 "1종 보통 적성검사" ..

일상생활 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