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

 

Azureにはテンプレートとういメニューがあります。このテンプレートというメニューではARMテンプレートを保存する事が出来ます。この機能にAzure Virtual Machineのテンプレートを登録してデプロイを実行する検証を実施してみました。

1 .仮想マシンをデプロイする為のJsonファイルを作成する。

基本的な仮想マシンの設定で作っています。適時値を入れてください。
なお今回は簡易的なものなので、OSのUserとパスワードは平文で記載しています。
大体の設定値をvariablesで定義するように構成しています。NICとOSディスク名は仮想マシンの値を変数として取得する形で作成しています。
なお、WindowsのVirtual Machine作成時は、以下のコマンドで、利用したいSKUの値を取得し、テンプレートのSKUの値を指定してください。

$location =“japaneast”

Get-AzVMImageSku -Location $location -PublisherName “MicrosoftWindowsServer” -Offer “WindowsServer”

CentOS7.5の場合のJSONテンプレートサンプルになります。(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’)]”
}}}}] }

2.デプロイする

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

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

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

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