다음을 통해 공유


Terraform 코드 테스트

Terraform은 클라우드 인프라의 정의, 미리 보기 및 배포를 사용합니다. Terraform을 사용하는 경우 HCL 구문를 사용하여 구성 파일을 만듭니다. HCL 구문을 사용하면 클라우드 공급자(예: Azure) 그리고 클라우드 인프라를 구성하는 요소를 지정할 수 있습니다. 구성 파일을 만든 후 배포되기 전에 인프라 변경을 미리 볼 수 있는 실행 계획를 만듭니다. 변경 내용을 확인 한 후에는 실행 계획을 적용하여 인프라를 배포합니다.

Terraform은 IaC(Infrastructure as Code) 도구입니다. 이 도구 범주는 프로젝트의 소스 코드와 마찬가지로 Terraform 파일을 처리한다는 사실을 나타냅니다. 해당 프로세스의 일부에는 버전 관리 및 소스 코드 제어가 포함됩니다. 또한 테스트는 프로세스의 일부여야 합니다. 이 문서에서는 Terraform 프로젝트에 대해 실행할 수 있는 다양한 유형의 테스트에 대해 간략히 설명합니다.

통합 테스트 구현

통합 테스트는 새로 도입된 코드 변경이 기존 코드를 중단하지 않는지 확인합니다. DevOps에서 CI(연속 통합)는 코드 베이스가 변경될 때마다 전체 시스템을 빌드하는 프로세스(예: PR을 Git 리포지토리에 병합하려는 사용자)를 나타냅니다. 다음 목록에는 통합 테스트의 일반적인 예제가 포함되어 있습니다.

  • Lint 및 형식과 같은 정적 코드 분석 도구입니다.
  • terraform 유효성 검사를 실행하여 구성 파일의 구문을 확인합니다.
  • terraform 계획을 실행하여 구성이 예상대로 작동하는지 확인합니다.

단위 테스트 구현

단위 테스트는 프로그램의 특정 부분 또는 함수가 올바르게 작동하는지 확인합니다. 단위 테스트는 기능 개발자가 작성합니다. TDD 또는 테스트 기반 개발이라고도 하는 이 유형의 테스트에는 지속적인 짧은 개발 주기가 포함됩니다. Terraform 프로젝트의 컨텍스트에서 단위 테스트는 생성된 계획에서 사용할 수 있는 실제 값이 예상 값과 같은지 확인하기 위해 사용 terraform plan 형식을 사용할 수 있습니다.

단위 테스트는 Terraform 모듈이 더 복잡해지기 시작할 때 특히 유용합니다.

  • 동적 블록 생성
  • 루프 사용
  • 지역 변수 계산

통합 테스트와 마찬가지로 여러 번 단위 테스트가 연속 통합 프로세스에 포함됩니다.

규정 준수 테스트 구현

규정 준수 테스트는 구성이 프로젝트에 대해 정의한 정책을 따르는지 확인하는 데 사용됩니다. 예를 들어 Azure 리소스에 대한 지정학적 명명 규칙을 정의할 수 있습니다. 또는 정의된 이미지 하위 집합에서 가상 머신을 만들려고 할 수도 있습니다. 규정 준수 테스트는 이러한 규칙을 적용하는 데 사용됩니다.

규정 준수 테스트는 일반적으로 연속 통합 프로세스의 일부로 정의됩니다.

E2E(엔드투엔드) 테스트 구현

E2E 테스트는 프로덕션에 배포하기 전에 프로그램 작동의 유효성을 검사합니다. 예제 시나리오는 가상 네트워크에 두 개의 가상 머신을 배포하는 Terraform 모듈일 수 있습니다. 두 컴퓨터가 서로 ping되지 않도록 방지할 수 있습니다. 이 예제에서는 배포 전에 의도한 결과를 확인하는 테스트를 정의할 수 있습니다.

E2E 테스트는 일반적으로 3단계 프로세스입니다. 먼저 구성이 테스트 환경에 적용됩니다. 그런 다음, 코드를 실행하여 결과를 확인합니다. 마지막으로 테스트 환경은 다시 초기화되거나 중단됩니다(예: 가상 머신 할당 취소).