【发布时间】:2015-07-21 15:01:10
【问题描述】:
这只是我创建新部署时的问题。将 AzureVms 部署到现有部署(或现有云服务)可以正常工作。但是,我只能使用 powershell 而不是 c# 正确创建新部署。
确实有效的 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}
当我这样做时,虚拟机被正确创建。我将在这里正确定义三个标准,除了它已配置并且我可以在 RDP 中: - VM 由 cmdlet Get-AzureVM 返回 - Azure 门户 > 虚拟机节点(不是预览门户)中的 DNS 名称是 mycloudservice.cloudapp.net - 部署名称叫mycloudservice
我已经尝试了许多 c# 的迭代,但作为一个例子,如果云服务还不存在,它就不起作用。我已经尝试过提供和不提供 DNSSetting 值。我定义的不起作用: - cmdlet Get-AzureVM 不返回 VM - 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);
}
【问题讨论】:
标签: c# powershell azure virtual-machine