通过 REST 刷新 Azure VM 的 IP 地址 API

Refresh IP address for Azure VM via REST API

我正在尝试通过 REST API 更改我在 Azure 上的 Ubuntu 虚拟机的 IP。

在 Web 界面中,停止和启动 VM 通常会导致 public IP 发生变化。但是,仅使用对 API 的 curl 请求停止和启动 VM 不会触发 IP 更改。

我可以使用 GET 请求请求 IP 配置的当前状态(请参阅文档 here),但我找不到任何函数来刷新它。我还尝试在重新打开 VM 之前将 IP 设置为静态 IP,然后再设置为动态 IP,这也没有用。

我发现了这个类似的问题 ,但是当我尝试这种方法时,我收到了以下错误消息:

{  "error": {
"code": "IpConfigDeleteNotSupported",
"message": "IP Configuration ipconfig1 cannot be deleted. Deletion and renaming of primary IP Configuration is not supported",
"details": []   }

我还创建了一个辅助 IP 配置。第一个叫做 ipconfig1,第二个我命名为“alternative”。这似乎是第二个网络接口。我已将第二个 IP 地址与第二个网络接口相关联。但我仍然遇到同样的错误。

我的最终请求是这样的:

curl -X PUT  -H "Authorization: Bearer MYTOKEN" -H "Content-Type: application/json" -d '{ "name": "NETWORKINTERFACE542", "id": "GROUP", "location": "westeurope", "properties": { "provisioningState": "Succeeded", "ipConfigurations": [ { "name": "alternative", "properties": { "privateIPAllocationMethod": "Dynamic", "subnet": { "id": "/subscriptions/xx-xx-xx-xx/resourceGroups/GROUP/providers/Microsoft.Network/virtualNetworks/GROUP-vnet/subnets/default" }, "primary": true, "privateIPAddressVersion": "IPv4" } } ], "dnsSettings": { "dnsServers": [], "appliedDnsServers": [] }, "enableAcceleratedNetworking": true, "enableIPForwarding": false }, "type": "Microsoft.Network/networkInterfaces" }' https://management.azure.com/subscriptions/xx-xx-xx-xx/resourceGroups/GROUP/providers/Microsoft.Network/networkInterfaces/NETWORKINTERFACE542?api-version=2020-07-01

(CAPS 术语代表我的实际变量名称)

我仍然遇到同样的错误,尽管我什至没有在我的请求中引用 ipconfig1。

有什么办法可以重置IP吗?

如您所述:在 Web 界面中,停止和启动 VM 通常会导致 public IP 更改。

一般web中的stop操作UI实际上是deallocate操作,所以需要用REST APIDeallocate and Start来触发public IP 地址已更改。

Virtual Machines - Deallocate

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate?api-version=2020-12-01

Virtual Machines - Start

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-12-01