Как развернуть несколько виртуальных машин в одной облачной службе с новой моделью Resource Manager программно?

Одновременно я развертываю несколько виртуальных машин в одну облачную службу с помощью этого кода:

private async Task CreateVirtualMachine()
    {
        DeploymentGetResponse deploymentResponse = await _computeManagementClient.Deployments.GetBySlotAsync("myservicename", DeploymentSlot.Production);

        if (deploymentResponse == null)
        {
            var parameters = new VirtualMachineCreateDeploymentParameters
            {
                DeploymentSlot = DeploymentSlot.Production,
                Name = "mservicename",
                Label = "myservicename"
            };

            parameters.Roles.Add(new Role
            {
                OSVirtualHardDisk = new OSVirtualHardDisk
                {
                    HostCaching = VirtualHardDiskHostCaching.ReadWrite,
                    SourceImageName = "imagename"
                },

                RoleName = "vmname",
                RoleType = VirtualMachineRoleType.PersistentVMRole.ToString(),
                RoleSize = VirtualMachineRoleSize.Small,
                ProvisionGuestAgent = true
            });

            parameters.Roles[0].ConfigurationSets.Add(new ConfigurationSet
            {
                ComputerName = "vmname",
                ConfigurationSetType = ConfigurationSetTypes.LinuxProvisioningConfiguration,
                HostName = "vmname",
                AdminUserName = "adminusername",
                AdminPassword = "adminpass",
                UserName = "username",
                UserPassword = "userpass",
                DisableSshPasswordAuthentication = false,

            });

            parameters.Roles[0].ConfigurationSets.Add(new ConfigurationSet
            {
                ConfigurationSetType = ConfigurationSetTypes.NetworkConfiguration,
                InputEndpoints = new List<InputEndpoint>()
                {
                    new InputEndpoint()
                    {
                        Name = "HTTP",
                        Protocol = InputEndpointTransportProtocol.Tcp,
                        LocalPort =  80,
                        Port = 80
                    }
                }
            });

            var response = await _computeManagementClient.VirtualMachines.CreateDeploymentAsync("mservicename", parameters);

        }
        else
        {
            var createParameters = new VirtualMachineCreateParameters
            {
                OSVirtualHardDisk = new OSVirtualHardDisk
                {
                    HostCaching = VirtualHardDiskHostCaching.ReadWrite,
                    SourceImageName = "imagename"
                },

                RoleName = "vmname",
                RoleSize = VirtualMachineRoleSize.Small,
                ProvisionGuestAgent = true,

                ConfigurationSets = new List<ConfigurationSet>
            {
                new ConfigurationSet
                {

                    ComputerName = "vmname",
                    ConfigurationSetType = ConfigurationSetTypes.LinuxProvisioningConfiguration,
                    HostName = "vmname",
                    AdminUserName = "adminusername",
                    AdminPassword = "adminpass",
                    UserName = "username",
                    UserPassword = "userpass",
                    DisableSshPasswordAuthentication = false
                },
                new ConfigurationSet
                {
                    ConfigurationSetType = ConfigurationSetTypes.NetworkConfiguration,
                    InputEndpoints = new List<InputEndpoint>()
                    {
                        new InputEndpoint()
                        {
                            Name = "HTTP",
                            Protocol = InputEndpointTransportProtocol.Tcp,
                            LocalPort =  81,
                            Port = 81
                        }
                    }
                }
            }
            };

            var responseCreate = await _computeManagementClient.VirtualMachines.CreateAsync("mservicename", deploymentResponse.Name, createParameters);

        }
    }

Как это сделать с помощью нового менеджера ресурсов? Я работаю в Visual Studio 2015, приложение MVC.

Проблема заключается в том, что при развертывании нескольких виртуальных машин в облачной службе все виртуальные машины имеют одинаковый домен/ip. Но я хочу, чтобы у каждой виртуальной машины был свой домен. Я слышал, что это можно сделать с помощью Resource Manager, но на самом деле не знаю точно, что такое Resource Manager, или как его использовать.

Кроме того, я знаю, что развертывание каждой виртуальной машины в одной облачной службе даст уникальное доменное имя каждой виртуальной машине, но это означает, что я должен создать новую облачную службу для каждой виртуальной машины, и что мне действительно нужно развернуть несколько виртуальных машин в одной облачной службе.

Можно ли это сделать с помощью управления ресурсами?

2 ответа

  1. Новая модель resource manager не имеет понятия облачных служб, вы просто развертываете виртуальную машину в виртуальной сети и подключаете ее непосредственно к интернету через общедоступный IP-адрес. Затем можно присоединить любое доменное имя к этому общедоступному IP-адресу.

    Невозможно создать облачный сервис в рамках управления ресурсами.

  2. Согласно предыдущему ответу, концепция облачной службы не существует для модели развертывания Resource Manager. В этой статье представлен обзор некоторых способов развертывания нескольких виртуальных машин в одной группе ресурсов: https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-multiple-vms/