如何使用 Azure Fluent 资源管理注册资源提供者?
How to register resource providers using Azure fluent resource management?
我想完全自动化我的资源创建过程。不幸的是,全新的订阅并没有默认注册一些资源提供者。例如。 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 资源管理为新订阅注册资源提供者?
How to register resource providers for a new subscription using Azure fluent resource management?
我们可以在 Azure fluent resource management 中使用以下功能来注册提供商。
var result=resourceManagementClient.Providers.Register("provider name");
我也做了个demo。
准备:
Registry Azure Active Directory application and assign Role
然后我们可以得到tenantId,clientId,clientSecretKey
步骤:
1.Create 一个 C# 控制台项目和参考 Microsoft.Azure.Management.ResourceManager.Fluent
2.Get 访问令牌
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.Registry资源提供者
我们还可以列出未注册的供应商
var resources = resourceManagementClient.Providers.List().ToList(x => x.RegistrationState.Equals("NotRegistered"));
var result=resourceManagementClient.Providers.Register("provider name");
5.Check 来自 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>
即将发布的 Azure Management SDK (Fluent) v. 1.1 中添加了提供商自动注册功能。
我想完全自动化我的资源创建过程。不幸的是,全新的订阅并没有默认注册一些资源提供者。例如。 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 资源管理为新订阅注册资源提供者?
How to register resource providers for a new subscription using Azure fluent resource management?
我们可以在 Azure fluent resource management 中使用以下功能来注册提供商。
var result=resourceManagementClient.Providers.Register("provider name");
我也做了个demo。
准备:
Registry Azure Active Directory application and assign Role
然后我们可以得到tenantId,clientId,clientSecretKey
步骤:
1.Create 一个 C# 控制台项目和参考 Microsoft.Azure.Management.ResourceManager.Fluent
2.Get 访问令牌
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.Registry资源提供者
我们还可以列出未注册的供应商
var resources = resourceManagementClient.Providers.List().ToList(x => x.RegistrationState.Equals("NotRegistered"));
var result=resourceManagementClient.Providers.Register("provider name");
5.Check 来自 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>
即将发布的 Azure Management SDK (Fluent) v. 1.1 中添加了提供商自动注册功能。