LinuxユーザーがイジるはじめてのAzure

LinuxユーザーがAzureを使いこなせるように応援するブログです

はじめてのARM template(storageaccount編)

多忙にかまかけて更新が途切れておりました。。。反省。

 

今回はAzure Resource Manager template(略してARMテンプレート)と呼ばれるものを紹介したいと思います。

 

ちなみにTechSummit 2016で発表した資料は以下になります。

なにそれ?なにができるの?という基本的な部分は下記を参考にしてください。

 

https://docs.com/mstechsummit16/fe2736ac-b53b-47f4-a4cd-f57096aad25a/dep001-infrastructure-as-code-linux-azure

 

ここでは実践的な利用説明をしていきます。

まず以下のGithubをご覧ください。

 

 

 

今後deploy確認が取れたものを順次上げていく&ここで日本語の説明をしていくつもりです。commitは随時やってるのでupdate日時を参考に適当にご利用ください。

 

README.txtにも記載していますが、ディレクトリ構成は以下としています。

 

- HowToUseOnCentOS

  CentOS7.2にAzure-CLiをインストールしてTemplateデプロイやエクスポートなど

 操作する際のあんちょこメモを記載しています。

 Azure Portalからの操作に不慣れな方やVisual Studio Codeよりvimだよね、という

 方はこちらをご参考に。

 

- README.txt

 このGithubディレクトリ構成を記載しています。

 肝心の部分だけを言うと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でどう記載するか、といった点

でいくつか紹介します。