Terraform 12

Terraform - state file 관리 (with. Azure Storage Account)

안녕하세요.오늘은 테라폼 state 파일을 Azure Storage Account로 관리하는 방법에 대해 알아보겠습니다. # Terraform State 파일 이란? 테라폼은 상태 저장형 애플리케이션입니다. 코드로 선언한 인프라 상태와 실제 클라우드 인프라 상태를 비교해 리소스를 생성, 수정, 삭제하는 작업을 수행하는데이때 상태 파일을 기반으로 동작합니다. 상태 파일은 현재 관리되는 리소스의 상태를 기록한 핵심 데이터로서, 테라폼의 모든 배포 작업은 이 파일을 토대로 이루어집니다. 보통 혼자 테스트하는 환경이라면 로컬 PC에 저장을 합니다. 하지만 팀 단위로 테라폼을 활용하여 리소스를 관리한다면 원격 저장소에 공유하는 방식으로 관리합니다. 원격 저장소에 관리하는 방식은 굉장히 다양합니다. AWS의 S3가..

Terraform 2025.10.18

테라폼(Terraform) - 기존 리소스를 테라폼으로 with Terraformer

안녕하세요. 오늘은 기존에 배포되어 있던 리소스를 테라폼으로 관리하는 방법에 대해 포스팅하겠습니다. 처음에는 테라폼을 쓸 생각이 없었거나 기술이 부족하여 다른 방법을 통해 배포 하였다가 나중에 기회가 돼서 테라폼으로 옮기는 경우도 많다고 들었습니다. 이런 경우 Terraformer 와 같은 오픈 소스를 사용하는 것도 가능하고 테라폼 자체적으로 제공하는 Import도 사용 가능합니다. 다만 Terraformer는 소스 코드와 state 파일 까지 만들어주는 반면 Import는 state 파일만 가져오게 됩니다. # Import먼저 테스트를 위해 콘솔에서 EC2를 하나 배포하겠습니다. 인스턴스 시작을 눌러 하나 생성해 줍니다. 특별히 다른 설정은 안했고 이름 지정과 키 페어 사용하지 않음만 선택했습니다..

Terraform 2025.05.04

테라폼(Terraform) - Backend 관리 (Terraform Cloud, S3)

안녕하세요. 오늘은 테라폼 백엔드 관리에 대해 포스팅하겠습니다. # 테라폼 백엔드란? 백엔드는 크게 두 가지 역할을 합니다. 1. 상태 파일 저장 관리- 테라폼 실행 시 생성되는 terraform.tfstate 파일을 안전하게 저장2. 상태 잠금(State Locking)- 동시 작업 시 상태 파일의 무결성 유지- 여러 사용자가 동시에 상태를 수정하지 못하도록 잠금 기능 제공 이 테라폼 백엔드는 크게 Local 백엔드와 Remote 백엔드로 나눌 수 있습니다. 로컬 백엔드로컬 백엔드는 말 그대로 state 파일을 로컬에 저장하는 백엔드 설정입니다.주로 협업 목적이 아닌 테스트 환경에서 많이 사용됩니다. 아래 간단한 vpc 생성 코드를 `apply`해보겠습니다.terraform { required_..

Terraform 2025.04.27

테라폼(Terraform) - 함수 (flatten, try)

