小编tri*_*idy的帖子

Terraform-如何获取Azurerm密钥库访问策略的App Service对象ID?

我正在尝试使用Terraform向应用程序(也是在Terraform中创建)添加密钥库访问策略,该策略需要该应用程序的object_it(即GUID)。在ARM模板中,它看起来像这样:

 "objectId": "[reference(variables('myAppResourceId'), '2015-08-31-PREVIEW').principalId]"
Run Code Online (Sandbox Code Playgroud)

因此Terraform需要将主体ID分配给object_id。如果我使用像这样的值“ object_id = $ {azurerm_app_service.myApp.id}”

  resource "azurerm_key_vault_access_policy" "pol1" {
  vault_name          = "${azurerm_key_vault.kv1.name}"
  resource_group_name = "${azurerm_key_vault.kv1.resource_group_name}"

  tenant_id = "${data.azurerm_subscription.current.subscription_id}"
  object_id = "${azurerm_app_service.myApp.id}"

  key_permissions = "${var.app_keys_permissions}"
  secret_permissions = "${var.app_secrets_permissions}"
} 
Run Code Online (Sandbox Code Playgroud)

然后当我运行apply命令时,出现以下错误:

azurerm_key_vault_access_policy.pol1: "object_id" is an invalid UUUID: encoding/hex: invalid byte: U+002F '/'
Run Code Online (Sandbox Code Playgroud)

这可能是看起来像带有斜杠的url的id,所以这不起作用,因为我只需要GUID。


我还尝试了Terraform授予azure函数应用程序的建议,该应用程序具有msi访问azure keyvault的建议,方法是将object_id =“ $ {lookup(azurerm_app_service.app1.identity [0],” principal_id“)}}”用于应用程序服务而不是函数我得到一个错误:

 azurerm_key_vault_access_policy.appPolicy1: At column 43, line 1: list "azurerm_app_service.app1.identity" does not have any elements so …
Run Code Online (Sandbox Code Playgroud)

azure terraform azure-keyvault

5
推荐指数
1
解决办法
970
查看次数

使用 SetupGet 回调 Moq Index 属性

我正在尝试为一个扩展方法编写一个测试,该方法为发送到 IConfiguration 的 index 属性的键添加前缀:

延期:

public static class IConfigurationExt
{
    public static string GetDomainValue(this IConfiguration configuration, string key)
    {
        return configuration["domain." + key];
    }
}
Run Code Online (Sandbox Code Playgroud)

测试:

[Test]
public void GetInexKeyAsCallback()
{
    string keySet = null;

    Mock<IConfiguration> configurationMock = new Mock<IConfiguration>(MockBehavior.Strict);

    configurationMock.SetupGet(p => p[It.IsAny<string>()])
                        .Callback(() => keySet = "assign key here") // <<< the part here needs the parameter
                        .Returns("mock");

    IConfiguration configuration = configurationMock.Object;

    var result = configuration.GetDomainValue("testKey");

    Assert.AreEqual(expected: "domain.testKey", actual: keySet);
}
Run Code Online (Sandbox Code Playgroud)

我试图看到当执行 getter 并发送密钥时,它将带有 IConfiguration 的 index 属性的前缀。我的问题是我无法使回调部分与参数一起工作,例如: …

c# indexing properties moq mocking

5
推荐指数
1
解决办法
610
查看次数

如何通过 Terraform 或 ARM 部署应用服务扩展?

我们正在为我们的 AppService使用扩展。如何通过 ARM 模板和/或 Terraform 自动添加它?我在 Azure 为应用或服务计划生成的 ARM 模板中找不到它。

谢谢!

应用服务扩展截图

azure terraform azure-rm-template

4
推荐指数
1
解决办法
1105
查看次数

Terraform with Azure - 如何创建存储帐户?

在与 Terraform 战斗了一天后,我在这里呼救。

Terraform v0.11.11
+ provider.azurerm v1.20.0
Run Code Online (Sandbox Code Playgroud)

我正在尝试从头开始创建一个新的资源组和一个存储帐户。看起来可以在没有存储帐户的情况下创建资源组:

resource "azurerm_resource_group" "rg1" {
  name     = "myResourceGroup"
  location = "West Europe"
}
Run Code Online (Sandbox Code Playgroud)

资源组已创建,目前不存在存储帐户。所以在这一点上我很高兴。我执行destroy并从头开始。

现在,在代码中,创建资源组后,我想创建一个存储帐户,因为稍后其他资源需要引用它。azurerm_storage_account需要的唯一引用是对资源组的引用。

关于 azurerm_storage_account 的信息 https://www.terraform.io/docs/providers/azurerm/d/storage_account.html

代码现在看起来像这样:

resource "azurerm_resource_group" "rg1" {
  name     = "myResourceGroup"
  location = "West Europe"
}

data "azurerm_storage_account" "stacc1" {
  name                     = "mystorageaccount"
  resource_group_name      = "${azurerm_resource_group.rg1.name}"
}
Run Code Online (Sandbox Code Playgroud)

我运行计划命令并获得以下输出:

$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will …
Run Code Online (Sandbox Code Playgroud)

azure terraform azure-storage-account terraform-provider-azure

1
推荐指数
1
解决办法
3359
查看次数