테스트 도구 키트 모듈을 사용하여 모범 사례 적용

완료됨

ARM 템플릿(Azure Resource Manager 템플릿)을 개발하면 보다 쉽게 유효한 템플릿을 만들고 품질 개선을 위한 권장 사항을 제공할 수 있습니다. 이러한 권장 사항은 무엇이며 템플릿이 권장 사항을 따르는 것이 유용한 이유는 무엇일까요?

다양한 수준의 권장 사항이 있습니다. 변수 및 매개 변수에서 리소스에 적용되는 권장 사항에 이르기까지 다양합니다. 이러한 권장 사항을 개략적으로 살펴보고 권장 사항 준수를 통해 무엇을 얻을 수 있는지 알아보겠습니다.

  • 유지 관리. 템플릿 처음 작성부터 업데이트까지 템플릿을 개발할 때는 시간이 지날수록 템플릿을 깔끔하고 정돈된 상태로 유지하기가 어려워집니다. 템플릿이 커지면 매개 변수와 변수도 증가합니다. 각각의 용도와 적절한 사용 방법을 이해하는 것이 중요합니다.

    매개 변수의 이름이 적절히 지정되지 않아 매개 변수의 기능을 파악하느라 애쓰고 있다고 가정해 보겠습니다. 또는 하드 코딩된 값을 사용하면 안 되는 곳에 사용하고, 어떤 변경 사항으로 인해 Azure 서비스가 중단된다고 생각해 보세요. 이러한 문제들은 여러분이 지금 보는 것을 이해한 후에 나중에 무시해야 하는 부담으로 작용합니다. 이름을 지정하고 정리하는 방법을 따르면 관련 시나리오의 영향을 완화하는 데 도움이 될 수 있습니다.

  • 정확성. 모든 항목에 올바른 이름을 지정하려고 노력할 수 있지만 기억해야 하는 규칙이 너무 많아질 수 있습니다. 이러한 상황에서는 모든 규칙과 규정을 상기시켜 주고 이를 적용하는 도구가 필요합니다.

  • 유연성. 템플릿은 어떤 환경에서도 사용할 수 있을 만큼 충분히 유연해야 합니다. 템플릿을 올바르게 매개 변수화하지 않으면 다시 사용하지 못할 수 있습니다.

  • 확장성. 경우에 따라 자체 권장 사항을 추가하려고 합니다. 사용자의 회사 또는 팀은 각자 고유한 규칙을 적용할 수 있습니다.

참고

이러한 종류의 권장 사항과 대조하여 코드를 확인하는 것을 ‘린팅’이라고도 합니다.

ARM 템플릿 테스트 도구 키트

테스트 도구를 사용하는 것이 좋습니다. 그러면 문제를 찾아 템플릿을 개선하는 일은 도구에게 맡기고 템플릿 작성에 집중할 수 있습니다. ARM 템플릿 테스트 도구 키트라는 도구가 있습니다. ARM-TTK라고도 부릅니다. 이 도구는 일련의 테스트를 실행하여 앞에서 언급한 문제를 해결합니다. 테스트는 다음 범주로 그룹화할 수 있습니다.

  • 사용자 의도의 유효성 검사. 이 범주는 선언된 변수와 매개 변수가 모두 사용되는지 확인하고 사용되지 않는 경우 경고를 표시합니다.
  • 보안 관행 따르기. 또 다른 중요한 측면은 API 비밀과 같이 중요한 템플릿에서 아무것도 반환되지 않도록 하는 것입니다.
  • 적절한 언어 구문 사용. 하드 코드된 값을 사용하지 않도록 언어 구문 또는 도우미 함수를 사용해야 합니다.

참고

이러한 권장 사항은 요구 사항이 아니지만 따르는 것이 좋습니다.

도구 설치

