はじめてのARM template(storageaccount編)
多忙にかまかけて更新が途切れておりました。。。反省。
今回はAzure Resource Manager template(略してARMテンプレート)と呼ばれるものを紹介したいと思います。
ちなみにTechSummit 2016で発表した資料は以下になります。
なにそれ?なにができるの?という基本的な部分は下記を参考にしてください。
ここでは実践的な利用説明をしていきます。
まず以下のGithubをご覧ください。
今後deploy確認が取れたものを順次上げていく&ここで日本語の説明をしていくつもりです。commitは随時やってるのでupdate日時を参考に適当にご利用ください。
README.txtにも記載していますが、ディレクトリ構成は以下としています。
- HowToUseOnCentOS
CentOS7.2にAzure-CLiをインストールしてTemplateデプロイやエクスポートなど
操作する際のあんちょこメモを記載しています。
Azure Portalからの操作に不慣れな方やVisual Studio Codeよりvimだよね、という
方はこちらをご参考に。
- README.txt
肝心の部分だけを言うとparts配下がAzureサービス単体でデプロイするひな型を
用意しています。customize配下がAzureサービスを複合的に利用してデプロイ
するものを用意します。
では実践編にうつります。
■storageaccount.json
〇場所:
parts/storageaccount.json
〇概要:
単一storageaccountを1つ作成するテンプレートです。
〇parameters(変更可能個所):
ストレージアカウントの名前、冗長方式の選択。
〇注意点:
ストレージアカウントの名前は「storaccount01」をデフォルトにしています。
冗長方式のデフォルトはLRSにしています。
API-Versionは「2015-06-15」を利用しています。
■loop-create-storageaccount.json
〇場所
parts/loop-create-storageaccount.json
〇概要:
任意の数だけstorageaccountを作成するテンプレートです。
〇parameters(変更可能個所):
ストレージアカウントの名前、冗長方式の選択、作成する個数。
〇注意点:
ストレージアカウントの名前は「strloop0」をデフォルトにしており、この後
ろに指定した個数の数値(int)を繋げています。
例)個数を10とした場合、strloop01~strloop010まで作成されます。
冗長方式で選択したものは作成されるストレージアカウント全てに同一の冗長
方式がセットされます。1個はLRSで2個目はGRSで3個目以降はRA-GRSで、
といった利用はできません。希望があれば作りますが。
今回紹介するテンプレートは上記2つだけですが、記載時・修正時にハマること
を避けるため、2つほどポイントを記載します。
1:api versionと利用できるtype。
あれ?記事に記載されているものをコピペしたけどデプロイできない、とか
ハマるケースが多いです。それもそのはずで、account typeなどは指定できる
値がapi versionによって動作しないものもあるからです。
簡単に言えば利用するバージョンのAPIで対応されていない指定方法はエラー
になる、です。なので以下のAPIバージョンと記載方法のひな型を参考に組み
立てましょう。
2、関数について。
JSONファイルの容量制限は1MB以内とあります。
※.parametersファイルは64KB以内。
全てべた書きで記載するのもありですが、効率よく記載することで容量の壁に
当たらない&修正範囲を少なくするといった「かしこい」書き方は少しずつ覚えて
いきましょう。参考とするサイトは以下です。
はい、すみません、英語なのと全て覚えるのかおい!という状況になってしまう
ので、その中でもよく利用される関数について以下補足します。
concat
⇒ 文字列を連結します。()内にある「,」カンマ区切りのものを
連結させます。
例:concat("テンプレート","は","便利ですね") みたいな感じで
つかります。
parameters('')
⇒ parameters('変数名') として、指定された値を呼び出してます。
上のconcatと繋げてconcat(parameters('変数名'),"便利ですね")みたいに
毎回固定の文字列を記載せずに記載するやり方が一般的、というか
コードを修正する際に修正範囲を少なくするやり方です。
同じようにvaliables('変数名')といった利用もできます。
resourceGroup().ほげほげ
⇒ ここではresourceGroup().locationを使っています。
resourceGroupの関数を呼び出して、locationの値を取ってきています。
東日本リージョンの場合はjapaneastという文字列と同義です。
copyindexとcopy
⇒ この2つはセットで覚えます。よく使う記載パターンはresourcesの中で
nameの中にcopyindex()をconcatで文字列連結させ、copy関数の中で
countの数を指定し、作成する個数を指定するやり方です。
for文のように{}内で記載した部分だけをループさせる、といった記載
方法ではないため、とっつきづらいですが、1つのパターンを覚えて
あとは流用・展開すれば勝手はわかると思います。
長くなったので、storageaccountのテンプレート作成はこの辺で終わります。
次回はまた別のAzureサービスをtemplateでどう記載するか、といった点
でいくつか紹介します。