自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Azure】ARMテンプレートを使ってみる

今回は、ARMテンプレートを使ってUbuntuを起動させてみたいと思います。

■ARMテンプレートとは

ざっくり言えば、構築方法をコード(JSON形式)化し自動化するために利用するものです。

■ARMテンプレートの利点

詳細はMS公式サイトを参照ください。

テンプレートの概要 - Azure Resource Manager | Microsoft Docs

ARMテンプレートによりIaC化が実現できるため、IaCを利用する利点=ARMテンプレートの利点となります。
そのため、他のIaCツール(Terraform 等)と比較されがちですが、ARMテンプレートを利用することで他のAzureサービスと連携がしやすい、もしくは最初から連携するための機能が実装されている、という点があります。
※例えば、AzureDevOpsとの連携

■ARMテンプレートの構文

MS公式サイトを参照ください。

テンプレートの構造と構文 - Azure Resource Manager | Microsoft Docs


すべてを理解すること必要はなく、各要素(schemaやvariables等)がどのような使われ方をするのかの概要を知っておくだけで、実際にARMテンプレートを利用する際の助かるかと。

■準備

では、実際にやってみる前に準備(ARMテンプレートの内容を確認)をします。
今回は、「Azureクイックスタートテンプレート」にあるAzureコミュニティ(GitHub)のARMテンプレートを使います。

1.以下ページへアクセスし、検索窓で「Deploy a Ubuntu VM」を検索します。

Azure クイック スタート テンプレート

f:id:guri2o1667:20211208101704p:plain


2.「Deploy a simple Ubuntu Linux VM 18.04-LTS.」をクリックします。

f:id:guri2o1667:20211208101736p:plain

3.「GitHubで参照する」をクリックします。

f:id:guri2o1667:20211208101810p:plain

4.「Visualize」をクリックします。

f:id:guri2o1667:20211208101918p:plain


5.下記のようにVisualizeが起動します。

f:id:guri2o1667:20211208102053p:plain

6.左ペインで「視覚化」「コード」表示を切り替えることができます。

f:id:guri2o1667:20211208102112p:plain

7.「コード」表示をクリックします。

f:id:guri2o1667:20211208102152p:plain


8.ここで表示されたコードが、ARMテンプレートの全量です。

9.コードを上から読んでいくのも全然ありですが、「視覚化」されたアイコンをクリックすることで該当するコードに飛ぶこともできます。

f:id:guri2o1667:20211208102439p:plain

f:id:guri2o1667:20211208102454p:plain

↓ ※上記アイコンをクリックすると自動的に該当するコードに飛びます。

f:id:guri2o1667:20211208102545p:plain

214行目から254行目までが、仮想マシンに関するコードです。

10.例えば手順9で確認した仮想マシンのコードの中にはparameters('ubuntuOSVersion')のような記述でパラメータが指定されているものがあります。
パラメータの内容については手順3と同じページに内容が記載されていることがほとんどです。

f:id:guri2o1667:20211208103114p:plain



■実践

では、実際にやってみます。
注意点ですが、実際にやることで各Azureリソースの課金が発生します。
本手順により作成されるリソースは以下の通りです。

f:id:guri2o1667:20211208110205p:plain

また、仮想マシン(上記simpleLInuxVM)はSSH接続用に「22/tcp」で接続する前提となっております。そのため、デプロイ後、「SecGroupNet」のNSGの受信のセキュリティ規則を修正するのが望ましいです。
※自己責任でお願いいたします。

作成される仮想マシンの概要は以下の通りです。
・OS: Linux(Ubuntu18.04)
・仮想マシンサイズ: Standard B2s (2 vcpu 数、4 GiB メモリ)
・OSディスク: 30GiB
・PIP付与(動的)


1.事前に以下ページにアクセスしているものとします。

Deploy a simple Ubuntu Linux VM 18.04-LTS.


2.ページ下部に利用するための手順が記載されています。
※今回はAzurePowershellを使います。

f:id:guri2o1667:20211208103852p:plain

3.AzurePowershellを起動し、自身のサブスクリプションにログインしておきます。

PS C:\Users> Import-Module Az ※Azモジュールインストール
PS C:\Users> Connect-AzAccount ※Azureログイン
PS C:\Users> Get-AzContext ※念のためログインしたサブスクリプションを確認

4.手順2の通り、まずはリソースグループを作成します。
※リソースグループ名は「testubuntu1」、リージョンは「西日本」を指定

f:id:guri2o1667:20211208104809p:plain

PS C:\Users> New-AzResourceGroup -Name testubuntu1 -Location japanwest

5.手順2の通り、デプロイを実施します。

f:id:guri2o1667:20211208105042p:plain

PS C:\Users> New-AzResourceGroupDeployment -ResourceGroupName testubuntu1 -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json

6.パラメータを対話形式で聞かれるため、順番に回答していきます。

※adminPasswordOrKeyを入力した後、実際のデプロイが始まるため、プロンプトが戻ってくるまでに数分かかります。
f:id:guri2o1667:20211208105745p:plain

7.完了すると、デプロイ環境の情報が表示されるため、メモしておきます。

f:id:guri2o1667:20211208105925p:plain


8.指定したリソースグループに構築されたAzureリソースは以下の通りです。

f:id:guri2o1667:20211208110108p:plain


以上です。