Я хочу перечислить и изменить теги и их значения для Azure Virtual Machines с помощью .NET SDK.Как создать или перечислить теги для Azure Virtual Machine в .Net SDK
Пожалуйста, дайте мне знать путь для этого.
Thank you.
Я хочу перечислить и изменить теги и их значения для Azure Virtual Machines с помощью .NET SDK.Как создать или перечислить теги для Azure Virtual Machine в .Net SDK
Пожалуйста, дайте мне знать путь для этого.
Thank you.
Поскольку у меня нет виртуальной машины, я отправляю код для обновления тегов для группы ресурсов.
Во-первых, убедитесь, что приложение Azure AD правильно настроено. Вы можете найти эту ссылку полезной для этой цели: https://msdn.microsoft.com/en-us/library/azure/ee460782.aspx.
Далее я создал простое консольное приложение. Что вам нужно сделать, это получить Microsoft.Azure.ResourceManager 1.0.0-preview
и Active Directory Authentication Library 2.22.302111727
Пакеты Nuget в вашем приложении.
После этого все довольно просто. См. Код ниже:
using System;
using System.Linq;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.Threading;
using Microsoft.Azure.Management.Resources;
using Microsoft.Rest;
namespace AzureARMDemo
{
class Program
{
private static string ClientId = "<your-application-client-id>";//This is the PowerShell Client Id
private static string TenantId = "<tenant-id>";
private static string LoginEndpoint = "https://login.microsoftonline.com/";
private static string ServiceManagementApiEndpoint = "https://management.core.windows.net/";
private static string RedirectUri = "urn:ietf:wg:oauth:2.0:oob";
private static string SubscriptionId = "<your-azure-subscription-id>";
private static string AzureResourceManagerEndpoint = "https://management.windows.net";
private static string ResourceGroupNameToUpdate = "<resource-group-name-to-update>";
static void Main(string[] args)
{
var token = GetAuthorizationHeader();
var credentials = new TokenCredentials(token);
var resourceManagerClient = new ResourceManagementClient(new Uri(AzureResourceManagerEndpoint), credentials)
{
SubscriptionId = SubscriptionId,
};
Console.WriteLine("Listing resource groups. Please wait....");
Console.WriteLine("----------------------------------------");
var resourceGroup = resourceManagerClient.ResourceGroups.List().FirstOrDefault(r => r.Name == ResourceGroupNameToUpdate);
if (resourceGroup != null)
{
var tags = resourceGroup.Tags;
if (!tags.ContainsKey("Key1"))
{
tags.Add("Key1", "Value1");
}
else
{
tags["Key1"] = tags["Key1"] + " Updated";
}
Console.WriteLine("Updating resource group. Please wait....");
Console.WriteLine("----------------------------------------");
resourceManagerClient.ResourceGroups.Patch(ResourceGroupNameToUpdate, resourceGroup);
Console.WriteLine("Resource group updated.");
Console.WriteLine("-----------------------");
}
//var resourceGroups = resourceManagerClient.ResourceGroups.List();
//foreach (resourceGroup in resourceGroups)
//{
// Console.WriteLine("Resource Group Name: " + resourceGroup.Name);
// Console.WriteLine("Resource Group Id: " + resourceGroup.Id);
// Console.WriteLine("Resource Group Location: " + resourceGroup.Location);
// Console.WriteLine("----------------------------------------");
//}
Console.WriteLine("Press any key to terminate the application");
Console.ReadLine();
}
private static string GetAuthorizationHeader()
{
AuthenticationResult result = null;
var context = new AuthenticationContext(LoginEndpoint + TenantId);
var thread = new Thread(() =>
{
result = context.AcquireToken(
ServiceManagementApiEndpoint,
ClientId,
new Uri(RedirectUri));
});
thread.SetApartmentState(ApartmentState.STA);
thread.Name = "AquireTokenThread";
thread.Start();
thread.Join();
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
string token = result.AccessToken;
return token;
}
}
}
Hi Gaurav. Спасибо за ваш ответ, и это было очень полезно. Тем не менее, он обновит тег для всей группы ресурсов, но как мы можем добиться обновления тега на конкретной виртуальной машине. – Tejas
Есть ли способ, по которому мы можем обновлять теги только для конкретной виртуальной машины – Tejas
Конечно, вы можете обновлять теги только для конкретной виртуальной машины. Я выбрал группы ресурсов в качестве примера, чтобы продемонстрировать, как вы можете обновлять теги с помощью библиотеки диспетчера ресурсов, поскольку у меня не было виртуальной машины. Я бы предложил вам использовать библиотеку, чтобы лучше понять ее, а затем использовать ее для вашего сценария. –
Пожалуйста, сообщите нам, что вы сделали до сих пор, и с какими проблемами вы столкнулись. –
Привет, Гаурав. Спасибо за ответ. Я только начал изучать dll Microsoft.Azure.Management.Resources и классы для него, которые упоминаются в MSDN. Но я не нахожу полезную документацию, которая может помочь мне аутентифицировать и настроить запрос на листинг и создание тегов для конкретной виртуальной машины или группы ресурсов. Ваша помощь будет оценена по достоинству. – Tejas
@GauravMantri Не могли бы вы помочь мне в этом. – Tejas