DevOps

Terraform + asdf를 활용한 여러 버전의 개발 환경 구성

es6.kr 2025. 2. 16. 17:06
반응형

Terraform과 asdf를 조합하면 여러 버전의 하이브리드 앱 개발 환경을 쉽게 구성하고, 인프라 및 개발 환경을 통합적으로 관리할 수 있다.

1. 인프라 및 개발 환경을 코드로 관리 가능

  • Terraform → 클라우드 및 시스템 환경 관리 (AWS, GCP, Kubernetes 등)
  • asdf → 언어 및 도구 버전 관리 (Node.js, Dart, Flutter 등)
  • 여러 버전의 SDK 및 도구를 유지하면서도 일관된 환경 제공 가능

2. 재현 가능한 개발 환경 구축

  • .tool-versions + Terraform을 사용하면, 여러 버전의 하이브리드 앱 개발 환경을 손쉽게 구성 가능
  • Terraform의 provisioner 기능을 활용하면 초기 개발 환경 자동화 가능

Homebrew 설치 및 Terraform 설치

macOS에서 Homebrew 설치

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrew로 Terraform 설치

brew install terraform

Terraform 코드 예제

main.tf 설정

provider "installer" {}

resource "installer_brew" "this" {
  for_each = toset(var.brew_packages)
  name     = each.key
}

resource "installer_asdf_plugin" "this" {
  for_each = var.asdf_packages
  name     = each.key
  git_url  = each.value.git_url
}

resource "installer_asdf" "this" {
  depends_on = [installer_asdf_plugin.this]
  for_each = merge([
    for package, value in var.asdf_packages : {
      for version in value.versions : "${package}@${version}" => { name = package, version = version }
    }
  ]...)
  name    = each.value.name
  version = each.value.version
}

provider.tf 설정

terraform {
  required_providers {
    installer = {
      source = "es6kr/installer"
    }
  }
}

terraform.tfvars 변수 정의

brew_packages = [
  "asdf",
  "git",
]

asdf_packages = {
  dart = {
    git_url  = "https://github.com/PatOConnor43/asdf-dart.git"
    versions = ["2.19.6", "3.4.3"]
  }
  flutter = {
    git_url  = "https://github.com/oae/asdf-flutter.git"
    versions = ["3.7.12", "3.22.2"]
  }
  nodejs = {
    git_url  = "https://github.com/asdf-vm/asdf-nodejs"
    versions = ["22.11.0"]
  }
}

결론

Terraform과 asdf를 활용하면 여러 버전의 하이브리드 앱 개발 환경을 코드로 관리할 수 있다.
특히 .tool-versions 파일과 함께 사용하면 팀원 간 일관된 개발 환경을 보장하면서도,
각 프로젝트에 맞는 SDK 및 도구 버전을 쉽게 전환할 수 있다.

반응형