목록분류 전체보기 (53)
근묵자흑
테라폼(Terraform)으로 인프라를 관리할 때 코드의 품질과 안정성을 보장하기 위해서는 체계적인 테스트 전략이 필요합니다. 이 글에서는 다양한 테스트 방법과 실제 구현 예제를 살펴보겠습니다.1. 자동화된 테스트테라폼 코드의 자동화된 테스트를 시작하기 위해, Ruby 웹 서버 예제를 통해 기본 개념을 이해해보겠습니다. 통합 테스트를 위해서는 다음과 같은 단계가 필요합니다:localhost에서 웹 서버를 실행하여 포트 리스닝웹 서버에 HTTP 요청 전송예상한 응답이 오는지 검증def do_integration_test(path, check_response) port = 8000 server = WEBrick::HTTPServer.new :Port => port server.mount '/', Web..
https://developer.hashicorp.com/terraform/tutorials/configuration-language/test 블로그를 기반으로 작성된 블로그입니다.소개Terraform 테스트를 사용하면 기존 상태 파일이나 리소스에 영향을 주지 않고도 모듈 구성을 검증할 수 있습니다. 테스트는 plan이나 apply 워크플로우와는 별개의 작업으로, 임시 인프라를 구축하고 이러한 단기 리소스의 인메모리 상태에 대해 테스트를 수행합니다. 이를 통해 인프라에 영향을 주지 않고도 모듈 변경사항을 안전하게 검증할 수 있습니다.테스트와 검증의 차이검증(Validation): 변수 검증, 사전/사후 조건, 체크 블록 등은 배포된 인프라의 유효성을 확인합니다. 검증이 실패하면 모듈 사용자가 해결해야 합..
이 블로그는 https://developer.hashicorp.com/terraform/language/tests/mocking 페이지를 정리해 둔 블로그 입니다.참고: Test mocking은 Terraform v1.7.0 이상에서 사용 가능합니다. Terraform은 테스트를 위해 provider, resource, data source를 mock할 수 있게 해줍니다. 이를 통해 실제 인프라를 생성하거나 자격 증명이 필요하지 않고도 모듈의 일부를 테스트할 수 있습니다. Terraform 테스트에서 mock된 provider나 resource는 일반적으로 기본 provider API에서 제공하는 모든 computed 속성에 대해 가짜 데이터를 생성합니다. Mocking 기능은 terraform test..
1. 프로덕션 수준 인프라 구축에 오랜 시간이 걸리는 이유DevOps 산업의 성숙도프로덕션 수준 인프라 구축이 오래 걸리는 첫 번째 이유는 DevOps 산업이 아직 초기 단계이기 때문입니다:클라우드 컴퓨팅, IaC, DevOps 등의 용어는 2000년대 중후반에 등장테라폼, 도커, 패커, 쿠버네티스는 2010년 중후반에 출시기술이 아직 충분히 성숙하지 않았고, 경험 많은 전문가가 부족DevOps 산업의 현재 상태 (2025)시스템 복잡도 증가마이크로서비스 아키텍처의 보편화멀티클라우드/하이브리드 환경 요구 증가보안 요구사항의 지속적 강화규제 요구사항의 복잡화높아진 기대치제로 다운타임에 대한 요구즉각적인 확장성 기대완벽한 보안과 규정 준수비용 최적화 요구통합의 어려움레거시 시스템과의 연동다양한 도구들 간의 ..
1. 반복문 활용하기1.1 count 매개 변수를 이용한 반복count는 테라폼에서 가장 기본적인 반복 방법입니다. 동일한 리소스를 여러 개 생성할 때 사용합니다.resource "aws_instance" "web" { count = 3 # 3개의 동일한 인스턴스를 생성 ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "web-server-${count.index}" # 각 인스턴스에 순차적인 이름 부여 }}상세 설명:count = 3: 리소스를 3번 반복 생성합니다.count.index: 0부터 시작하는 인덱스 값을 제공합니다.생성되는 인스턴스 이름: "web-server-0", "we..
인프라를 코드로 관리하다 보면 비슷한 패턴의 코드가 자주 반복되는 것을 발견하게 됩니다. 예를 들어 개발 환경과 운영 환경에서 동일한 구조의 VPC를 생성하거나, 여러 리전에 비슷한 구성의 웹 서버를 배포해야 할 수 있습니다. 이런 상황에서 테라폼의 모듈(Module) 기능을 활용하면 코드의 재사용성을 높이고 유지보수를 쉽게 만들 수 있습니다.테라폼 모듈이란?테라폼 모듈은 여러 리소스를 하나의 논리적 단위로 패키징한 것입니다. 마치 프로그래밍 언어의 함수처럼, 입력값을 받아 정의된 로직에 따라 리소스를 생성하고 필요한 값을 출력할 수 있습니다. 잘 설계된 모듈은 다음과 같은 장점을 제공합니다:코드 재사용을 통한 생산성 향상일관된 인프라 구성 유지리소스 생성 로직의 캡슐화인프라 변경의 용이성모듈의 기본 구..