연재 시리즈 165

테라폼 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

테라폼으로 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

테라폼 t102 스터디 - precondition/postcondition

안녕하세요. 이 글은 테라폼 t102스터디 1주차에 공부했던 내용을 정리했습니다. 커스텀 조건문 테라폼은 커스텀 조건문(custom condition)이라는 조건을 사용하여, 테라폼 코드 작성자가 의도한대로 동작하도록 도와줍니다. 조건이 맞지 않는다면 테라폼 동작을 중지시키고 에러메세지를 출력합니다. 커스텀 조건문을 소개한 이유는, 이번 글의 주제인 precondition과 postcondition이 커스텀 조건문이기 때문입니다. 3항 연산자와 커스텀 조건문 차이 테라폼 조건문은 3항연사로 구현합니다. 커스텀 조건문과 동일하게 조건을 검사하지만, 조건이 만족하지 않을 때 3항 연산자와 커스텀 조건문은 동작이 서로 다릅니다. 3항 연산자는 조건이 만족하지 않으면 테라폼 block이 생성되지 않고 에러는 발..

연재 시리즈 2023.07.09

테라폼으로 EKS만들기 프로젝트 4-2편 - VPC tag설정(Block 인자)

이번 챕터는 테라폼 block argument가 무엇인지 학습하고 vpc tag Name을 실습합니다. 이전 챕터 부족한점 VPC가 여러개 있는 경우, vpc tag의 Name을 설정하여 vpc를 구별합니다. 이전 챕터에서 만든 vpc는 Name이 없습니다. 그래서 vpc 식별이 어렵습니다. vpc 식별을 위해, 테라폼 코드에 tag Name을 추가해야 합니다. tag Name은 block 인자(Argument)로 설정합니다. 예제코드 다운로드 예제 코드는 git repo에 공개되어 있습니다. vpc_with_tag폴더가 이번 챕터 예제 코드입니다. git clone https://github.com/choisungwook/terraform_practice.git example cd example/vpc..

연재 시리즈 2023.07.04

테라폼으로 EKS만들기 프로젝트 4-1편 - VPC생성

지금까지 어렴풋이 테라폼 동작을 이해했습니다. 이제 드디어 테라폼을 사용하여 EKS를 생성할 차례입니다. 안타깝지만 EKS를 바로 만들지 못합니다. 먼저 EKS가 동작하는 네트워크 환경을 만들어야 합니다. 네트워크 환경에는 VPC, 서브넷, NAT 게이트웨이 등을 구성해야 합니다. 이번 챕터부터 VPC부터 시작하여 서브넷 등을 테라폼코드로 작성합니다. 아키텍처 이번 챕터는 VPC를 생성합니다. cidr은 10.0.0.0/16을 사용합니다. 전제조건 AWS access key, secret key가 필요합니다. 예제코드 다운로드 예제 코드는 git repo에 공개되어 있습니다. vpc폴더가 이번 챕터 예제 코드입니다. git clone https://github.com/choisungwook/terrafo..

연재 시리즈 2023.07.03

테라폼으로 EKS만들기 프로젝트 3-4편 - 테라폼 코드 실행 순서

영상: https://youtu.be/69rHkicuM_E 테라폼 코드 실행 순서 테라폼은 코드를 분석하여 코드 실행순서를 설정합니다. 코드 실행 선후관계가 없다면 코드는 병렬로 동시 실행됩니다. 반대로 선후관계가 있는 코드는 순서대로 실행됩니다. 실행 순서 원리 테라폼은 코드 실행순서를 종속성 그래프(resource dependency graph)로 표현합니다. 종속성 그래프는 terraform graph명령어로 생성할 수 있고 graphviz뷰어로 볼 수 있습니다. 예제 예제를 실습하면서 테라폼 종속성 그래프를 만들어보겠습니다. 예제는 git 저장소에 dependency폴더에 있습니다. git clone https://github.com/choisungwook/terraform_practice.git..

연재 시리즈 2023.07.02

테라폼으로 EKS만들기 프로젝트 3-3편 - 테라폼 버전 설정

영상: https://youtu.be/9Kt-m7_5g58 테라폼 버전마다 테라폼 동작이 다릅니다. 다른 사람과 협업 시 서로 다른 테라폼 버전을 사용하면, 예상치 못한 장애가 발생할 수 있습니다. 그러므로 테라폼 코드에 버전을 명시하는 것이 좋습니다. 테라폼 버전은 terraform block에서 설정합니다. 아래 예제는 테라폼 1.4버전 이상만 실행하도록 설정했습니다. terraform { required_version = ">= 1.4" } 테라폼 1.4버전 아래인 0.13버전을 사용하면, 테라폼 명령어 실행시 오류가 발생합니다.

연재 시리즈 2023.06.27

테라폼으로 EKS만들기 프로젝트 3-2편 - 테라폼 동작원리

이 글은 테라폼이 어떻게 동작하는지 설명합니다. 3편에서 실행했던 hello world예제를 참고합니다. ▶ 테라폼 동작원리 유투브 영상: https://youtu.be/47FJVP437nk 1. 동작원리 테라폼은 코드를 읽어 코드가 실행가능한지 분석합니다. 이 후, 대상에서 지원하는 API를 사용하여 코드를 대상에 반영합니다. 테라폼 내부(아키텍처)는 테라폼 공식문서에서 설명합니다. 테라폼은 코어와 플러그인으로 구성되어 있습니다. ① 코어는 테라폼 코드를 읽어 코드 문법검사와 실행 순서를 결정합니다. 실행 순서 형태를 리소스 종속성 그래프(resource dependency graph)라고 부릅니다. ② 코어는 테라폼 코드 실행을 플러그인에게 요청합니다. ③ 플러그인은 provider 설정을 읽어 적절..

연재 시리즈 2023.06.24