Terraform (23) 썸네일형 리스트형 Terraform으로 기존 AWS 보안 그룹을 안전하게 가져오고 관리하는 방법 (CSV + Import Block 활용) Terraform을 도입하려는 조직에서 기존에 수동으로 구성된 AWS 리소스를 코드화하는 것은 중요한 과제입니다. 특히 Security Group처럼 많은 룰과 조합을 포함하는 리소스는 수작업이 어렵고 실수가 발생하기 쉽습니다.이 글에서는 Terraform 1.5 이상의 import block 기능과 CSV 기반 동적 관리 전략을 이용해 AWS 보안 그룹을 선언적으로 가져오는 방법을 공유하려합니다. 왜 이걸 하게 되었을까?저희 팀에서는 Terraform Cloud 기반으로 고객사의 IaC 환경 마이그레이션을 지원하고 있으며, 그 중 한 고객사는 Terraform을 처음 도입한 사례였습니다. 이 고객사는 기존에 AWS 인프라를 수동으로 운영하고 있었고, Terraform Cloud 도입과 함께 기존 리소.. 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.. HCP Terraform(Terraform Cloud)의 Policy(Sentinel)로 보안/거버넌스 정책 적용하기 2024년 4월 22일부터 Terraform Cloud의 이름이 HCP Terraform으로 변경되었습니다.하기 내용에서는 Terraform Cloud 이름 대신 HCP Terraform 이름으로 대체하여 설명을 진행하도록 하겠습니다. 오늘은 HCP Terraform의 Policy as Code(PaC) 도구인 Sentinel을 사용하여 보안 및 거버넌스 정책을 적용하는 방법에 대해 설명드리겠습니다.Sentinel을 사용하면 인프라 코드가 조직의 규정과 표준을 준수하도록 강제할 수 있는데 이번 포스트에서는 Sentinel의 개념, 설정 방법, 예제를 통해 HCP Terraform에서 Sentinel을 활용할 수 있는지에 대해 살펴보도록 하겠습니다. 1. Sentinel 이란?Sentinel은 Has.. HCP Terraform(Terraform Cloud)의 Team 권한(RBAC) 설정 2024년 4월 22일부터 Terraform Cloud의 이름이 HCP Terraform으로 변경되었습니다.하기 내용에서는 Terraform Cloud 이름 대신 HCP Terraform 이름으로 대체하여 설명을 진행하도록 하겠습니다. 이전에 Project & Workspace에 대해 설명드렸는데 오늘은 HCP Terraform의 Project 와 Workspace 별로 Team 권한(RBAC)을 설정하는 방법에 대해 설명드리도록 하겠습니다. 1. HCP Terraform 에서의 RBAC 관리의 중요성HCP Terraform 에서 RBAC(역할 기반 접근 제어)를 사용하는 것은 보안과 효율성 측면에서 중요합니다.보통 기업에서 다음과 같은 이유로 RBAC 관리를 필요로 하게 됩니다.보안 강화 : 각 .. 이전 1 2 3 다음