카이도스의 Tech Blog
3주차 - 기본 사용 3/3 & 프로바이더 본문
728x90
반응형
CloudNet@-가시다(Gasida)님의 Terraform 스터디와
테라폼으로 시작하는 IaC’ 책을 기준하여 정리하였습니다.
2023.07.05 - [Terraform] - 1주차 - 테라폼 기본 사용 1/2
2023.07.12 - [Terraform] - 2주차 - 테라폼 기본 사용 2/3
[도전과제1] 조건문을 활용하여 (각자 편리한) AWS 리소스를 배포하는 코드를 작성해보자! - 참고
CreateBucket이 true면 버킷생성, 아니면 버킷을 만들지 않는다.
# 디렉터리 생성
mkdir s3 && cd s3
- var.tf
cat <<EOT > var.tf
variable "CreateBucket" {
type = bool
default = "true"
}
EOT
- s3.tf
cat <<EOT > s3.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_s3_bucket" "pjhs3bucket" {
count = var.CreateBucket? 1 : 0
bucket = "pjh-t101study-bucket"
}
EOT
- 배포
# init
terraform init
# 배포
terraform plan && terraform apply -auto-approve
# 확인
terraform state list
aws_s3_bucket.pjhs3bucket[0]
- 삭제
terraform destroy -auto-approve
[도전과제2] 내장 함수을 활용하여 (각자 편리한) 리소스를 배포하는 코드를 작성해보자! - 참고
내장함수 timestamp 활용하여 S3 tag에 생성시간 태깅하기
- s3.tf 수정
locals {
timestamp = "${timestamp()}"
timestamp_sanitized = "${replace("${local.timestamp}", "/[- TZ:]/", "")}"
}
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_s3_bucket" "pjhs3bucket" {
count = var.CreateBucket? 1 : 0
bucket = "pjh-t101study-bucket"
tags = {
Name = "t101-study"
Timestamp = "${local.timestamp_sanitized}"
}
}
- 배포
# 배포
terraform plan && terraform apply -auto-approve
# 확인
terraform state list
aws_s3_bucket.pjhs3bucket[0]
- 삭제
terraform destroy -auto-approve
[도전과제5] moved 블록을 사용한 테라폼 코드 리팩터링을 수행해보세요 - 실습
# 디렉터리 생성
mkdir s3 && cd s3
- s3.tf
cat <<EOT > s3.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_s3_bucket" "pjhs3bucket1" {
bucket = "pjh-t101study-bucket"
}
EOT
- 배포
# init
terraform init
# 배포
terraform plan && terraform apply -auto-approve
# 확인
terraform state list
aws_s3_bucket.pjhs3bucket1
- s3.tf 수정
cat <<EOT > s3.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_s3_bucket" "pjhs3bucket2" {
bucket = "pjh-t101study-bucket"
}
moved {
from = aws_s3_bucket.pjhs3bucket1
to = aws_s3_bucket.pjhs3bucket2
}
EOT
- 실행
# 배포
terraform plan && terraform apply -auto-approve
# 확인
terraform state list
aws_s3_bucket.pjhs3bucket2
- s3.tf 수정
cat <<EOT > s3.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_s3_bucket" "pjhs3bucket2" {
bucket = "pjh-t101study-bucket"
}
#moved {
# from = aws_s3_bucket.pjhs3bucket1
# to = aws_s3_bucket.pjhs3bucket2
#}
EOT
- 삭제
terraform destroy -auto-approve
[도전과제6] AWS의 S3 버킷을 2개의 리전에서 동작하는 테라폼 코드를 작성해보세요!
# 디렉터리 생성
mkdir s3 && cd s3
- provider_data.tf
provider "aws" {
region = "ap-northeast-2"
alias = "region_1"
}
provider "aws" {
region = "ap-southeast-1"
alias = "region_2"
}
data "aws_region" "region_1" {
provider = aws.region_1
}
data "aws_region" "region_2" {
provider = aws.region_2
}
- s3.tf
resource "aws_s3_bucket" "pjhs3bucket_1" {
provider = aws.region_1
bucket = "pjh-t101study-bucket-1"
}
resource "aws_s3_bucket" "pjhs3bucket_2" {
provider = aws.region_2
bucket = "pjh-t101study-bucket-2"
}
- 배포
# init
terraform init
# 배포
terraform plan && terraform apply -auto-approve
# 확인
terraform state list
data.aws_region.region_1
data.aws_region.region_2
aws_s3_bucket.pjhs3bucket_1
aws_s3_bucket.pjhs3bucket_2
- 삭제
terraform destroy -auto-approve
728x90
반응형
'Terraform' 카테고리의 다른 글
2주차 - 테라폼 기본 사용 2/3 (0) | 2023.07.12 |
---|---|
1주차 - 테라폼 기본 사용 1/2 (0) | 2023.07.05 |
[CHAPTER 2] ASG/ELB (0) | 2023.06.01 |
[CHAPTER 1&2] 기초 (0) | 2023.05.23 |
Comments