使用 PowerShell 配置 Ubuntu DSVM 时创建计划时出错
Posted
技术标签:
【中文标题】使用 PowerShell 配置 Ubuntu DSVM 时创建计划时出错【英文标题】:Error creating plan while provisioning Ubuntu DSVM using PowerShell 【发布时间】:2018-10-07 14:59:25 【问题描述】:我正在尝试使用 PowerShell 创建一个 Ubuntu DSVM。我已确定 Ubuntu DSVM 映像由发布者 microsoft-ads
发布,报价为 linux-data-science-vm-ubuntu
和 SKU linuxdsvmubuntu
。我收集到在 PowerShell 中指定我的 VM 配置时,我需要使用 Set-AzureRmVMPlan
和 Set-AzureRmVMSourceImage
,并尝试了以下操作:
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize Standard_D4s_v3
$vmConfig = Set-AzureRmVMPlan -VM $vmConfig -Name "linuxdsvmubuntu" -Product "linux-data-science-vm-ubuntu" -Publisher "microsoft-ads"
$vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Linux -ComputerName $vmName -Credential $cred
$vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName "microsoft-ads" -Offer "linux-data-science-vm-ubuntu" -Skus "linuxdsvmubuntu" -Version latest
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id
New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $vmConfig
很遗憾,我收到来自New-AzureRmVM
命令的错误消息:
New-AzureRmVM : This resource was created without a plan. A new plan cannot be associated with an update.
ErrorCode: CannotSetPlanOnUpdate
ErrorMessage: This resource was created without a plan. A new plan cannot be associated with an update.
StatusCode: 400
ReasonPhrase: Bad Request
OperationID : 648c62cd-4029-408e-8b6c-2ae4310001f6
At line:1 char:1
+ New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $vmC ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureRmVM], ComputeCloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.NewAzureVMCommand
看来我可能没有正确使用Set-AzureRmVMPlan
。任何人都清楚我做错了什么吗?
【问题讨论】:
【参考方案1】:我发现问题不在于该命令本身,而显然是该命令的早期版本部署失败。
我第一次尝试使用Set-AzureRmVMSourceImage
时,并不知道我还需要使用Set-AzureRmVMPlan
。这导致部署失败,我认为这意味着已部署的 VM 将从我的资源组中删除(或者一开始就不会添加到我的资源组中)。
实际发生的情况是,失败的部署在我的资源组中留下了状态为“失败”的虚拟机。当我后来运行上面显示的命令时,New-AzureRmVM
命令被视为更新步骤,而不是全新的 VM 创建。这就是错误消息指示“此资源是在没有计划的情况下创建的”的原因。
删除所有内容并重新开始导致上述命令成功。
【讨论】:
在使用terraform
配置 VM 时也会发生这种情况。这导致了相同的错误代码CannotSetPlanOnUpdate
,并且VM 在terraform destroy
之后留在了资源组中。这似乎是 Azure 方面的一个错误以上是关于使用 PowerShell 配置 Ubuntu DSVM 时创建计划时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用powershell通过配置文件config调用wcf(含用户名密码认证)