티스토리 뷰
안녕하세요. CloudNet@ Terraform Study를 진행하며 해당 내용을 이해하고 공유하기 위해 작성한 글입니다. 도서 ‘Terraform: Up & Running(By Yevgeniy Brikman)’ 의 내용 및 스터디 시간 동안 언급된 주요 내용 위주로 간단히 정리했습니다.
Working with One Provider
- Provider : 테라폼 코어를 위한 플러그인, 각 플러그인은 ‘AWS, Azure, GCP’ 등 외부 플랫폼과 통신
Provider 설정
provider "aws" {
region = "us-east-2"
}
$ terraform init
Initializing provider plugins...
- Finding hashicorp/aws versions matching "4.19.0"...
- Installing hashicorp/aws v4.19.0...
- Installed hashicorp/aws v4.19.0 (signed by HashiCorp)
...
Provider 상세 설정
terraform {
required_providers {
<LOCAL_NAME> = {
source = "<URL>"
version = "<VERSION>"
}
}
}
- LOCAL_NAME : provider 가 사용할 local name 이며, 각 provider 에서 유일한 이름이여야 함. 드문 경우 지만 만약 두 공급자가 http 중복 사용 시 로컬 이름으로 구별 할 수 있음
- URL : 해당 provider 다운로드 URL 이며, 형식은 [<HOSTNAME>/]<NAMESPACE>/<TYPE 이다
— 예) aws 공급자 전체 URL) registry.terraform.io/hashicorp/aws → 생략 표현 가능 hashicorp/aws
- 아래는 aws 4.x 공급자 버전 설치를 지정하는 코드 예시입니다.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
실습)
Working with Multiple copies of the same provider
1. 2개의 리전에 배포 시
output 상태
2. 2개의 리전에 Ubuntu EC2 배포 시
- 기존에 생성한 multiple-provider.tf 파일에 아래 초드를 추가해줍니다.
- 리전 별 AMI ID값이 다르므로, 필터를 활용합니다.
output 상태
3. Primary RDS 의 replica RDS를 다른 리전에 배포 시
- Primary RDS 는 backup_retention_period 설정이 0보다 커야 되며, replicate_source_db ARN 설정 시 replica RDS입니다.
- 코드 참고
S3/DynamoDB 생성
- S3/DynamoDB 생성을 위한 환경변수 지정
# 환경변수에 지정
export TF_VAR_bucket_name=hayley
export TF_VAR_table_name=hayley-t101-locks
- S3/DynamoDB 생성을 위한 코드 참고
terraform init
terraform plan && terraform apply -auto-approve
# 확인
aws s3 ls
aws dynamodb list-tables --output text
- Primary RDS 리소스 생성 코드 내용 확인 — 링크
- Replica RDS 리소스 생성 코드 내용 확인
module "mysql_replica" {
source = "../../../../modules/data-stores/mysql"
# Make this a replica of the primary
replicate_source_db = module.mysql_primary.arn
}
MySQL on RDS example (prod environment)
주의사항
- Warning 1 : Multiregion is hard 프로덕션 수준의 멀티 리전은 어렵습니다.
- Active-Active 멀티 리전 서비스를 위해서 ‘지역간 지연 시간, 고유 ID, 최종 일관성’ 등 여러가지 고려사항이 많아서 쉽지 않습니다.
2. Warning 2 : Use aliases sparingly Alias 를 빈번하게 사용하지 마세요.
- 별칭을 사용하여 두 리전에 배포하는 단일 테라폼 모듈은 한 리전이 다운 시, plan 과 apply 시도가 실패합니다.
- 프로덕션 환경은 멀티 리전의 별칭을 사용하는 것보다는 환경을 완전히 격리해야 합니다. 이를 통해 영향도를 최소화 할 수 있습니다.
blog migration project
written in 2022.12.11
https://medium.com/techblog-hayleyshim/iac-working-with-multiple-providers-b119e487b55d
'Programming > IaC' 카테고리의 다른 글
[IaC] 기본 사용법( data source, input variables, local, output, loop) (0) | 2023.10.28 |
---|---|
[IaC] IaC/테라폼 이해, 기본 명령 사용법( command, HCL, block, resource) (0) | 2023.10.28 |
[IaC] GKE configuration deep dive (0) | 2023.10.28 |
[IaC] Production-grade Terraform code (0) | 2023.10.28 |
[IaC] Managing Secrets with Terraform (0) | 2023.10.28 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- IaC
- VPN
- k8s calico
- 국제 개발 협력
- EKS
- 혼공챌린지
- NW
- OS
- handson
- security
- S3
- k8s
- 도서
- 혼공파
- operator
- cloud
- k8s cni
- NFT
- AI
- 혼공단
- PYTHON
- GKE
- SDWAN
- 파이썬
- controltower
- GCP
- gcp serverless
- cni
- AWS
- terraform
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함