Terraform 18

[Terraform] external - 외부 프로그램 연동

개요Terraform 코드를 작성하면서 별도로 작성한 스크립트를 실행해야 하는 케이스가 있었다. 이런 경우 외부 프로그램을 연동할 때 사용하는 external 프로바이더를 활용할 수 있는데, 이번 글에서는 그 사용법을 확인하려고 한다. externalterraform과 외부 프로그램 간의 인터페이스를 제공하는 특수한 프로바이더이다. 프로바이더가 없는 시스템과 연동할 때 유용하지만 정식 프로바이더만큼 강력하지는 않다는 한계점이 있다. 또한 외부 프로그램에 대한 종속성이 생기기 때문에 운영 체제에 따라 사용 가능성이 달라지거나 이식성이 저하될 수 있다. external 프로바이더는 external 데이터소스를 제공한다. 표준 입력으로 JSON 형식의 데이터를 전달하고 표준 출력으로 JSON 형식의 데이터..

Terraform 2026.03.12

[Terraform] Error: failed to get shared config profile, default 해결

개요Github Actions 내에서 Terraform 실행 환경을 구성하고 있는데, terraform init 명령어 실행 중 아래와 같은 오류가 발생하면서 동작에 실패했다.| - karpenter in .terraform/modules/karpenter/modules/karpenter| ╷| │ Error: failed to get shared config profile, default| │| │| ╵ 원인을 파악하고 문제를 해결해보자. 원인이 테라폼 코드는 AWS를 대상으로 작업을 수행하는데, 인증 시 default라는 profile을 사용하도록 지정해 둔 상태이다.그리고 로그를 보면 default 프로파일을 얻으려는 시도가 실패했음을 알리고 있다. GitHub Actions 워크플로우를 구성하..

Terraform 2026.02.25

[Terraform] for_each - 값 참조 시 기본값 지정

개요2026.01.30-[Terraform] for_each - map, set 순회하며 리소스 생성에서 map과 같은 형식의 데이터를 순회하면서 리소스를 생성하는 방법을 알아보았는데, 간혹 순회하는 키의 값이 없는 경우도 발생하지 싶다. 보통 프로그래밍 언어에서는 이런 경우를 대비해 기본값을 설정할 수 있는 기능을 제공하는데 Terraform에도 비슷한 기능이 있는지 확인해보고자 한다. tryTerraform에서 try 함수는 인자 표현식을 순차적으로 평가해 오류가 발생하지 않는 첫 번째 표현식의 결과를 반환한다. try는 인수를 평가할 때 발생할 수 있는 오류를 특수 함수로 구현 시점에 형태를 정확히 알 수 없는 복잡한 형태의 데이터 구조를 다룰 때 유용하다.특히 외부 시스템에서 JSON 또는 YA..

Terraform 2026.02.04

[Terraform] for_each - map, set 순회하며 리소스 생성

개요2026.01.20-[Terraform] yamldecode - YAML을 HCL로 파싱하기에서 YAML 데이터를 hcl이 인식할 수 있는 형태로 파싱 했다. 이제는 이 데이터를 순회하면서 리소스를 만들기 위한 방법을 작성한다. for_each기본적으로 resource 블록은 하나의 인프라 객체를 생성한다. module 블록도 자식 모듈의 콘텐츠를 한 번 include 하고, action도 정의된 작업도 한 번 수행한다. for_each 블록은 이러한 블록이 유사한 형태로 여럿 필요할 때 활용할 수 있는데 resource, 모듈, map 블록에 for_each 인수가 포함되면 지정된 list, map 내 각 요소에 대해 작업을 한 번씩 호출한다.for_each 메타 인자는 map 또는 문자열 se..

Terraform 2026.02.03

[Terraform] for - 요소 반복을 통한 값 생성

개요2026.01.20-[Terraform] yamldecode - YAML을 HCL로 파싱하기에서 yamldecode로 yaml 파일을 map 형식의 데이터를 파싱 했는데, 조건에 따른 필터링 등의 작업이 필요해졌다. 확인해 보니 for 문을 사용하면 되는 것으로 보여 문법을 알아보고자 한다. for테라폼에서 for 문은 복합 타입을 다른 복합 타입의 데이터로 변환할 수 있게 한다. 예시로 아래 코드의 경우 var.list가 문자열 목록일 때 대문자 문자열 tuple을 생성한다. var.list의 각 요소에 대해 반복되며, 각 요소를 s로 칭하고 upper를 수행한 tuple 값을 생성한다는 의미이다.[for s in var.list : upper(s)] 입력for 문의 입력은 in 키워드 뒤에 위치..

