Как зарегистрировать поставщиков ресурсов с помощью управления ресурсами Azure Fluent?

Я хотел бы полностью автоматизировать процесс создания моего ресурса. К сожалению, для новых подписок по умолчанию не зарегистрировано несколько поставщиков ресурсов. Например. SQL. Это легко решить, как описано здесь: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-common-deployment-errors#noregisteredproviderfound

Однако здесь описаны только методы, использующие либо вручную с помощью портала, либо с помощью Powershell.

Я ищу решение, использующее Microsoft.Azure.Management.ResourceManager.Fluent

Кажется непоследовательным, что я не смогу сделать это с помощью C #, но я не могу нигде найти эту функциональность.

Как зарегистрировать поставщиков ресурсов для новой подписки с помощью Azure Fluent Resource Management?


person Sam7    schedule 23.05.2017    source источник


Ответы (2)


Как зарегистрировать поставщиков ресурсов для новой подписки с помощью Azure Fluent Resource Management?

Мы могли бы использовать следующую функцию в свободном управлении ресурсами Azure поставщикам реестра.

var result=resourceManagementClient.Providers.Register("provider name");

Я также делаю для него демо.

Подготовка:

Зарегистрируйте приложение Azure Active Directory и назначьте роль

Затем мы можем получить tenantId, clientId, clientSecretKey

Шаги:

1. Создайте консольный проект C # и укажите Microsoft.Azure.Management.ResourceManager.Fluent.

2. получить доступ

 public static async Task<string> GetAccessToken(string tenantId, string clientId, string clientSecretKey)
    {

        var context = new AuthenticationContext("https://login.windows.net/" + tenantId);
        ClientCredential clientCredential = new ClientCredential(clientId, clientSecretKey);
        var tokenResponse = await context.AcquireTokenAsync("https://management.azure.com/", clientCredential);
        var accessToken = tokenResponse.AccessToken;
        return accessToken;
    }

3. Инициализировать объект resourceManagementClient.

TokenCredentials ccCredentials = new TokenCredentials(GetAccessToken(tenantId, appId, secretKey).Result);
            var resourceManagementClient = new ResourceManagementClient(ccCredentials)
            {
                SubscriptionId = subscriptionId
            };

4. зарегистрируйте поставщика ресурсов

Мы также можем перечислить незарегистрированных поставщиков

 var resources = resourceManagementClient.Providers.List().ToList(x => x.RegistrationState.Equals("NotRegistered"));

var result=resourceManagementClient.Providers.Register("provider name");

введите здесь описание изображения

5. Проверьте его на портале Azure.

введите здесь описание изображения

Код:

        static string appId = "Registried Azure AD Appliction Id";
        static string secretKey = "Client secret Key";
        static string tenantId = "tenant Id ";
        private static string subscriptionId = "subscription Id ";
        public static async Task<string> GetAccessToken(string azureTenantId, string azureAppId, string azureSecretKey)
        {

            var context = new AuthenticationContext("https://login.windows.net/" + tenantId);
            ClientCredential clientCredential = new ClientCredential(appId, secretKey);
            var tokenResponse = await context.AcquireTokenAsync("https://management.azure.com/", clientCredential);
            var accessToken = tokenResponse.AccessToken;
            return accessToken;
        }
        static void Main(string[] args)
        {
            TokenCredentials ccCredentials = new TokenCredentials(GetAccessToken(tenantId, appId, secretKey).Result);
            var resourceManagementClient = new ResourceManagementClient(ccCredentials)
            {
                SubscriptionId = subscriptionId
            };
            var list1 = resourceManagementClient.Providers.List().ToList();
            var resource = resourceManagementClient.Providers.List().ToList().FirstOrDefault(x => x.NamespaceProperty.Equals("TrendMicro.DeepSecurity") && x.RegistrationState.Equals("NotRegistered"));
            var registry =resourceManagementClient.Providers.Register(resource?.NamespaceProperty);
        }

Packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Azure.Management.ResourceManager.Fluent" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime" version="2.3.5" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.5" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.12" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" />
</packages>
person Tom Sun - MSFT    schedule 23.05.2017

Функция автоматической регистрации поставщика добавлена ​​в предстоящий выпуск Azure Management SDK (Fluent) v. 1.1.

person hovsepm    schedule 08.06.2017