2015-07-21 22 views
0

这只是我创建新部署时的一个问题。将AzureVms部署到现有部署(或现有云服务)可正常工作。但是,我只能使用powershell而不是c#来正确创建新的部署。新部署被分配了随机ID,DNS名称

PowerShell的,做的工作:

$imageName = (Get-AzureVMImage | Where-Object { $_.Label -eq "Windows 7 Enterprise SP1 (x64)" } | Sort-Object PublishedDate -Descending | Select-Object -First 1).ImageName 
$vm = New-AzureVMConfig -Name "MyName01" -InstanceSize "Small" -Image $imageName 
$vm | Add-AzureProvisioningConfig -TimeZone "Eastern Standard Time" -Windows -AdminUsername "Username01" -Password "Password01" 
$vm | Set-AzureSubnet "MySubnet" | Out-Null 
$operation = New-AzureVM -ServiceName "MyCloudService" -Location "Central US" -VMs $vm -VNetName "MyVnet" 
if($operation.OperationStatus -ne "Succeeded") {throw "Operation Status = " + $operation.OperationStatus} 

当我这样做,是正确创建的VM。我将在这里用三个标准来正确定义它,因为它已配置,并且我可以在以下位置配置RDP: - 虚拟机由cmdlet返回Get-AzureVM - Azure门户中的DNS名称>虚拟机节点不是预览门户)is mycloudservice.cloudapp.net - 部署名称叫做mycloudservice

我已经尝试了很多c#的迭代,但是作为一个不起作用的例子,如果云服务不存在然而。我试过既提供又不提供DNSSetting值。我的定义不起作用: - 虚拟机不是由cmdlet返回Get-AzureVM - Azure门户(不是预览门户)中的DNS名称是一些随机字母数字字符串+'.cloudapp.net' - 部署名称是相同的随机字母数字字符串作为DNS主机

using (var computeclient = new ComputeManagementClient(credentials)) 
{ 
//create cloud service if it doesn't exist 
if(computeclient.HostedServices.Get(cloudServiceName) == null) 
computeclient.HostedServices.Create(
new HostedServiceCreateParameters 
{ 
    Label = cloudServiceName, 
    Location = "Central US", 
    ServiceName = cloudServiceName 
}); 

//define parameters specific to the vm (role) 
var deploymentAttributes = new Role 
{ 
    RoleName = hostname, 
    RoleSize = createParameters.VmSize, 
    RoleType = VirtualMachineRoleType.PersistentVMRole.ToString(), 
    DataVirtualHardDisks = dataHardDrives, 
    ConfigurationSets = configurationSets, 
    ProvisionGuestAgent = true, 
    Label = cloudServiceName, 
    VMImageName = createParameters 
}; 


//create deployment parameters and kick off! 
DnsServer dnsServer = new DnsServer(); 
dnsServer.Address = dnsIp; 
dnsServer.Name = dnsHostname; 
DnsSettings dnsSettings = new DnsSettings(); 
dnsSettings.DnsServers = new List<DnsServer>() { dnsServer }; 
var createDeploymentParameters = new  VirtualMachineCreateDeploymentParameters 
{ 
    Name = cloudServiceName, 
    Label = cloudServiceName, 
    DeploymentSlot = DeploymentSlot.Staging, 
    Roles = new List<Role> { deploymentAttributes }, 
    VirtualNetworkName = vnetName, 
    DnsSettings = dnsSettings, 
}; 
var deploymentResult = computeclient.VirtualMachines.CreateDeployment(
    cloudServiceName, 
    createDeploymentParameters); 
} 

回答

0

就想通了这一点 - 张贴这个问题给了我一个想法。简单地部署到生产而不是分段修复此问题(DeploymentSlot = DeploymentSlot.Production)。