Azure Сетевой интерфейс имеет некоторые конфигурации IP. Каждая конфигурация IP имеет один IP-адрес publi c. Итак, если мы хотим отделить Publi c IP от Azure сетевого интерфейса, нам просто нужно удалить publi c IP из конфигурации IP. Дополнительные сведения см. В документе
. Относительно того, как реализовать это с помощью Net, мы можем использовать библиотеки управления sdk Azure для. NET. Подробные инструкции приведены ниже:
a. создать принципала службы (для этого я использую Azure CLI)
az login
az account set --subscription "<your subscription id>"
# the sp will have Azure Contributor role
az ad sp create-for-rbac -n "readMetric"
Код
AzureCredentials credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
clientId, // the sp appId
clientSecret, // the sp password
tenantId, // the sp tenant
AzureEnvironment.AzureGlobalCloud);
var azure = Microsoft.Azure.Management.Fluent.Azure.Configure()
.Authenticate(credentials)
.WithSubscription(subscriptionId);// the subscription you use
var resourceGroupName = "testapi06"; // the vm resource group name
var vmName = "testvs";// the vm name
//get the Azure VM
var vm =await azure.VirtualMachines.GetByResourceGroupAsync(resourceGroupName, vmName);
// get Azure VM's network interfaces
foreach (var nicId in vm.NetworkInterfaceIds) {
var nic = await azure.NetworkInterfaces.GetByIdAsync(nicId);
// get network interface's ip configurations
foreach (var r in nic.IPConfigurations)
{
var ipConfigNmae = r.Key;
// detach a Public IP object from network interface
await nic.Update().UpdateIPConfiguration(ipConfigNmae)
.WithoutPublicIPAddress()
.Parent()
.ApplyAsync();
// delete public ip
var publicIpId = r.Value.GetPublicIPAddress().Id;
await azure.PublicIPAddresses.DeleteByIdAsync(publicIpId);
};
};