ごった煮

色々な事を書いてます

ARM Template を YAML で書きたい

インフラを構成管理するという意味で、ARM Template は、とても便利ですが、如何せん Json なので何かと不便な面もあります。 個人的には、コメントが書ける Yaml の方が構成ファイル用のフォーマットとしては、優秀だと感じています。

そこでARM Template を Yaml で記述する方法を紹介します。

どうやるのか

最終的に YamlJson に変換することが出来れば OK です。 ということで Yaml に変換するツールを持ってきます。

ツールの紹介

今回は、Yarm というツールを使用します。

github.com

このツール群は、Arm Template 風に書かれた Yaml を実際の Arm Template に変換してくれるツールです。 このツールは、現役のMS社員の方がメインになって開発をしているツールのようです。

ソースコードをビルドして使用する他にバイナリが配布されているのでそれを使用することも可能です。 とりあえずバイナリをダウンロードしましょう。

github.com

使い方

落としてきたファイルを解凍すると、その中に yarm.cmd というファイルがあるのでこちらを実行します。

コマンドのオプションは、以下の通り

  • -i, --input 入力ファイルのパスを指定します。ローカルのファイルパスに加え、Web上のファイルも指定できます。Yaml or Json ファイルは、自動判別されます。(必須)
  • -o, --output 出力ファイルのパスを指定します。指定しない場合は、入力ファイルと同一の場所に返還後のファイルが出力されます。
  • --help ヘルプ
  • --version バージョン表示
Yaml to Json
yarm -i [Yamlファイル]

例えば

yarm -i deploy-function.yaml

とすると、deploy-function.yaml と同じ階層に deploy-function.json が出力されます。

yarm -i deploy-function.yaml -o function-template.json

とすると、function-template.json の名前で変換結果が出力されます。

Json to Yaml

そもそも Yaml のテンプレート自体非公式なものでドキュメントが存在しないので、最初のテンプレート起こしの意味合いなどでも JsonYaml に変換したい場面があるかと思います。 その場合でも簡単に動かせます。

yarm -i deploy-function.json

のようにすると、deploy-function.yaml として出力されます。

yarm -i deploy-function.json -o function-template.yaml

とすると、function-template.yaml として出力されます。 JsonYaml を気にせず使えるのは、とてもありがたいですね。

またコマンド紹介の部分でも書きましたが以下のようにしても動きます。

yarm -i https://github.com/Azure/azure-quickstart-templates/blob/master/101-app-service-certificate-standard/azuredeploy.json

わざわざローカルに落としてこなくても 変換できるので色々な場面で使えそうです。

まとめ

Yaml は、完璧なフォーマットでないので、劇的に ARM Template を扱うのが楽になるかといわれると微妙ですが、Json と比べて 記述量が少なくなったり、コメントを書いてわかりやすくしたりといったことが出来る分扱いやすくなるかなと思います、

興味のある方は、ぜひ使ってみてください。