terraform 51

테라폼 data block을 강제로 써야하는 경우

테라폼 data block은 프로비저닝 즉, 리소스 생성/수정/삭제를 하지 않습니다. 이미 대상(예: AWS)에 프로비저닝된 리소스 상태를 HCL언어로 참조할 때 사용합니다. Data block은 참조기능이기 때문에 선택으로 사용하는데, 가끔씩 강제로 써야하는 경우가 있습니다. 내가 프로비저닝한 리소스가 자동으로 다른 리소스를 프로비저닝 하는 경우입니다. 대표적인 예가 AWS TGW유형의 Site to Site VPN입니다. VPN connection을 생성하면 자동으로 TGW attachment를 생성합니다.  TGW attachment는 자동으로 생성된 리소스여서 resource block을 사용하면 또 다른TGW attachment를 생성하게 됩니다. 이런 경우에 data block을 강제로 사용해..

테라폼 t102 스터디 - state

안녕하세요. 이 글은 테라폼 스터디에서 공부한 state를 정리했습니다. 영상: https://youtu.be/E2n3bZrzpKE 1. state란? 테라폼은 대상에 배포한 결과를 state로 관리합니다. 또한, 테라폼 실행 작업(생성/수정/삭제) 결정에 중요한 연할을 합니다. 예를 들어 state가 없으면 테라폼은 리소스 생성 작업을 실행합니다. 2. state 업데이트는 언제 될까? state는 테라폼이 실행된 후 생성됩니다. terraform CLI에서는 terraform apply를 실행한 후 state가 생성됩니다. 이미 state가 있다면 업데이트됩니다. state 업데이트 과정을 terraform refresh라고 부릅니다. 3. state 관리 3.1 state 포맷 state는 JSON..

연재 시리즈 2023.07.29

테라폼 t102 스터디 - 프로비저너(provisioner)

안녕하세요. 이 글은 테라폼 스터디 t102 3주차 내용을 정리했습니다. 1. 프로비저너란? 프로비저너(provisioner)는 테라폼 resource block기능 이외에 사용자 액션을 수행합니다. 예를 들어 resource block은 리소스를 생성/수정/삭제하는데 프로비저너를 사용하면, 리소스 작업 말고 API호출 등 사용자가 원하는 기능을 추가할 수 있습니다. 테라폼 공식문서에서 프로비저너 컨셉을 다음과 같이 설명합니다. "테라폼 모델이 표현하지 못하는 것들을 수행". 테라폼 모델이 표현하지 못한다는 의미는 테라폼 block 이외에 커스텀 기능은 수행하지 못한다는 의미로 해석할 수 있습니다. 2. 사용방법 프로비저너는 resource block에만 사용할 수 있습니다. resource block에..

연재 시리즈 2023.07.22

테라폼 t102 스터디 - dynamic block

안녕하세요. 이 글은 테라폼 t102스터디 2주차에 공부했던 내용을 정리했습니다. 1. dynamic block이란? dynamic block은 block 인자(argument)를 반복 생성합니다. count/for_each와 차이점은 반복 대상입니다. count/for_each는 block이 대상이지만, dynamic block은 block 인자가 대상입니다. 2. 사용방법 사용방법은 block 인자를 dynamic block으로 변경하면 됩니다. dynamic block body는 테라폼 변수(variable) 또는 local을 사용합니다. 아래 예제는 변수를 사용했습니다. ① 반복할 argument 값을 local 또는 variable로 정의(꼭 collection타입) ② argument를 dyn..

연재 시리즈 2023.07.15

t102 스터디 count vs for_each 영상 제작 회고

안녕하세요. 이 글은 테라폼 t102스터디 2주차에 공부했던 count와 for_each를 정리하면서, 느꼈던 점을 정리합니다. 영상을 만들게 된 이유 처음에는 스터디 내용을 글로 내용을 정리했습니다. 하지만, 글로 표현하기 어렵다는 느낌을 받아 영상으로 정리했습니다.유투브 영상에서는 count를 사용했을 때 만날 수 있는 장애를 재현했고, for_each로 장애를 해결하는 과정을 담았습니다. ※ 유투브 링크: https://youtu.be/enhSdIJ9xxQ 시나리오를 만드는 과정 테라폼 공식문서에서 언급한 것처럼 count는 인덱스로 접근하므로, 고유값(distinct values)을 보존해야 하는 경우 for_each가 안전하다고 표현합니다. 공식문서 설명을 참고하여 입문자가 이해하기 쉬운 시나리..

회고모음 2023.07.14

테라폼으로 EKS만들기 프로젝트 4-3편 - VPC 입력변수 설정

이번 챕터에서는 aws vpc cidr를 테라폼 변수로 설정합니다. 예제코드 다운로드 예제 코드는 git repo에 공개되어 있습니다. vpc_with_variable폴더가 이번 챕터 예제 코드입니다. git clone https://github.com/choisungwook/terraform_practice.git example cd example/vpc_with_variable 변수 정의방법 테라폼 변수는 variable block으로 정의합니다. block body에는 변수type만 설정하면 됩니다. 변수타입은 테라폼 공식문서에서 확인할 수 있습니다. 아래 예제는 vpc_cidr변수를 정의합니다. 변수타입은 string입니다. 변수타입은 공식문서를 참조했습니다. 변수 사용방법 정의한 변수를 테라폼 ..

연재 시리즈 2023.07.09