基本的なところな部分から実際に使ってみての思ったことや苦労したことを書いていこうと思います。
個人的な解釈が入っているところもありますのでご了承ください。
いくつか省略しているところは後に使っていく中で気づきがあればアップデートします
ARMテンプレートとは
メリットとしてはリソースグループ内のリソースを定義できることの他に検証環境など同じリソース構成を複製するときに便利。もしくは普段は消しておいて必要な時にすぐ作れるなどコスト面でもメリットが出てきます
使用するもの
すでにAzureをPortalやCLIで作成している人向けに書きます。
- Visual Studio code
- Azure DevOps
その他にあると便利なもの
- KeyVault
テンプレート構成
parameters
環境別やリージョン別など各種設定で変えたい部分を変数として定義しておく場所。
あまり多く作るとコードが見づらくなるので極力減らすこと
外部のファイルにパラメータを記載することで使い分けることができる。
template本体
必須:parameter-name,type
"<parameter-name>" : {
"type" : "パラメーター値の型[string|securestring|int|bool|object|secureObject|array]",
"defaultValue": "指定がないときのデフォルト値",
"allowedValues": [ "指定できる値を明記できる" ],
"minValue": int型の最小値,
"maxValue": int型の最大値,
"minLength": string,securestring,array 型パラメーターの長さの最小値 (この値を含む),
"maxLength": string,securestring ,arrayパラメーターの長さの最大値 (この値を含む),
"metadata": {
"description": "ポータルを通じてユーザーに表示されるパラメーターの説明"
}
}
palameter ファイル
"parameters": {
"<parameter-name>": {
"value": ""
}
「KeyVaultを使ったARMテンプレートへの機密情報の記載方法」の方法を使えば機密情報も扱いやすいです。
variables
コード内で使用する変数。他の言語のように繰り返し使う場合に便利。
上記のparametersとの違いは違うリソースグループで使う場合でも変わらない箇所に使うこと
"variables": {
"<variable-name>": "<variable-value>"
}
resources
作成したいリソースを定義する場所。
上記のparametersやvariablesを埋め込んで使用する
要素が多いので下記URLを参考にしてください。ここでは省略します
outputs
あまり利用したことはありませんがデプロイから返される値を指定することでリソースIDなどを知ることができます
なのでこれも省略
構築モード
complete mode (完全モード)
リソースグループに存在するがテンプレートに指定されていないリソースを削除します。
ただし、設定やDBのデータ、Keyvaultのkeyやsecretなど定義されていないパラメータなどは残ります
incremental mode (増分モード)
リソース グループに存在するが、テンプレートに指定されていないリソースを変更せず、そのまま残します。
まとめ
できるところはテンプレートにして細かい部分はPortalやCLIで作るなど無理せず作ることがよいと思います。
一から作らずportal等で作ってしまいPortal画面にあるAutomation スクリプトを利用するのがよいです。
全て自動化したところで変に制御が入ってしまい2度目には動かないなどが起こりかねないのでおすすめしません。
構築のモードに関しては流派が分かれると思いますが個人的には増分モードを推します。
消えてほしくないリソースが消える事故が防げるのとテンプレートを複数組み合わせやすいのでよく使います。