Terraform AWS: VPC 만들기
·
탐구 생활/Terraform
Terraform 을 이용하여 로컬 리소스를 다루는것도 의미가 있겠으나, 내가 Terraform 을 알아보기 시작한 이유는 클라우드 인프라를 재사용가능한 효율적인 형태로 다루고 싶기 때문이었다. 그 첫번째로 AWS 의 기본 리소스중 하나인 VPC 를 만들어보겠다.AWS VPC우선 지금부터 만들려고하는 AWS VPC 에 대한 개념과 이를 구성하는 세부 요소에 대해서 알아보고 왜 많고 많은 AWS 인프라 중에서 VPC 를 먼저 만들려고하는지 알아보자 VPC(Virtual Private Cloud) 란 AWS 클라우드 내에서 자신의 네트워크를 "논리적" 으로 격리하여 정의할 수 있는 가상 네트워크이다. 인터넷에 노출되면 안되는 리소스를 격리하여 보안에 필수적이며, 보안 그룹과 네트워크 ACL 를 활용하여 더욱..
Terraform 기초: 리소스 생명 주기 및 데이터 소스 관리하기
·
탐구 생활/Terraform
1. 리소스 생명 주기 (Lifecycle Rules)Terraform은 리소스를 업데이트할 때 기존 리소스를 삭제(destroy)하고 새로운 리소스를 생성(create)하는 immutable 인프라 접근 방식을 따릅니다. 그러나 모든 경우에 이러한 동작이 적합하지 않을 수 있습니다. 이를 제어하려면 lifecycle rules를 활용할 수 있습니다.1.1 create_before_destroy기존 리소스를 삭제하기 전에 새로운 리소스를 먼저 생성한다. 어떤 리소스는 다운 타임을 최소화하기 위해 이러한 조치가 필요할 것이다.resource "aws_instance" "example" { ami = "ami-123456" instance_type = "t2.micro" lifecyc..
Terraform 기초: commands
·
탐구 생활/Terraform
Terraform는 인프라를 코드로 관리하기 위한 강력한 도구이다. Terraform을 효과적으로 사용하려면 다양한 명령어를 이해하고 활용하는 것이 중요하므로 Terraform에서 자주 사용되는 명령어들과 그 활용 사례에 대해 살펴보자.주요 Terraform 명령어1. terraform initterraform init은 Terraform 프로젝트를 초기화하는 데 사용된다. 이 명령은 구성 디렉토리를 준비하고 필요한 provider 플러그인을 다운로드한다. Terraform 작업의 첫 단계로 항상 실행해야 한다.2. terraform validateterraform validate는 Terraform 구성 파일의 구문 오류를 확인한다. 이 명령은 코드를 실행하기 전에 구성 파일이 올바른지 검증하는 데 유..
Terraform 기초: State
·
탐구 생활/Terraform
Terraform를 사용할 때 중요한 개념 중 하나는 State 이다. 이번 글에서는 Terraform의 State의 역할과 중요성, 그리고 실무에서의 활용 방안에 대해 살펴보겠다.Terraform State란 무엇인가?Terraform의 State 파일은 리소스 구성과 실제 인프라 간의 매핑 정보를 저장하는 역할을 한다. 이는 Terraform이 실행 계획을 생성하고, 구성 파일과 실제 인프라 간의 불일치(Drift)를 식별하는 데 사용된다. 쉽게 말해, Terraform State 파일은 실제 세상에 존재하는 모든 리소스의 청사진(blueprint)이라고 볼 수 있다.이러한 State 는 terraform apply 가 되는순간 terraform.tfstate 파일에 json 형태로 저장이 된다.Te..
Terraform 기초: depends_on, output
·
탐구 생활/Terraform
Terraform 의존성과 Output 활용지금까지 알아본 Terraform 블록은 resource와 variable이 전부였다. 이번 글에서는 output이라는 유용한 블록을 소개하고, depends_on이라는 argument를 다룬다.1. depends_on여러 리소스를 관리하다 보면 "의존적인 관계"에 있는 리소스들이 존재한다. AWS를 예로 들자면, 특정 VPC에 종속되어야 하는 security group은 VPC 리소스에 의존적일 수밖에 없다.1.1 암시적 의존성Terraform은 리소스 간의 참조 관계를 분석하여 자동으로 의존성을 생성한다. 예를 들어, security group이 특정 VPC의 ID를 참조할 때, Terraform은 이를 기반으로 암시적 의존성을 설정한다.resource "a..
Terraform 기초: HCL 기본기
·
탐구 생활/Terraform
아무리 HCL 이 쉬운 DSL 이라곤 하지만 정확히 쓰고 읽기 위해서는 최소한의 공부가 필요하다. 우선 Terraform 을 설치하는게 우선이다.1. Terraform 설치 (업그레이드)가장 좋은 방법은 공식 사이트의 설치 가이드를 보고 설치하는 것이다.나는 mac 을 이용하고 brew 를 통해 설치, 삭제, 업그레이드를 관리하는 것이 용이하므로 brew 로 설치했었다. 그 결과 버전 1.8.2 가 설치되어 있는 것을 확인할 수 있었다.$> brew list terraform# /opt/homebrew/Cellar/terraform/1.8.2/bin/terraform$> terraform version# Terraform v1.8.2# on darwin_arm64 24년 11월 17일 기준 terrafo..
Terraform 소개
·
탐구 생활/Terraform
1. Terraform1.1 Terraform 이란?Terraform은 HashiCorp에서 개발한 무료 오픈소스 IAC 도구이다. IAC 개요 및 주요 도구에서 다룬 것과 같이 주로 인프라 프로비저닝에 사용되는 툴로써, 설치 파일은 단일 바이너리로 구성돼 있어서 빠르게 설정할 수 있다.Terraform의 가장 큰 장점 중 하나는 여러 플랫폼(프라이빗 클라우드와 퍼블릭 클라우드)을 아우르는 인프라 배포가 가능하다는 거이다. 예를 들어, 온프레미스 vSphere 클러스터부터 AWS, GCP, Azure 같은 클라우드 솔루션까지 지원한다.1.2 Terraform 과 HashiCorpHashiCorp 는 클라우드 인프라를 효율적으로 관리하고 자동화하기 위한 다양한 도구를 개발하는 회사이다. HashiCorp의..
IAC 개요 및 주요 도구
·
탐구 생활/Terraform
1. IAC(코드형 인프라)란?IAC(Infrastructure as Code)는 클라우드 인프라를 코드로 정의하고 관리하는 방식이다.기존의 클라우드 관리 콘솔을 통해 수작업으로 리소스를 프로비저닝(provisioning)하는 대신, IAC를 통해 코드로 정의하고 실행하여 리소스를 자동으로 생성, 구성, 업데이트, 삭제할 수 있다.IAC는 데이터베이스, 네트워크, 스토리지, 애플리케이션 구성과 같은 다양한 인프라 구성 요소를 코드로 관리할 수 있도록 해준다. 예를 들어, 기존의 셸 스크립트를 사용해도 되지만, 이 방식은 관리와 재사용이 어려우며 유지보수를 위해 개발 기술을 필요로 한다. 이러한 문제를 해결하기 위해 Terraform이나 Ansible과 같은 IAC 도구가 등장했다.2. 주요 IAC 도구 ..