인프라 구축기
인프라 구축기 (9)에서 Terraform의 .tfstate 파일을 삭제하는 이슈가 있었다. 이때 배운 것 중 하나가 원격 저장소를 활용한 Terraform 상태 파일 관리였다. 그래서 원격 저장소인 AWS S3에 상태 파일을 두고 사용하는 방법을 살펴보고, 작성 중인 Terraform 코드에 적용해볼 것이다.
각 디렉터리에 terraform.tf 파일 생성
찾아본 바에 의하면 terraform 블록은 main.tf와 따로 구성하는 게 일반적이라고 한다. 애초에 내가 구성한 .tf 파일에는 main.tf가 없지만, terraform.tf 파일을 새로 만들어 구성하였다.
- S3 구성
- 버킷 명 : popboard-s3-bucket
- 상태 파일 경로 : terraform-tfstate/terraform.tfstate
- 리전 : ap-northeast-2
vpc/terraform.tf
- vpc인 것을 나타내도록 상태 파일 명을 vpc-terraform.tfstate로 지정
terraform {
backend "s3" {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/vpc-terraform.tfstate"
region = "ap-northeast-2"
}
}
instance/terraform.tf
- instance인 것을 나타내도록 상태 파일 명을 instance-terraform.tfstate로 지정
terraform {
backend "s3" {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/instance-terraform.tfstate"
region = "ap-northeast-2"
}
}
storage/terraform.tf
- storage인 것을 나타내도록 상태 파일 명을 storage-terraform.tfstate로 지정
terraform {
backend "s3" {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/storage-terraform.tfstate"
region = "ap-northeast-2"
}
}
lambda/terraform.tf
- lambda인 것을 나타내도록 상태 파일 명을 lambda-terraform.tfstate로 지정
terraform {
backend "s3" {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/lambda-terraform.tfstate"
region = "ap-northeast-2"
}
}
각 디렉터리의 data.tf 코드 변경
Terraform의 backend가 로컬에서 원격 (S3)로 변경됨에 따라 data의 경로도 수정해주어야 한다. 변경 내용은 아래와 같다.
- backend를 local에서 S3로 변경
- S3의 bucket, key, region 입력
변경 전 data.tf의 타 모듈 변수 사용 방식
# storage
data "terraform_remote_state" "storage" {
backend = "local"
config = {
path = "../storage/terraform.tfstate"
}
}
변경 후 instance/data.tf
# vpc
data "terraform_remote_state" "vpc" {
backend = "s3"
config = {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/vpc-terraform.tfstate"
region = "ap-northeast-2"
}
}
변경 후 storage/data.tf
# vpc
data "terraform_remote_state" "vpc" {
backend = "s3"
config = {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/vpc-terraform.tfstate"
region = "ap-northeast-2"
}
}
변경 후 lambda/data.tf
# storage
data "terraform_remote_state" "storage" {
backend = "s3"
config = {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/storage-terraform.tfstate"
region = "ap-northeast-2"
}
}
# instance
data "terraform_remote_state" "instance" {
backend = "s3"
config = {
bucket = "popboard-s3-bucket"
key = "terraform-tfstate/instance-terraform.tfstate"
region = "ap-northeast-2"
}
}
S3의 상태 파일과 Terraform 연동 확인
S3 객체 확인
S3 연동 확인
- 로컬의 terraform.tf를 삭제한 뒤 다시 init을 실행
terraform init
- plan을 실행하여 이전과 같은 출력 결과가 나타난다면 연동이 제대로 된 것
terraform plan
Reference
https://hgk5722.tistory.com/553
https://developer.hashicorp.com/terraform/language/backend/s3
'Infra > [인프라 구축기] Terraform 활용 AWS 인프라 구축' 카테고리의 다른 글
인프라 구축기 (14) : EC2 인스턴스 추가 및 lambda 함수 수정 (0) | 2024.11.11 |
---|---|
인프라 구축기 (13) : 진행 내용 & 진행 예정 내용 정리 (5) | 2024.11.03 |
인프라 구축기 (11) - lambda IAM role 수정 (1) | 2024.10.29 |
인프라 구축기 (10) - IAM 생성 코드 추가 (2) | 2024.10.26 |
인프라 구축기 (9) - Terraform terraform.tfstate 삭제 이슈 (0) | 2024.10.24 |