本文介绍了使用 terraform 输出恢复 Azure ARm 模板的输出值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 terraform 和 Azure ARM 模板,为了使用特定的 azure 函数配置事件网格,我正在尝试在 terraform 输出中恢复一些值.

Using terraform and Azure ARM template, in order to configre event grid with a particular azure function, I am trying to recover some values in a terraform output.

确实,我有这个 ARm 模板部署来拥有特定功能的系统密钥:

Indeed, I have this ARm template deployment to have the systems keys of a particular function:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "functionApp": {
            "type": "string",
            "defaultValue": ""
        }
    },
    "variables": {
        "functionAppId": "[resourceId('Microsoft.Web/sites', parameters('functionApp'))]"
    },
    "resources": [],
    "outputs": {
        "systemKeys": {
            "type": "object",
            "value": "[listkeys(concat(variables('functionAppId'), '/host/default'), '2018-11-01').systemKeys]"
        }
    }
}

我的部署运行良好,因为我可以在 Azure 门户中看到输出中有这样的 json 对象:

My deployment working well, because I can see in Azure Portal that there are in output a json objecy like this:

{
    "durabletask_extension": "ASensituveValueIDoNotShareForDurableTaskExtension==",
    "eventgrid_extension": "ASensituveValueIDoNotShareForEventGridExtension=="
}

现在的目的是在 terraform 输出中获取此值之一.我尝试了这些,但我遇到了一些错误:

Now the purpose is to get one of this value in a terraform output.I tried these but I have got some errors:

output "syst_key" {
    value = "${azurerm_template_deployment.function_keys.outputs["systemKeys"]}"
}

Error: on outputs.tf line 69, in output "syst_key":
69:     value = "${azurerm_template_deployment.function_keys.outputs["systemKeys"]}"
    |----------------
    | azurerm_template_deployment.function_keys.outputs is empty map of string

output "syst_keys" {
  value = "${lookup(azurerm_template_deployment.function_keys.outputs, "systemKeys")}"
}

Error:  on outputs.tf line 77, in output "syst_key":
77:     value = "${lookup(azurerm_template_deployment.function_keys.outputs, "systemKeys")}"
    |----------------
    | azurerm_template_deployment.function_keys.outputs is empty map of string

Call to function "lookup" failed: lookup failed to find 'systemKeys'.

为了在这个函数上触发 eventgrid,我必须从我的 ARM 部署模板中恢复 systemKeys 的 terraform 输出中的值.我知道部署运行良好,只是不知道如何使用 terraform 恢复这些值.

In order to trigger eventgrid on this function I have to recover the values in terraform output of systemKeys from my ARM deployment template. I know that the deployment is working well, I just don't know how to recover theses values with terraform.

推荐答案

对于您的问题,您需要注意只有 StringInt 类型Terraform 支持>布尔.所以需要在模板中更改输出类型,然后才能在 Terraform 中输出.有关更多详细信息,请参阅输出.Terraform 中正确的输出如下:

For your issue, you need to take care that only the type String, Int and Bool are supported in Terraform. So you need to change the output type in the template, then you can output them in Terraform. For more details, see outputs. And the right output in Terraform is below:

output "syst_key" {
    value = "${azurerm_template_deployment.function_keys.outputs["systemKeys"]}"
}

这篇关于使用 terraform 输出恢复 Azure ARm 模板的输出值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 22:24