Visual Studio 2015(以下Visual Studio)からAzure上にCentOSをデプロイします。
はじめに
Visual Studio でAzure リソースマネージャーのテンプレートを作成/デプロイし、Azure上にCentOSを構築、SSHでログインできるまでを試してみました。
Visual Stadioでプロジェクトを作成する。
- Visual Stadioを起動します。
- Visual Stadioでプロジェクトを作成します。テンプレートは、「Cloud」-「Azureリソースグループ」を選択します。
- テンプレートは、「Linux Virtual Machine Scale Set」を選択します。
Azure リソースマネージャーのテンプレートを作成する。
- 「LinuxVirtualMachineScaleSet.json」に記載されている内容を削除し、以下の通り修正します。このファイルは実際にAzure上にリソースを作成するためのものになります。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "newStorageAccountName": { "type": "string", "metadata": { "description": "This is the name of the your storage account" } }, "dnsNameForPublicIP": { "type": "string", "metadata": { "description": "This is the unique DNS name of the for the public IP for your VM" } }, "adminUserName": { "type": "string", "metadata": { "description": "This is the username you wish to assign to your VMs admin account" } }, "adminPassword": { "type": "securestring", "metadata": { "description": "This is the password you wish to assign to your VMs admin account" } }, "vmSize": { "type": "string", "metadata": { "description": "Size of VM" } }, "addressPrefix": { "type": "string", "metadata": { "description": "This is the addressPrefix" } }, "subnet1name": { "type": "string", "metadata": { "description": "This is the subnet1Name" } }, "subnet1Prefix": { "type": "string", "metadata": { "description": "This is the subnet1Prefix" } }, "PublicIPAddressName": { "type": "string", "metadata": { "description": "This is the PublicIPAddressName" } }, "vmName": { "type": "string", "metadata": { "description": "This is the vmName" } }, "virtualNetworkName": { "type": "string", "metadata": { "description": "This is the virtualNetworkName" } }, "nicName": { "type": "string", "metadata": { "description": "This is the nicName" } }, "imagePublisher": { "type": "string", "metadata": { "description": "This is the imagePublisher" } }, "imageVersion": { "type": "string", "metadata": { "description": "This is the imageVersion" } }, "imageSKU": { "type": "string", "metadata": { "description": "This is the imageSKU" } }, "imageOffer": { "type": "string", "metadata": { "description": "This is the imageOffer" } } }, "variables": { "vmStorageAccountContainerName": "vhds", "publicIPAddressType": "Dynamic", "storageAccountType": "Standard_LRS", "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", "subnet1Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet1Name'))]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "name": "[parameters('newStorageAccountName')]", "apiVersion": "2015-05-01-preview", "location": "[resourceGroup().location]", "properties": { "accountType": "[variables('storageAccountType')]" } }, { "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/publicIPAddresses", "name": "[parameters('publicIPAddressName')]", "location": "[resourceGroup().location]", "properties": { "publicIPAllocationMethod": "[variables('publicIPAddressType')]", "dnsSettings": { "domainNameLabel": "[parameters('dnsNameForPublicIP')]" } } }, { "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('virtualNetworkName')]", "location": "[resourceGroup().location]", "properties": { "addressSpace": { "addressPrefixes": [ "[parameters('addressPrefix')]" ] }, "subnets": [ { "name": "[parameters('subnet1Name')]", "properties": { "addressPrefix": "[parameters('subnet1Prefix')]" } } ] } }, { "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/networkInterfaces", "name": "[parameters('nicName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPAddressName'))]", "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]" ], "properties": { "ipConfigurations": [ { "name": "ipconfig1", "properties": { "privateIPAllocationMethod": "Dynamic", "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]" }, "subnet": { "id": "[variables('subnet1Ref')]" } } } ] } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Compute/virtualMachines", "name": "[parameters('vmName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName'))]", "[concat('Microsoft.Network/networkInterfaces/', parameters('nicName'))]" ], "properties": { "hardwareProfile": { "vmSize": "[parameters('vmSize')]" }, "osProfile": { "computerName": "[parameters('vmName')]", "adminUsername": "[parameters('adminUsername')]", "adminPassword": "[parameters('adminPassword')]" }, "storageProfile": { "imageReference": { "publisher": "[parameters('imagePublisher')]", "offer": "[parameters('imageOffer')]", "sku": "[parameters('imageSKU')]", "version": "[parameters('imageVersion')]" }, "osDisk": { "name": "osdisk1", "vhd": { "uri": "[concat('https://',parameters('newStorageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/','osdisk1.vhd')]" }, "caching": "ReadWrite", "createOption": "FromImage" } }, "networkProfile": { "networkInterfaces": [ { "id": "[resourceId('Microsoft.Network/networkInterfaces',parameters('nicName'))]" } ] } } } ] }
- 「LinuxVirtualMachineScaleSet.parameters.json」に記載されている内容を削除し、以下の通り修正します。valueの値は、利用者の環境に合わせ修正ください。このファイルは上記ファイルが利用するパラメータファイルになります。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "newStorageAccountName": { "value": "rhblog1" //Azure上のストレージアカウント名を指定 }, "adminUsername": { "value": "SIOS" //OSの管理者名を指定 }, "adminPassword": { "value": "*************************" //OSの管理者パスワードを指定 }, "dnsNameForPublicIP": { "value": "rhblogpip1" }, "virtualNetworkName": { "value": "rhblognt1" //Azure上の仮想ネットワーク名を指定 }, "vmSize": { "value": "Standard_A0" //Azureのインスタンスサイズを指定 }, "vmName": { "value": "rhblog1" //Azureの仮想マシン名を指定 }, "publicIPAddressName": { "value": "rhblogpip1" }, "nicName": { "value": "rhblognic1" }, "addressPrefix": { "value": "10.0.0.0/16" //仮想ネットワークのネットワークのIPレンジを指定 }, "subnet1Prefix": { "value": "10.0.0.0/24" //仮想ネットワークのサブネットのIPレンジを指定 }, "subnet1name": { "value": "subnet-1" //仮想ネットワークのサブネット名を指定 }, "imagePublisher": { "value": "OpenLogic" //インストールするOSを変更する場合は、https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-cli-ps-findimage/ 参照ください。 }, "imageVersion": { "value": "latest" }, "imageSKU": { "value": "7.2" }, "imageOffer": { "value": "CentOS" } } }
デプロイをする。
- 「ソリューションエクスプローラ」のプロジェクト名を右クリックし、「配置」-「新しい配置」をクリックします。
- 「サブスクリプション」を指定、「リソースグループ」で「新規作成」を選択し、リソースグループを作成するリージョンを指定します。
- 「配置」をクリックするとデプロイが開始されます。
作成した仮想マシンにログインします。
- Azureの管理コンソールにログインします。(https://manage.windowsazure.com/)
- リソースグループを確認し、「SIOSBlog-0001」が作成されている事を確認します。
- グローバルIPを確認し、Tera TermなどでSSH(22)ポートにアクセスします。アクセスできれば完成です。