안녕하세요.오늘은 테라폼에서 자주 사용되는 함수들에 대해 포스팅하겠습니다.flattenflatten의 사전적 의미는 "납작하게 만들다" 입니다. `flatten`은 "2차원 map ,list ,object 를 하나의 납작한 1차원 List로 만들어주는 함수" 입니다.즉, 중첩된 데이터를 1차원 리스트로 만들어줍니다. * 참고로 `flatten`은 리스트만 반환합니다. map 또는 object로는 반환이 불가능합니다. locals { test_list = [[1, 2], [3, 4], [5]]}output "list" { value = local.test_list}output "flat_list" { value = flatten(local.test_list)} 출력 결과list = [[1,2],[3,..

Terraform 2025.04.13

테라폼(Terraform) - 반복문, 조건문 (count, dynamic, for, if)

안녕하세요. 오늘은 테라폼에서 사용되는 반복문과 조건문에 대해 포스팅하겠습니다. count`count`는 테라폼에서 정의하는 메타 인수로 모듈 및 리소스 블록과 함께 사용 가능한 반복문으로 정수를 입력받아 해당 정수 만큼의 리소스를 반복 생성합니다. variable "user_info" { type = list(string) default = ["1st_user","2nd_user","3rd_user"]}# user 생성resource "aws_iam_user" "user" { count = 3 name = var.user_info[count.index]}  위 코드는 `count`를 활용하여 IAM user를 생성하는 코드로 user 3개가 제대로 생성된 것을 확인 가능합니다.  코드에서..

Terraform 2025.04.12

테라폼(Terraform) - for_each란

오늘은 테라폼에서 사용되는 for_each에 대해서 포스팅하겠습니다. for_each란 `for_each`는 Terraform에서 동일한 리소스나 모듈을 여러 개 생성할 때 사용하는 메타 인수(meta-argument)입니다. * 메타 인수란 : Terraform에서 리소스나 모듈의 동작을 제어하기 위해 사용하는 특별한 인수입니다. 메타인수를 통해 리소스나 모듈을 반복, 조건부 로직으로 구현하는 것이 가능합니다.  `for_each`는 맵(map)이나 문자열 집합(set of strings) 또는 오브젝트(object)를 받아서, 해당 컬렉션의 각 항목마다 리소스나 모듈 인스턴스를 반복하여 실행가능합니다. 즉, ec2를 여러개 만들기 위해 ec2 리소스 블록을 굳이 여러개 사용할 필요 없이 for_eac..

Terraform 2025.04.06

테라폼(Terraform) - 데이터 타입

오늘은 테라폼 데이터 타입에 대해 포스팅해보겠습니다. 다른 언어와 마찬가지로 테라폼에도 다양한 변수 타입이 있습니다. 하나 하나 알아보겠습니다.  string# string 타입variable "var_string" { type = string default = "Hi"}output "output_test" { value = var.var_string}=======출력========output_test = "Hi"=================== string 타입은 문자열입니다. 말 그대로 문자를 담는 변수 타입입니다. number# number 타입variable "var_number" { type = number default = 30}output "output_test" { value ..

Terraform 2025.04.05

테라폼(Terraform) - 모듈이란

안녕하세요. 오늘은 테라폼 모듈에 관련하여 포스팅하겠습니다.모듈이란? 모듈은 반복적으로 사용할 수 있는 재사용 가능한 코드의 묶음이라고 표현할 수 있습니다.마치 프로그래밍에서의 함수처럼 특정 기능 또는 특정 인프라 구성을 캡슐화 하여 여러 프로젝트나 환경에서 쉽게 재사용할 수 있게 해줍니다. 정말 단순하게 말해서 그냥 특정 기능을 하는 코드들을 모아둔 폴더입니다. *참고루트 모듈 : 말 그대로 최상위 모듈로 terraform init과 같은 테라폼 명령어를 사용하는 폴더입니다. 자식 모듈 : 루트 모듈에서 호출하는 모듈로 앞서 설명했듯이 특정 기능의 코드들을 모아 분리한 폴더입니다.모듈을 사용하는 이유테라폼에서는 굳이 모듈을 나누지 않고 단일 파일 또는 디렉터리에 인프라 구성을 계속 작성할 수 있습니다...

Terraform 2025.03.23

테라폼(Terraform) - init, plan, apply

terraform initterraform init 명령이란 테라폼 구성 파일이 있는 작업 디렉터리를 초기화하는 명령어다.쉽게 말해 테라폼에게 이 폴더가 테라폼 작업 폴더임을 알려주는 것이다.init 작업을 실행하는 디렉터리(폴더)를 루트 모듈이라 부른다.  *참고로 모듈이란 테라폼이 실행되는 디렉터리를 모듈이라고 부르며 모듈에는 우리가 정의한 테라폼 코드 tf 파일 또는 tfvars 같은 변수를 정의하는 파일이 포함된다. 여기서 기본 작업 디렉터리의 정의된 파일 집합을 '루트 모듈'이라고 한다. 루트 모듈은 다른 모듈을 호출하여 사용할 수 있는데 이때 호출되는 모듈을 '자식 모듈'이라 한다. 이제 테라폼 init을 직접 실행해보겠다.  위에서 부터 확인해보면 테라폼 백엔드를 정상적으로 구성했다는 내용을..

Terraform 2025.03.16