セミナーの詳細よくわかってなかったのですが、ARMの基本的な体験ができるハンズオンが公開されました。
ハンズオンでは最終的にSQL Databaseを使った複数台で負荷分散する仮想マシン上のWebアプリケーションをテンプレートを使ってデプロイという感じです。
ざっくり図にするとこういう感じです。
演習で使うテンプレートなどはこちらにおいてます。
まぁ練習用なのですごくシンプルです。最低限のことしかしてません。
演習ではデプロイの方法を学ぶというか触れてもらう意味合いのほうが強いので、テンプレートをゼロから起こしたりといった内容ではありません。あしからず。。
ARMテンプレートのTipsについて
- Azure リソース マネージャー テンプレートを設計するためのベスト プラクティス
- テンプレートに利用できる式や関数
- テンプレート全般
- テンプレートリンク
- templateLinkのほかにもパラメーターや変数もリンクできます。活用しましょう。
- 公式(?)のQuick Templateなどは多用してますね。まぁストレージとか大きなリソース単位で分けておけば再利用しやすいです。
- copyとcopyindex()
- 一部リソースプロパティ(ロードバランサーのinboundNatRulesとか)は使えません
- inboundNatRulesで使えないということは各インスタンスに直接接続するためのRDPの口を用意するのが難しいということです。この場合だと明示的にVM0用、VM1用とべた書きすればもちろんOKですけどありえないですよね。(インスタンス数固定ならまぁ。。。)※まぁそもそもそういうことしないほうがいいよねというのはある
- ハンズオンではLBしてもいいからとりあえずRDPの口はあけてます。他のインスタンスは多段してね☆
- apiVersion
- Scheme
- 結構はまるポイントです。注意しましょう。
- タグ
- タグは活用しましょう。別で書こうと思いますがポリシーとかにも使えるし。
- あとConcatとか活用しだすとVisual Studioでいじってるときとか結構ひどい見た目になるので、キーがdisplayNameでタグ付けして表示名をつけてあげるといいかと思います。
- PowerShell DSCの話はざっくりしかしてません(Windowsの場合)
- 認証情報の渡し方はprotectedStringsとPrivateSettingsRefあたり活用すればいいかと
- DSC側のConfigrationもだいぶ無茶してる感あります。。本番で使うにはもうちょっときれいにしたほうがいいでしょう。Scriptとか、、、ひどいコードですみません。そのまま使えないことはないですがきれいじゃないなぁ
- システム全体のオーケストレーションは別途考えてみてください。
- 今見直したらアプリケーション固めたZipのURLとか決めうちしちゃってるので、ARM Templateから渡すようにしたりとかしておけばよかったですね。
- リソース固有情報(resourceGroup().idとか)はうまく活用してください。
- Azureポータル上でもリソースエクスプローラーはあるのですが(参照からどうぞ)、外部のサイトのほうができること多いです。どういうプロパティ・値を指定したらいいのか不明な時は手動でデプロイしてからリソースエクスプローラーでごにょごにょ参照するといいかと思います。
- AzureResourceVisualizerとか意外と便利かもですね。node.jsでローカルで動かせますよ
あとは何だろう、CloudFormationのTipsなども参考にするといいかもしれませんね。ただまぁJSONをべたべた書くのはなかなか苦行なのでVisual Studio使うのがいいかと思います。。。