terraform 11

[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

[Terraform] 사용 provider/모듈 버전 확인하기

개요테라폼을 많이 써보진 않았지만, provider나 module의 버전에 따라 제공되는 모듈이나 리소스 변경이 제법 있는 것 같다. 때문에 공식 문서를 참고하기 위해서는 현재 테라폼 코드에서 사용하고 있는 provider, 모듈의 버전이 정확히 어느 버전인지 알 필요가 있다.이번 글은 테라폼 코드에서 사용하고 있는 provider나 모듈의 버전을 확인하는 방법을 정리한다. provider 버전terraform version 명령어를 사용하면 설치된 테라폼 버전과 함께 provider 정보를 확인할 수 있다.terraform version또는 .terraform.lock.hcl 파일에서 확인할 수도 있다. modules 버전terraform init을 수행하면 .terraform 디렉터리 내 modu..

Terraform 2025.11.27

[Terraform] 리소스 수정 및 삭제

개요2025.11.04-[Terraform] AWS EC2 생성에서 Terraform으로 Ec2 인스턴스를 생성해 봤는데, 이번 글에서는 생성한 인프라 리소스를 수정하고 삭제하는 과정을 다뤄보고자 한다. 리소스 수정리소스를 수정하면서 관리 편의성을 높이고자 EC2 인스턴스의 이름과 타입을 변수로 받는 variables.tf라는 파일을 작성했다.variable "instance_name" { description = "Value of the EC2 instance's Name tag." type = string default = "learn-terraform"}variable "instance_type" { description = "The EC2 instance's type...

Terraform 2025.11.12

[Terraform] AWS EC2 생성

개요2025.11.03-[Terraform] Modules까지 테라폼 구성 파일에 대한 요소를 살펴보았는데, 이번 글에서는 실제로 테라폼을 사용해 인프라를 생성하고 관리하고 삭제하는 일련의 과정을 살펴보고자 한다.인프라 생성은 실제 클라우드 환경이 아닌 AWS 에뮬레이션 환경인 LocalStack을 활용한다. 테라폼 작업 공간 및 파일 작성작업 공간 생성먼저 테라폼 작업 공간이 될 디렉터리를 하나 만들어준다.mkdir learn-terraform-get-started-awscd learn-terraform-get-started-aws 테라폼 구성 파일 작성작업 공간에 terraform 블록을 포함하는 terraform.tf를 작성한다. AWS EC2를 생성해 볼 예정이기 때문에 https://regi..

Terraform 2025.11.07

[Terraform] Modules

개요2025.10.31-[Terraform] 변수와 Output에서 Terraform 코드를 보다 동적으로 구성할 수 있게 하는 변수와 Output을 살펴보았다. 이번 글에서도 비슷한 목적을 위한 module 개념을 적어둔다. ModulesTerraform에서의 Modules란 재사용할 수 있는 구성 세트를 뜻하는데, 여러 리소스와 데이터 소스를 포함한 인프라 배포를 일관성 있게 관리할 수 있게 한다. 다른 프로그래밍과 마찬가지로 재사용성을 위한 개념이다. Provider와 동일하게 테라폼 레지스트리에서 제공하고 있으므로 제공되는 모듈을 사용할 수 있고, 자체적인 모듈을 생성해 공유할 수도 있다. 아래 예시는 두 개의 퍼블릭 서브넷과 두 개의 프라이빗 서브넷을 포함하는 VPC를 정의한다.module "..

Terraform 2025.11.06

[Terraform] 변수와 Output

개요2025.10.30-[Terraform] 구성 파일에서 Terraform의 주요 구성 파일과 요소를 살펴봤다. 이번 글에서는 Terraform 코드를 보다 동적으로 구성할 수 있게 하는 변수와 Output에 대해 적어둔다. 변수변수는 환경 변수, 명령줄 변수, 디스크 내 파일 등 다양한 방법으로 설정할 수 있는데, 선언은 아래와 같이 variable 블록을 사용하여 할 수 있다. 변수를 선언할 때 변수의 기본값을 설정할 수 있고, terraform를 적용할 때 변수가 지정되지 않으면 기본값을 사용한다.variable "instance_name" { description = "Value of the EC2 instance's Name tag." type = string default..

Terraform 2025.11.05

[Terraform] 구성 파일

개요2025.10.29-Terraform 이란? 에서 테라폼에 대해서 간단히 알아보고 설치까지 해보았다. 그리고 이후에는 실제로 테라폼을 작성하고 적용해 볼 단계이다. 이번 글에서는 테라폼 파일을 구성하는 요소에 대해 알아본다. terraform 블록Terraform 워크스페이스에는 워크스페이스를 구성하는 요소를 정의하는 terraform 블록이 필요하다. terraform 블록은 인프라를 프로비저닝 하는 데 사용할 테라폼 버전과 provider를 포함한다.terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.92" } } required_version = ">= 1.2"} ..

Terraform 2025.11.04
1 2