카이도스의 Tech Blog

3주차 - 기본 사용 3/3 & 프로바이더 본문

Terraform

3주차 - 기본 사용 3/3 & 프로바이더

카이도스 2023. 7. 21. 12:58
728x90
반응형
CloudNet@-가시다(Gasida)님의 Terraform 스터디와
테라폼으로 시작하는 IaC’ 책을 기준하여 정리하였습니다.

2023.07.05 - [Terraform] - 1주차 - 테라폼 기본 사용 1/2

 

1주차 - 테라폼 기본 사용 1/2

CloudNet@-가시다(Gasida)님의 Terraform 스터디와 테라폼으로 시작하는 IaC’ 책을 기준하여 정리하였습니다. 1. Iac와 테라폼 1-1. 테라폼 : Terraform의 구성 언어는 선언적입니다. 즉, 인프라에 대해 원하

djdakf1234.tistory.com

2023.07.12 - [Terraform] - 2주차 - 테라폼 기본 사용 2/3

 

2주차 - 테라폼 기본 사용 2/3

CloudNet@-가시다(Gasida)님의 Terraform 스터디와 테라폼으로 시작하는 IaC’ 책을 기준하여 정리하였습니다. 2023.07.05 - [Terraform] - 1주차 - 테라폼 기본 사용 1/2 1주차 - 테라폼 기본 사용 1/2 CloudNet@-가시

djdakf1234.tistory.com


[도전과제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