You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Azure CLI查询结果导入Terraform变量(免改CD流水线)

解决方案

方法1:使用AzureRM原生数据源(推荐)

Terraform的AzureRM Provider内置了azurerm_virtual_networks数据源,可直接筛选指定区域的虚拟网络,无需依赖外部CLI命令,完全契合Terraform的声明式配置风格。

代码示例

# 筛选westus区域的所有虚拟网络
data "azurerm_virtual_networks" "westus_vnets" {
  location = "westus"
}

# 转换为需求的list(map(string))格式
locals {
  forwarding_linked_vnets = [
    for vnet in data.azurerm_virtual_networks.westus_vnets.virtual_networks : {
      name = vnet.name
      id   = vnet.id
    }
  ]
}

# 关联虚拟网络到DNS转发规则
resource "azurerm_private_dns_resolver_virtual_network_link" "dns_link" {
  for_each = { for vnet in local.forwarding_linked_vnets : vnet.id => vnet }

  name                  = "dns-forward-link-${each.value.name}"
  private_dns_resolver_id = azurerm_private_dns_resolver.your_resolver.id
  virtual_network_id    = each.value.id
}

优势

  • 无需额外CLI调用,复用Terraform的Azure认证配置,无需单独处理CLI权限
  • 自动同步VNET状态,无需手动维护CLI过滤逻辑
  • 稳定性更高,避免CLI输出格式变动导致的解析错误

方法2:使用External数据源调用Azure CLI

如果你的VNET筛选逻辑复杂(比如需要CLI特有的多维度过滤规则),可通过Terraform的external数据源直接调用Azure CLI命令,解析输出为所需变量格式。

代码示例

# 调用Azure CLI获取westus区域VNET的名称和ID,输出JSON格式
data "external" "westus_vnets" {
  program = [
    "az",
    "network",
    "vnet",
    "list",
    "--location",
    "westus",
    "--query",
    "[].{name:name, id:id}",
    "-o",
    "json"
  ]
}

# 解析CLI输出为list(map(string))
locals {
  forwarding_linked_vnets = jsondecode(data.external.westus_vnets.result)
}

# 创建DNS虚拟网络链接
resource "azurerm_private_dns_resolver_virtual_network_link" "dns_link" {
  for_each = { for vnet in local.forwarding_linked_vnets : vnet.id => vnet }

  name                  = "dns-forward-link-${each.value.name}"
  private_dns_resolver_id = azurerm_private_dns_resolver.your_resolver.id
  virtual_network_id    = each.value.id
}

注意事项

  • 确保Terraform运行环境已安装Azure CLI,且已完成Azure认证(与流水线中的认证状态一致)
  • CLI命令必须输出合法JSON格式,否则jsondecode会触发解析错误
  • 如需更复杂的筛选逻辑,可调整CLI的--query参数或命令组合

内容的提问来源于stack exchange,提问作者Gabriel Kelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:52:09