ARMテンプレートはじめの一歩
ARMテンプレートはじめの一歩
Azureを利用する際にARMテンプレートという言葉を聞いた事がないでしょうか?まずARMって何だ?そしてそsのテンプレートとは?疑問に思った方も多いはずです。今回はAzureの基本的な構造から、ARMテンプレートの概要について紹介していこうと思います。
ARMって?
ARMとはAzure Resource Managerの略称です。リソースとはAzureでの仮想マシンやデータベース、仮想ネットワークなど、Azure環境上に構築する各サービスのことを指します。「クラウド上で動かすもの」がリソースだと思ってください。リソースはそれぞれのリソースグループを設定することで、ARMを使ってリソースグループごとに役割や動作を管理することができるのです。例えば仮想マシンのリソースグループには一括してこの設定、データベースのリソースグループにはこの設定、というような管理をARMによって行っていきます。
ARMの特徴
・リソースはリソースグループ単位で管理・監視することができる
・ロールベースアクセス制御 (RBAC)によってリソース グループ内すべてのサービスにアクセス制御が適用できる
・タグをリソースに適用し、サブスクリプションのすべてのリソースを整理することができる。
※サブスクリプションとはAzureの契約、課金の単位のようなものです。同じタグを共有するリソースのコストを表示することでタグ別(用途・組織別)の課金が管理しやすいものとなります。
・スクリプトではなく宣言型のテンプレートを使用してインフラを管理できる。
上記のようなテンプレートを使ったインフラストラクチャの管理をInfrastructure as Code(IaC)といい、ARMで使用するJSON形式で記述されたテンプレートの事をARMテンプレートと言います。
ARMテンプレート
ここからはARMテンプレートについて紹介していきますが、まずはJSONコードについて知っていきましょう。
JSONコードとは
JavaScript Object Notaionの略称です 。「名前」(を表す文字列)と「値」を「 : 」(コロン)でつないでペアにしたものをJSONでは「オブジェクト」と呼びます。これをカンマで区切って複数並べ、全体を中括弧(「 { 」と「 } 」)で囲んだものがJSON形式です。ただしRFC 7159の記述によると、名前なしの単独の「値」だけでも、有効なJSON形式として扱われることになっています。
ARMテンプレートの概要
{
"$schema": "",
"contentVersion": "",
"parameters": {},
"variables": {},
"resources": [],
"output": []
}
ARMテンプレートは上記のような構成になっています。それぞれの項目(セクション)について紹介していきます。
$schema
テンプレート言語のバージョンが記述されている JSON スキーマ ファイルの場所です。 使用するバージョン番号は、デプロイのスコープと JSON エディターによって異なります。
contentVersion
テンプレートのバージョン (1.0.0.0 など)。 この要素には任意の値を指定できます。 この値を使用し、テンプレートの大きな変更を記述することができます。 テンプレートを使用してリソースをデプロイする場合は、この値を使用して、適切なテンプレートが使用されていることを確認できます。
parameters
テンプレートファイル(本体のファイル)とはまた別のファイル(パラメータファイル)から取得したい変数を記述します。リソースを作成する際に毎回、ユーザーが指定したい項目を定義します。例えば各リソースの名前やログインユーザー名/パスワードなどです。
variables
毎回変更の必要がない固定値や、上記のparametersを組み合わせて値として定義することができます。例えばユーザーが入力したリソース名に特定の識別子を必ず追加したい場合などです。parametersとは違い、テンプレート本体ファイル内で変数を定義するセクションです。
resources
デプロイや変更するリソースを定義します。仮想マシンやストレージを作成する時などに記述するセクションです。
output
デプロイのリクエストに対する返り値を定義します。作成した仮想マシンのパブリックIPを返したり、デプロイが成功したことをコメントで返したりする際に使用します。
まとめ
いかかでしたでしょうか。今回はARMテンプレートのはじめの一歩として、
・ARMはAzureのリソースを管理することができる
・リソースは「クラウド上で動かすもの」
・ARMテンプレートでインフラを構築することをInfrastructure as Code(IaC)という
・ARMテンプレートはJSONコードで記述する
ということが概要として理解していただければと思います。JSONコード形式を理解することができれば、一見非常に難しそうに見えるARMテンプレートの構造も少しずつ理解できてくるのではないでしょうか。また、Azure クイック スタート テンプレートにはたくさんのテンプレートが提供されているので、この中からテンプレートを自分でカスタマイズして使用することも可能となっています。
自分で1から作っていくのはさすがに無理かも…という方はこのテンプレートから使用していくのもおすすめです。
参考文献:
https://jmtechsupport.jp/azure/1361/
https://qiita.com/j-tsurumi/items/cc86e9412349da80a323
https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/overview