gpt4 book ai didi

c# - 从 C# 调用 ARM 模板

转载 作者:行者123 更新时间:2023-12-03 04:58:10 30 4
gpt4 key购买 nike

我正在解决一个要求,我想从传递参数(如资源名称、资源位置等)的代码动态调用 ARM 模板,

我能够创建 ARM 模板。例如,为存储帐户创建了 ARM 模板,我有参数文件,其中包含要传递给模板的值。然而,我想从 C# 代码动态传递这些值并在 Azure 中配置资源。
从 Power shell 中我能够实现这一目标,但我希望从 C# 中也能实现同样的目标。

我可以探索的任何建议/技术链接。

最佳答案

我使用以下函数来使用 C# 部署 ARM 模板

private async Task DeployTemplate(string resourceGroupName, string deploymentName, JObject templateFileContents, JObject parameters)
{
var deployment = new Deployment
{
Properties = new DeploymentProperties
{
Mode = DeploymentMode.Incremental,
Template = templateFileContents,
Parameters = parameters
}
};

var serviceCredentials = await ApplicationTokenProvider.LoginSilentAsync(_tenantId, _clientId, _clientSecret);
var resourceManagementClient = new ResourceManagementClient(serviceCredentials)
{
SubscriptionId = _subscriptionId
};

await resourceManagementClient.Deployments.CreateOrUpdateAsync(resourceGroupName, deploymentName, deployment);
}

templateFileContents 通过此函数填充:

private static JObject GetJsonFileContents(string pathToJson)
{
var path = Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), pathToJson);
using (var file = File.OpenText(path))
{
using (var reader = new JsonTextReader(file))
{
return (JObject)JToken.ReadFrom(reader);
}
}
}

这就是我创建动态参数对象的方法:

var parameters = JObject.FromObject(
new DbCloneArmParameters
{
databaseName = new ArmParameterValue { Value = databaseName },
serverName = new ArmParameterValue { Value = servername },
location = new ArmParameterValue { Value = "westeurope" } }
});

帮助类:

public class DbCloneArmParameters
{
public ArmParameterValue databaseName { get; set; }
public ArmParameterValue serverName { get; set; }
public ArmParameterValue location { get; set; }
}

public class ArmParameterValue
{
public string Value { get; set; }
}

关于c# - 从 C# 调用 ARM 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63767226/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com