Terraform部署New Relic仪表板时变量语法报错求助
使用New Relic Terraform Provider时,仪表板变量在NRQL查询中引用失败的问题
我正在通过New Relic Terraform Provider生成动态仪表板,仪表板包含一个标签为domain的域名列表变量,需要在NRQL查询中引用该变量。在New Relic GUI中,使用{{ domain }}的语法可以正常运行,但通过Terraform部署时,虽然变量能正常创建并填充,查询中的{{ domain }}语法却触发NRQL语法错误。
错误信息
Error: query error; Invalid widget input with id 163128331: error parsing 'SELECT uniques(`client`) FROM Span WHERE `entity.name` = 'supergraph-prod' AND service = {{ domain }}'', please check nrql grammar. │ Cause: Invalid nrql query. │ │ with module.dashboard-federation.newrelic_one_dashboard.dashboard[0], │ on .terraform/modules/dashboard-federation/dashboard/main.tf line 2, in resource "newrelic_one_dashboard" "dashboard": │ 2: resource "newrelic_one_dashboard" "dashboard" {
相关代码示例
动态部件创建器对象
{ title = "Consumers" widget_type = "widget_table" query = "SELECT uniques(client) FROM Span WHERE `entity.name` = '${var.newrelic_app_name}' AND service = {{ domain }}'" row = 1 column = 1 },
Terraform资源定义
resource "newrelic_one_dashboard" "dashboard" { dynamic "widget_table" { for_each = page.value.widget_table iterator = widget content { title = try(widget.value.title, widget.value.query) filter_current_dashboard = try(widget.value.filter_current_dashboard, false) row = try(widget.value.row, 0) column = try(widget.value.column, 0) width = try(widget.value.widget_width, 4) height = try(widget.value.widget_height, 3) nrql_query { query = widget.value.query } } } }
解决方案
在Terraform中引用New Relic仪表板变量时,需要使用$变量名的语法替代GUI中的{{ 变量名 }}格式。修改后的查询语句如下:
query = "SELECT uniques(client) FROM Span WHERE `entity.name` = '${var.newrelic_app_name}' AND service = $domain"
New Relic Terraform Provider对仪表板变量的引用规则与GUI不同,Provider要求用$前缀直接引用变量名,而非双大括号包裹的格式。
内容的提问来源于stack exchange,提问作者tompea
相关产品推荐
相关产品推荐

