테라테스트로 AWS 인프라 테스트 자동화하기

AWS에서 코드로서의 인프라(IaC)를 채택하는 조직들은 인프라가 올바르게 프로비저닝될 뿐만 아니라 배포 후 의도한 대로 기능하는지를 보장하는 데 종종 어려움을 겪습니다. 사소한 잘못된 구성도 비용이 많이 드는 다운타임, 보안 취약점 또는 성능 문제로 이어질 수 있습니다.

전통적인 테스트 방법 — 예를 들어 자원을 수동으로 검사하거나 정적 코드 분석에만 의존하는 것 — 은 프로덕션 환경에 대해 충분한 신뢰를 제공하지 않습니다. 라이브로 전환하기 전에 AWS 인프라 변경 사항을 검증할 수 있는 자동화되고 신뢰할 수 있는 방법이 절실히 필요합니다.

해결책

Terratest는 Go로 작성된 자동화된 테스트 프레임워크로, AWS와 같은 실제 클라우드 환경에서 인프라 코드를 테스트하기 위해 특별히 설계되었습니다. Terratest는 자원을 프로그래밍 방식으로 배포, 검증 및 파괴함으로써 IaC 작성(예: Terraform)과 변경 사항을 자신 있게 배포하는 것 사이의 간극을 메웁니다. 작동 방식은 다음과 같습니다:

아래는 Terraform을 사용하여 Terratest로 AWS 인프라 테스트를 수행하는 방법에 대한 자세한 가이드와 Go에서의 샘플 코드 스니펫이 포함되어 있습니다. 이 워크플로우는 AWS 자원을 프로비저닝하고, 이를 대상으로 테스트를 실행하여 의도한 대로 작동하는지 확인한 다음, 모든 것을 자동으로 제거하는 데 도움이 됩니다.

전제 조건

Terraform 설치

공식 사이트에서 Terraform을 다운로드하고 설치합니다.

Go 설치

Terratest는 Go에서 작성되었으므로 Go가 설치되어 있어야 합니다. 공식 사이트에서 Go를 다운로드합니다.

AWS 자격 증명 설정

AWS 자격 증명이 설정되어 있는지 확인합니다(예: ~/.aws/credentials 또는 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY와 같은 환경 변수를 사용).

Go 모듈 초기화

프로젝트 디렉토리에서 다음을 실행합니다:

Shell

 

프로젝트에 Terratest 추가go.mod

프로젝트/리포지토리 디렉토리에서 다음을 실행합니다:

Shell

 

Terraform 구성 예시

AWS EC2 인스턴스를 시작하는 간단한 Terraform 구성을 만듭니다. 다음 파일들을 aws_ec2_example라는 이름의 디렉토리(또는 원하는 이름으로)에 넣습니다.

참조를 위해 main.tf로 저장합니다.

Shell

 

다음으로, variables.tf:

Shell

 

Terratest 코드 스니펫

테스트라는 이름의 디렉토리에 Go 테스트 파일을 생성합니다(다른 이름으로 지정할 수 있지만, 테스트가 일반적입니다). 예를 들어, aws_ec2_test.go:

Shell

 

이 테스트가 하는 일

  • 초기화하고 적용 ../aws_ec2_exampl에 있는 Terraform 구성.
  • 지정된 AMI로 us-east-1에 EC2 인스턴스를 배포합니다.
  • instance_id Terraform 출력을 캡처합니다.
  • Testify의 assert 라이브러리를 사용하여 인스턴스 ID가 비어 있지 않음을 확인합니다.
  • 테스트가 끝날 때 자원을 파괴하여 계속되는 비용을 방지합니다.

테스트 실행

  • Go 테스트 파일이 있는 디렉토리(예: 테스트 디렉토리)로 이동합니다.
  • 다음 명령을 실행합니다:
Shell

 

  • 출력을 관찰합니다:
    • Terraform이 AWS 인프라를 초기화하고 적용하는 것을 볼 수 있습니다.
    • 테스트 어설션을 통과한 후에 Terraform이 리소스를 파괴할 것입니다.

결론

이러한 단계를 따르면 AWS IaC 워크플로에 Terratest를 통합하여 다음을 수행할 수 있습니다:

  • Terraform을 사용하여 AWS 리소스를 프로비저닝합니다.
  • Go 기반 테스트로 프로그래밍 방식으로 테스트합니다.
  • 인프라가 올바르게 구성되어 기대대로 작동하는지 검증합니다.
  • 자동으로 해체, 불필요한 AWS 비용을 발생시키지 않고 반복 테스트 실행을 위한 깨끗한 환경을 유지하십시오.

Source:
https://dzone.com/articles/terratest-for-aws