안녕하세요, 이번 포스팅은 테라폼 프로바이더와 리소스 배포에 대해서 포스팅을 올립니다.
‘테라폼으로 시작하는 IaC’를 기준으로 내용 정리하였으며, CloudNet@의 테라폼 스터디 내용을 기반으로 하고 있습니다.
설명
Terraform provider는 Terraform의 리소스 유형 정의를 구현하고 해당 리소스 유형에 대한 CRUD(Create, Read, Update, Delete) 작업을 구현하는 소프트웨어입니다. provider는 Terraform과 기본 인프라 간 가교 역할을 통해 Terraform이 리소스와 상호 작용할 수 있도록 하며, 프로바이더 없이는 어떠한 인프라나 서비스 역시 관리가 불가능합니다.
프로바이더에 대한 자세한 링크는 하기 링크를 참조하시기 바랍니다.
https://registry.terraform.io/browse/providers
코드
provider "aws" {
alias = "seoul"
region = "ap-northeast-2"
}
provider "aws" {
alias = "tokyo"
region = "ap-northeast-1"
}
resource "aws_s3_bucket" "bucket_seoul" {
provider = aws.seoul
bucket = "jflip-s3-seoul"
acl = "private"
tags = {
Name = "jflip in Seoul"
Environment = "Dev"
}
}
resource "aws_s3_bucket" "bucket_tokyo" {
provider = aws.tokyo
bucket = "jflip-s3-tokyo"
acl = "private"
tags = {
Name = "jflip in Tokyo"
Environment = "Dev"
}
}
해당 코드 스니펫을 확인하면, 크게 provider 블럭과 resource 블록으로 나뉩니다.
aws provider를 seoul 리전 리소스 생성과 tokyo 리전 리소스 생성을 위해서 alias를 붙였습니다.
코드 실행 화면
물론 멀티 프로바이더를 통해서 클라우드 프로바이더 역시 다양하게 사용할 수 있습니다.
하기 내용을 통해서 aws, gcp에 멀티 리전으로 s3와 cloud storage 버킷을 배포해 보겠습니다.
방법은 aws와 다소 유사하나 하기 코드는 credential 정보를 키를 받아 설정한 내용이며,
코드 사용시 gcp label에는 대문자가 맨 앞자리에 위치할 수 없다는 점 유의하시기 바랍니다.
코드
# AWS Provider 설정
provider "aws" {
alias = "seoul"
region = "ap-northeast-2"
}
provider "aws" {
alias = "tokyo"
region = "ap-northeast-1"
}
# GCP Provider 설정
provider "google" {
credentials = file("../../../<키 파일>.json")
project = "<프로젝트 id>"
region = "asia-northeast3"
}
provider "google" {
alias = "us-central1"
project = ""<프로젝트 id>"
region = "us-central1"
}
provider "google" {
alias = "europe-west1"
project = ""<프로젝트 id>"
region = "europe-west1"
}
# AWS S3 버킷 리소스
resource "aws_s3_bucket" "bucket_seoul" {
provider = aws.seoul
bucket = "jflip-s3-seoul-test2"
acl = "private"
tags = {
Name = "jflip in Seoul"
Environment = "Dev"
}
}
resource "aws_s3_bucket" "bucket_tokyo" {
provider = aws.tokyo
bucket = "jflip-s3-tokyo-test2"
acl = "private"
tags = {
Name = "jflip in Tokyo"
Environment = "Dev"
}
}
# GCP GCS 버킷 리소스
resource "google_storage_bucket" "bucket_us" {
provider = google.us-central1
name = "jflip-gcs-us-central1"
location = "US"
force_destroy = true
labels = {
project = "jflip"
environment = "dev"
}
}
resource "google_storage_bucket" "bucket_europe" {
provider = google.europe-west1
name = "jflip-gcs-europe-west1"
location = "EU"
force_destroy = true
labels = {
project = "jflip"
environment = "dev"
}
}
코드 실행 화면
해당 내용을 통해서 하나의 코드 파일로 aws, gcp 상에서 버킷 생성하는 내용도 가능하다는 것 역시 확인할 수 있습니다.
감사합니다.
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] 테라폼 코드를 활용한 IPAM 배포 (0) | 2024.07.07 |
---|---|
[Terraform] 테라폼 코드를 활용한 레드시프트 배포 (0) | 2024.07.07 |
[Terraform] 테라폼 내장함수 사용하기 (0) | 2024.06.29 |
[Terraform] 조건식을 활용한 태깅 (0) | 2024.06.29 |
[Terraform] for_each, for, dynamic의 사용법 (0) | 2024.06.29 |