Terraform (14) 썸네일형 리스트형 AWS 트래픽 스파이크 처리 - Amazon Aurora와 Route 53 가중치 기반 라우팅 활용 이번 글에서는 Amazon Aurora Auto Scaling, Amazon Route 53 가중치 기반 라우팅, Amazon CloudWatch, Lambda, EventBridge 등을 활용해 비용 효율적으로 트래픽을 처리하는 방법을 AWS에서 제공하는 Well-Architected Framework를 AWS CloudFormation으로 제공하고 있고, 해당 내용을 Terraform 코드화로 전환하여 사용한 방법에 대해 공유드리려 합니다. AWS 트래픽 스파이크 처리 급격한 트래픽 증가를 효과적으로 처리하는 것은 클라우드 아키텍처 설계에서 중요한 도전 과제 중 하나입니다.특히, 예기치 않은 트래픽 스파이크가 발생할 때, 리소스가 자동으로 확장하고 안정성을 유지하는 것이 핵심입니다. 아래 URL은 .. [Terraform] Import Block & Module 활용 & 개인적 생각 정리 고민의 시작... 모듈화와 Import의 우선순위 최근 GitLab의 계층적 그룹 구조를 테라폼으로 관리하는 방안을 고민하게 되었습니다.먼저 GitLab Group의 계층적 구조는 상위 그룹과 하위 그룹(Sub Group) 간의 종속 관계를 다루게 됩니다. 예로 아래와 같은 화면은 GitLab의 Group 구조입니다. 처음 고민했던 부분은 Import를 먼저 진행하고 리팩토링할 것인지, 아니면 모듈화된 구조를 먼저 테라폼 코드로 짠 후 Import할 것인지에 대한 부분이었습니다. Import는 이미 생성된 리소스를 테라폼의 상태 파일로 가져오는 과정이지만, Import 이후의 코드화 과정에서 문제가 발생할 가능성이 있었습니다. 특히, 계층형 리소스 구조를 유지하면서도 기존 리소스의 설정을 무너뜨리지 않.. [Terraform] local-exec & remote-exec 프로비저너 Terraform의 프로비저너(provisioner)는 리소스가 생성된 후 추가 작업을 자동으로 수행할 수 있게 합니다.이번 포스트에서는 local-exec, remote-exec 프로비저너와 함께 file 프로비저너를 사용하여 파일 전송을 자동화하는 방법을 설명하겠습니다. 1. local-exec 프로비저너local-exec 프로비저너는 테라폼이 실행되는 환경(local)에서 명령을 실행합니다.예를 들어 다음과 같이 수행할 커맨드를 정의할 수 있습니다.resource "null_resource" "example" { provisioner "local-exec" { command = "echo The server's IP address is ${self.private_ip}" }} 2. l.. [Terraform] terraform_data 리소스 (null_resource 비교) 1. terraform_data 리소스 (null_resource 와의 비교점)Terraform 1.4 버전이 릴리스되면서 기존의 null_resource를 대체하는 terraform_data 리소스가 추가되었습니다.terraform_data는 null_resource와 달리 별도의 프로바이더 구성이 필요하지 않으며, 테라폼 자체에 포함된 기본 수명주기 관리자를 제공합니다.null_resource와 terraform_data는 주로 Terraform 프로비저닝 동작을 설계하는 데 사용됩니다.이는 사용자가 의도적으로 프로비저닝 동작을 조율해야 하는 상황에서, 프로바이더가 제공하는 리소스 수명주기 관리만으로는 해결하기 어려울 때 유용합니다.terraform_data 리소스는 임의의 값(input인수를 통해).. [Terraform] Moved Block을 통한 코드 리팩터링 & Provider alias Terraform 0.13부터 moved 블록을 사용하여 리소스를 안전하게 이동하고 리팩터링할 수 있습니다. 이를 통해 리소스 이름이나 경로를 변경할 때 상태 파일을 안전하게 업데이트할 수 있습니다. Terraform Provider alias는 같은 Provider의 여러 인스턴스를 설정할 수 있도록 합니다. 이를 통해 서로 다른 설정을 가진 여러 Provider를 사용할 수 있습니다. 1. moved Block을 통한 코드 리팩터링moved block은 테라폼 코드에서 리소스의 이름은 변경되지만 이미 테라폼으로 프로비저닝 환경을 그대로 유지하고자 하는 경우 사용합니다. moved Block의 기본 문법moved { from = aws_instance.old_name to = aws_insta.. [Terraform] count, for_each 등 실습예제 Challenge1) 참고 코드 : https://github.com/junho102/Terraform-Study/tree/main/Week2/challenge1리전 내에서 사용 가능한 가용영역 목록 가져오기를 사용한 VPC 리소스 생성data "aws_availability_zones" "az" { state = "available"}resource "aws_vpc" "vpc" { cidr_block = var.vpc_cidr enable_dns_support = true enable_dns_hostnames = true tags = { Name = "${var.env}-vpc" }}resource "aws_subnet" "pub_subnet1" { vpc_id .. [Terraform] Variables, Outputs, Data, functions Variables and OutputsTerraform에서 변수(variables)는 크게 input, output, local로 볼 수 있음.local 변수는 주로 특정 값들을 연산하여 하나의 변수로 관리하려 할 때 사용. merge, concat, max와 같은 함수를 사용하여 특정 local변수를 생성 가능.# input variablesvariable "eks_version" { default = "1.22"}# output variablesoutput "dmz_subnet_id" { value = aws_subnet.dmz_subnet.*.id}# local variableslocals { common_tags = { Service = local.service_name Owner.. [Terraform] Resource Block 구문 문법(lifecycle, depends_on) resource를 생성하기 위해 필요한 Arguments 외에 모든 resource가 공통적으로 사용할 수 있는 Arguments를 Meta Arguments라 합니다. - Arguments 참조resource를 생성하기 위해 필요한 Arguments 외에 모든 resource가 공통적으로 사용할 수 있는 Arguments를 Meta Arguments라 합니다.Meta Argument 인 lifecycle, depends_on 에 대해 실습을 진행합니다. 1. lifecyclelifecycle Meta Agument는 리소스의 수명 주기 동작을 제어합니다.lifecycle은 다음과 같은 object을 통해 리소스의 수명주기를 제어할 수 있습니다. create_before_destroy업데이트 중에 리소스.. 이전 1 2 다음