[기본 구성 요소] Resource
2024. 11. 26. 01:39ㆍTerraform/[인프런] 아키텍처와 함께하는 Terraform
1. Resource
- 실제로 생성되거나 관리되는 인프라 구성 요소를 정의하는 블록이다.
- Resource에는 EC2 인스턴스, 데이터베이스, 네트워크, DNS 레코드 등이 될 수 있다.
- 이러한 리소스를 코드로 선언하여 인프라를 관리하고 추적 가능하도록 만든다.
2. Resource 주요 특징
- 선언적 구성 : 원하는 최종 상태를 정의하면 Terraform이 리소스를 생성, 업데이트, 삭제한다.
- ID 기반 관리 : 특정 ID를 기반으로 관리되며, 변경 사항은 Terraform의 상태 파일(State file)을 통해 추적된다.
- 모듈화 및 재사용 가능 : 리소스를 모듈로 정의하면 쉽게 재사용할 수 있다.
- Dependency 관리 : Terraform은 리소스 간의 의존성을 자동으로 계산하여 올바른 순서로 리소스를 생성 및 수정한다.
- 다양한 설정 옵션 : 사용자 정의 태그, 속성, 정책 등을 활용하여 리소스를 세부적으로 설정할 수 있다.
3. Resource 예제
- AWS에서 EC2 인스턴스를 생성하는 예제 ①
* 예제
provider "aws" {
region = "ap-northeast-2" # 서울 리전
}
resource "aws_instance" "example" { # Terraform이 관리할 수 있는 리소스 정의
ami = "ami-0c1a7f89451184c8b" # AMI ID (서울 리전에서 유효)
instance_type = "t2.micro" # EC2 인스턴스 유형
tags = { # 리소스 구분하기 위한 태그 설정
Name = "ExampleInstance"
}
}
- VPC와 서브넷 생성을 통한 리소스 의존성 관리 예제 ②
* 예제
resource "aws_vpc" "example_vpc" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "ExampleVPC"
}
}
resource "aws_subnet" "example_subnet" { # subnet 리소스는 VPC를 기반으로 서브넷 생성
vpc_id = aws_vpc.example_vpc.id # Terraform은 의존성 계산하여 VPC 생성 후 서브넷 생성(VPC 의존성)
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-2a"
tags = {
Name = "ExampleSubnet"
}
}
- Terraform의 resource 블록은 resource "resource type" "resource name" 로 구성된다.
- "resource type"은 어떤 Provider를 사용하는가에 따라 type이 달라지기 때문에 공식 문서를 참고해야한다.
'Terraform > [인프런] 아키텍처와 함께하는 Terraform' 카테고리의 다른 글
[기본 구성 요소] Output (1) | 2024.11.26 |
---|---|
[기본 구성 요소] Variables (0) | 2024.11.26 |
[기본 구성 요소] Provider (0) | 2024.11.25 |
[기본 구성 요소] HCL(HashiCorp Configuration Language) (0) | 2024.11.20 |
[사전] Terraform 이란 & 구성 요소 (0) | 2024.11.15 |