Terraform 2026.02.02

[Terraform] count - 리소스 반복 생성

개요Terraform 코드를 작성하던 중 조건에 따라 리소스 생성 여부를 결정하고 싶다고 했더니 count 문법을 제안해 왔다. 제안은 채택하더라고 어떤 기능인지는 알고 사용해야 할 것 같아 내용을 정리한다. count기본적으로 리소스 블록은 하나의 인프라 개체를 구성한다. 다만 count 메타 인수를 사용하면 유사한 개체를 별도 블록으로 작성하지 않고 하나의 블록으로 작성할 수 있다. count 메타 인수는 data, ephemeral, module, resource, list에서 사용할 수 있다. 예로 들어 아래와 같은 data 블록이 있다고 하자.data "http" "user_1" { url = "https://jsonplaceholder.typicode.com/users/1" request..

Terraform 2026.01.30

[Terraform] HCL - 조건문

개요테라폼으로 인프라를 구성하던 중 조건에 따른 분기 처리가 필요하게 되었다. 이번 글에서는 테라폼에서 사용할 수 있는 조건문에 대해서 좀 정리해보려고 한다. if 대신 삼항연산자다른 프로그램 언어와 다르게 if 구문을 제공하지 않는다. 대신 조건식(Conditional Expressions)을 제공하고 있는데, 이는 테라폼이 절차가 아닌 상태를 정의하는 선언형 언어이기 때문이다. 'A를 만족하면 B를 실행해.'가 아닌 'A인 경우의 결괏값은 B야.'라는 관점으로 접근해야 한다.기본적으로 테라폼에서의 삼항연산자 문법은 아래와 같다.condition ? true_val : false_valcondition을 만족하면 true_val이 결과고 그렇지 않으면 false_val이 결과다. 이때 true_val..

Terraform 2026.01.23

[Terraform] HTTP 요청하기

개요테라폼을 실행할 때 github에 업로드된 설정 파일을 읽으려고 한다. 적절한 방법이 있는지 찾아본다. HTTPHTTP Provider는 일반적인 HTTP 서버와 통신하기 위한 유틸리티다. Terraform의 기본적인 구성 중 하나로 별도 설정 없이 사용할 수 있다. 사용할 때는 아래와 같이 작성한다.terraform { required_providers { http = { source = "hashicorp/http" version = "3.5.0" } }}provider "http" { # Configuration options} http 데이터소스http 데이터소스는 지정한 URL로 HTTP GET 요청을 보내고, 그 응답에 대한 정보를 반환한다. URL은 ..

Terraform 2026.01.20

[Terraform] yamldecode - YAML을 HCL로 파싱하기

개요2026.01.19-[Terraform] HTTP 요청하기에서 http 서버로부터 YAML 형식의 데이터를 얻어왔는데, 이 값을 테라폼에서 이용할 수 있는 데이터 구조로 변환하여 테라폼 내에서 활용하고자 한다. 적절한 방법을 기록한다. yamldecodeyamldecode은 문자열을 yaml 하위 집합으로 파싱하고 그 값을 표현한다. 기본적인 사용은 yamldecode 함수에 yaml 형식의 데이터를 전달하는 것이다.output "hello" { value = yamldecode("hello: world")}만약 전달한 데이터가 파일이라면 아래와 같이 전달한다.locals { # config.yaml 파일을 읽어서 HCL 객체로 변환 app_config = yamldecode(file("${..

Terraform 2026.01.20

[Terraform] Helm 관리

개요처음 Terraform을 공부할 때는 클라우드 인프라 배포 위주로 공부했는데, 최근에는 K8s Helm 배포도 지원하고 있다는 것을 알게 되었다. 배포 방법을 적어둔다. 프로바이더URL : https://registry.terraform.io/providers/hashicorp/helm/latest Terraform Registry registry.terraform.io문서 : https://registry.terraform.io/providers/hashicorp/helm/latest/docsHelm 프로바이더는 HashiCorp에 의해 제공되며, 테라폼을 통해 쿠버네티스 클러스터에 Helm 차트를 관리할 수 있도록 도와준다. 사용프로바이더 자체는 아래와 같이 기재하여 사용하면 된다. terra..

Terraform 2025.12.15
1 2