この記事は、オルターブース Advent Calendar 2020 2日目 MLBお兄さん から2年連続バトンを受け取って、3日目の記事です。
ARMテンプレートテストツールキット(arm-ttk)?
Azure Resource Manager (ARM) テンプレート テスト ツールキットでは、推奨される方法がテンプレートで使用されているかどうかが確認されます。 テンプレートが推奨されるプラクティスに準拠していない場合は、推奨される変更を含む警告の一覧が返されます。 テスト ツールキットを使用すると、テンプレートの開発での一般的な問題を回避する方法がわかります。
これまで ARMテンプレートの書き方ってこれで本当にいいの・・・? という思いがありました。もちろん動くARMテンプレートなので使う上では問題ありません。
このARM-TTKを使えば、
- 推奨の方法で書く
- 人によらない統一した書き方を保てる
をコントールすることができるので、ARMテンプレートの品質を維持につながります。テスト内容はカスタマイズしたり、ARM-TTKをパイプラインに組み込んだりすることもできます。
何をテストできるの?
ARMテンプレートにARM-TTKを流すと、結果はこのような形で出てきます。
テストは緑色が合格、赤色が不合格で表示されます。各テスト項目の詳細はこちらから確認できます。
使うには?
ARM-TTKはPowerShellスクリプトです。各OSへPowerShellをインストールして利用します。
- Windows
- Linux
- macOS
私的環境準備
- macOS
- ローカル環境汚したくない
- PowerShellに慣れてない
という個人的背景から、ARM-TTKが動くDockerを準備してみました。Dockerにしておけば、環境準備も配布も楽ですからね。
FROM mcr.microsoft.com/powershell:lts-ubuntu-18.04 as build RUN apt-get update && apt-get install -y --no-install-recommends \ git \ && rm -rf /var/lib/apt/lists/* RUN git clone https://github.com/Azure/arm-ttk.git FROM mcr.microsoft.com/powershell:lts-ubuntu-18.04 COPY --from=build /arm-ttk/arm-ttk /arm-ttk WORKDIR /arm-ttk CMD ["./Test-AzTemplate.sh", "-?"]
作成したDockerfileとDockerイメージはこちらに置いてあります。
dockerでARM-TTKを動かしてみます。試しに、このARMテンプレートをARM-TTKで流してみました。
cd 101-webapp-basic-windows docker run -it --rm -v $PWD:/template hawaku/arm-ttk ./Test-AzTemplate.sh -TemplatePath /template Validating template\azuredeploy.json deploymentTemplate [+] adminUsername Should Not Be A Literal (168 ms) [+] apiVersions Should Be Recent (109 ms) [+] artifacts parameter (18 ms) [+] DependsOn Best Practices (22 ms) [+] Deployment Resources Must Not Be Debug (28 ms) [+] DeploymentTemplate Must Not Contain Hardcoded Uri (31 ms) [+] DeploymentTemplate Schema Is Correct (6 ms) [+] Dynamic Variable References Should Not Use Concat (6 ms) [+] IDs Should Be Derived From ResourceIDs (110 ms) [+] Location Should Not Be Hardcoded (48 ms) [+] ManagedIdentityExtension must not be used (4 ms) [+] Min And Max Value Are Numbers (9 ms) [+] Outputs Must Not Contain Secrets (12 ms) [+] Parameters Must Be Referenced (15 ms) [+] Parameters Property Must Exist (5 ms) [+] providers apiVersions Is Not Permitted (3 ms) [+] ResourceIds should not contain (26 ms) [+] Resources Should Have Location (8 ms) [+] Secure String Parameters Cannot Have Default (5 ms) [+] Template Should Not Contain Blanks (11 ms) [+] Variables Must Be Referenced (28 ms) [+] Virtual Machines Should Not Be Preview (55 ms) [+] VM Images Should Use Latest Version (2 ms) [+] VM Size Should Be A Parameter (45 ms)
ちなみに、自作のARMテンプレートにARM-TTKを流したら沢山の不合格がでて、「うぁぁぁぁ」ってなりました。不合格が出てもARMテンプレートとしては役目をしてくれ(直します)。
それでは、4日目もお楽しみに! オルターブース AADOJO Advent Calendar 2020 - Adventar