해당 도구는 PowerShell 모듈입니다. 이를 실행하려면 다음 단계를 따라야 합니다.

  1. PowerShell을 설치합니다. 이 작업은 사용하는 운영 체제가 Linux인지 Mac 또는 Windows인지에 따라 다르게 수행됩니다.
  2. 모듈을 다운로드합니다. GitHub 리포지토리에 모듈이 호스트되어 있습니다. 거기에서 다운로드하거나 git clone 명령을 통해 가져올 수 있습니다.
  3. 모듈을 가져옵니다. 이번 단계는 PowerShell 세션에 입력하여 ARM-TTK 명령을 사용할 수 있도록 하는 한 줄의 명령어로 구성되어 있습니다.

다음 단원에서 이 모든 작업을 수행하는 방법을 알아봅니다. 도구를 설치하면 템플릿에서 테스트를 실행할 준비가 됩니다.

테스트 실행

테스트를 실행하려면 적절한 매개 변수를 사용하여 모듈을 호출해야 합니다. -TemplatePath는 배포 템플릿 파일의 위치를 가리키는 문자열을 요구하는 필수 매개 변수입니다. 템플릿의 파일 이름은 azuredeploy.json 또는 maintemplate.json이어야 합니다. 따라서 일반적인 테스트 실행은 다음 명령과 같이 표시될 수 있습니다.

Test-AzTemplate -TemplatePath path/to/template

해당 도구는 템플릿 파일을 테스트하고 동일한 디렉터리 및 하위 폴더에 있는 템플릿 파일도 테스트합니다.

테스트 실행의 일반적인 출력은 다음과 같이 표시됩니다.

[+] adminUsername Should Not Be A Literal (24 ms)
[+] apiVersions Should Be Recent (18 ms)
[+] artifacts parameter (16 ms)
[+] DeploymentTemplate Schema Is Correct (17 ms)
[+] IDs Should Be Derived From ResourceIDs (15 ms)
[-] Location Should Not Be Hardcoded (41 ms)
     azuredeploy.json must use the location parameter, not resourceGroup().location (except when used as a default value in the main template)

성공한 테스트는 녹색으로 인코딩되고 [+]가 앞에 추가됩니다. 실패한 테스트는 빨간색으로 인코딩되고 접두사 [-]를 포함합니다.

테스트 매개 변수를 사용하여 테스트 실행 구성

지금까지 해당 도구를 실행할 때 -TemplatePath 매개 변수를 포함해야 하는 이유를 살펴봤습니다. 도구는 선택적 매개 변수도 허용합니다. 관련 매개 변수를 사용하여 특정 파일이나 특정 테스트를 실행할 수 있습니다. 이러한 매개 변수를 사용하면 템플릿을 작성하고 디버그할 때 더 세부적인 제어가 가능합니다.

-File 매개 변수는 특정 파일을 실행하는 데 사용됩니다. -Test 매개 변수를 사용하면 실행할 테스트 시나리오를 지정할 수 있습니다.

다음과 같은 방법으로 매개 변수를 사용할 수 있습니다.

  • 단일 파일에서 테스트 실행. 현재 작업 중인 단일 파일에서만 테스트를 실행하는 것이 좋습니다. 이렇게 하면 특정 템플릿 파일을 작성하는 데 집중하기가 더 쉬워지기 때문입니다. 또한 출력에 노이즈가 적게 포함되고 관심 있는 내용만 표시되는 추가적인 이점도 있습니다. 파일 경로(파일 이름 포함)와 함께 -File 매개 변수를 사용하면 해당 파일에서만 테스트를 실행할 수 있습니다.

    중요

    이 매개 변수를 사용하려면 azuredeploy.json 또는 maintemplate.json이 계속 지정된 위치에 있어야 합니다.

  • 모든 파일에서 단일 테스트 유형 실행. 경우에 따라 단일 테스트 유형을 실행하여 해당 시나리오의 조건을 충족하는지 확인하는 것이 좋습니다. -Test 매개 변수를 사용하여 이 작업을 수행할 수 있습니다. 이 매개 변수를 사용하려면 따옴표로 묶인 테스트의 전체 이름을 제공해야 합니다(예:Resources Should Have Location).