如何使用Azure流利的资源管理注册资源提供者? [英] How to register resource providers using Azure fluent resource management?

查看:104
本文介绍了如何使用Azure流利的资源管理注册资源提供者?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想完全自动化我的资源创建过程.不幸的是,默认情况下,全新的订阅没有注册一些资源提供者.例如. SQL. 如此处所述,很容易解决:

I'd like to fully automate my resource creation process. Unfortunately brand new subscriptions don't have a few resource providers registered by default. E.g. SQL. That's easily solved as described here: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-common-deployment-errors#noregisteredproviderfound

但是,这仅概述了使用门户网站或Powershell手动使用的方法.

However this only outlines methods using either manually using the portal or using Powershell.

我正在寻找使用Microsoft.Azure.Management.ResourceManager.Fluent

似乎无法使用C#做到这一点,但是似乎无法在任何地方找到该功能.

It seems inconsistent that I wouldn't be able to do it using C#, but I can't seem to be able to find the functionality anywhere.

如何使用Azure流利的资源管理为新订阅注册资源提供者?

推荐答案

如何使用Azure流利的资源管理为新订阅注册资源提供者?

How to register resource providers for a new subscription using Azure fluent resource management?

我们可以在 Azure流畅的资源管理中使用以下功能 .

We could use the following function in the Azure fluent resource management to registry providers.

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

我也为此进行了演示.

准备工作:

注册表Azure Active Directory应用程序并分配角色

然后我们可以获取tenantId,clientId,clientSecretKey

Then we can get the tenantId,clientId,clientSecretKey

步骤:

1.创建一个C#控制台项目并引用Microsoft.Azure.Management.ResourceManager.Fluent

1.Create a C# console project and reference 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对象

3. Initialize resourceManagementClient Object

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

4.注册资源提供者

我们还可以列出未注册的提供商

We also can list the unregistied providers

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

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

5.从Azure门户对其进行检查.

5.Check it from the Azure portal.

代码:

        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:

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>

这篇关于如何使用Azure流利的资源管理注册资源提供者?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