通过 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 地址已更改。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate?api-version=2020-12-01
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-12-01
我正在尝试通过 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 地址已更改。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate?api-version=2020-12-01
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-12-01