テンプレート機能を使ってAzure VMをデプロイする

 

Azure Portalを確認しているとテンプレートというメニューがありました。

テンプレートという機能を使うと、各アイテムのARMテンプレートを保存やそのテンプレートを使用してデプロイする事が出来るそうです。

今回は、テンプレート機能を使って、Azure VMのARMテンプレート登録からデプロイまでを試してみました。

1 .Azure VMをデプロイする為のARMテンプレート(Jsonファイル)を作成する

基本的な仮想マシンの設定でARMテンプレートを作っています。

    • OSのUserとパスワードは平文で設定しています
    • 設定値をvariablesで定義しています
    • ネットワークインターフェースとOSディスク名はVM名を取得し設定しています

まず、最初に利用したいイメージ名(SKU)を取得し確認します。

Cent OSのVM作成時は、以下のコマンドで確認ができます。確認した値を元にテンプレートのSKUを設定します。

$location =“japaneast”

Get-AzVMImageSku -Location $location -PublisherName “OpenLogic” -Offer “CentOS”

第2世代のVM指定についてはこちらに記載しておりますので、併せて参考にして頂ければと。

第2世代 Azure Virtual Machineの指定

Cent OS 7.5を指定したARMテンプレートを作ってみました。(VMNameや、addressPrefix等を正しい値にしないと、テンプレート保存時にエラーになります。)

{
“$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”,
“contentVersion”: “1.0.0.0”,
“variables”: {
 “location”: “japaneast”, 

 ”vmName”: “VM Name”,
 ”vmSize”: “Standard_B1s”,  

 ”adminUsername”: “testuser”,
 ”adminPassword”: “testpassword”,  

 ”publisher”: “OpenLogic”,
 ”offer”: “CentOS”,
 ”sku”: “7.5”,

 ”nicName”: “[concat(variables(‘vmName’),’_nic’)]”,
 “virtualNetworkName”: “Vnet Name”,
 ”addressPrefix”: “XXX.XXX.XXX.XXX/XX”,
 ”subnetName”: “Subnet Name”,
 ”subnetPrefix”: “XXX.XXX.XXX.XXX/XX”,
 ”subnetRef”: “[resourceId(‘Microsoft.Network/virtualNetworks/subnets’, variables(‘virtualNetworkName’), variables(‘subnetName’))]”,

 ”diskName”: “[concat(variables(‘vmName’),’_os_disk’)]”,
 ”storageAccountType”: “Standard_LRS”,

 ”storageAccountName”: “storage Account Name”

 },
“resources”: [
 {
 ”type”: “Microsoft.Network/virtualNetworks”,
 ”apiVersion”: “2018-11-01”,
 ”name”: “[variables(‘virtualNetworkName’)]”,
 ”location”: “[variables(‘location’)]”,
 ”properties”: {
 ”addressSpace”: {
 ”addressPrefixes”: [
 ”[variables(‘addressPrefix’)]”
 ]
 },
“subnets”: [
 {
 ”name”: “[variables(‘subnetName’)]”,
 ”properties”: {
 ”addressPrefix”: “[variables(‘subnetPrefix’)]”
 }}]}},
{
 ”type”: “Microsoft.Network/networkInterfaces”,
 ”apiVersion”: “2018-11-01”,
 ”name”: “[variables(‘nicName’)]”,
 ”location”: “[variables(‘location’)]”,
 ”dependsOn”: [
 ”[resourceId(‘Microsoft.Network/virtualNetworks/’, variables(‘virtualNetworkName’))]”
],
 ”properties”: {
 ”ipConfigurations”: [
{
 ”name”: “ipconfig1”,
 ”properties”: {
 ”privateIPAllocationMethod”: “Dynamic”,
 ”subnet”: {
 ”id”: “[variables(‘subnetRef’)]”
}}}]}},
{
 ”type”: “Microsoft.Compute/virtualMachines”,
 ”apiVersion”: “2018-10-01”,
 ”name”: “[variables(‘vmName’)]”,
 ”location”: “[variables(‘location’)]”,
 ”dependsOn”: [
 ”[resourceId(‘Microsoft.Network/networkInterfaces/’, variables(‘nicName’))]”
],
 ”properties”: {
 ”hardwareProfile”: {
 ”vmSize”: “[variables(‘vmSize’)]”
},
 ”osProfile”: {
 ”computerName”: “[variables(‘vmName’)]”,
 ”adminUsername”: “[variables(‘adminUsername’)]”,
 ”adminPassword”: “[variables(‘adminPassword’)]”
},
 ”storageProfile”: {
 ”imageReference”: {
 ”publisher”: “[variables(‘publisher’)]”,
 ”offer”: “[variables(‘offer’)]”,
 ”sku”: “[variables(‘sku’)]”,
 ”version”: “latest”
},
 ”osDisk”: {
 ”createOption”: “FromImage”,
 ”name”: “[variables(‘diskname’)]”,
 ”managedDisk”: {
 ”storageAccountType”: “[variables(‘storageAccountType’)]”
}}

},
 ”networkProfile”: {
 ”networkInterfaces”: [
{
 ”id”: “[resourceId(‘Microsoft.Network/networkInterfaces’,variables(‘nicName’))]”
}]},
 ”diagnosticsProfile”: {
 ”bootDiagnostics”: {
 ”enabled”: true,
 ”storageUri”: “[concat(‘https://’, variables(‘storageAccountName’), ‘.blob.core.windows.net’)]”
}}}}] }

Windows SQL Serverの場合のARMテンプレートも作っております。併せて参考にして頂ければと。

SQL Serverのデータディスクサイズを指定してデプロイ

2.テンプレート機能を使ってAzure VMをデプロイする

テンプレート機能にJSONテンプレートを登録します。以下の内容が表示されますので、名前と説明を入力しOKを表示します。

テンプレート画面が表示されますので、デフォルト表示されている内容を削除し、1)で作成したテンプレートをペーストしOKボタンをクリックします。

保存が完了したテンプレートを選択すると以下の画面が表示されますので、リソースグループ名を登録、使用条件に同意し、購入ボタンをクリックします。

Azure VMがデプロイされますので、デプロイが完了したらリソースに移動して確認します。無事完成しているかと思います。