繁体   English   中英

将 Azure CLI 命令与 Terraform 中的“数据源”一起使用 Windows 失败

[英]Use Azure CLI command with Terraform "data source" in Windows is failing

我有一个 Azure CLI 命令返回认知搜索 API 键,需要在 terraform 中使用它的输出。命令读取

> az search admin-key show  -g <my resource group> --service-name <my search service>
{
  "primaryKey": "1...",
  "secondaryKey": "4..."
}

我正在使用这个 Terraform 资源:

data "external" "search_admin_key" {
  count   = local.deploy_indexes ? 1 : 0
  program = [
    "az", "search admin-key show -g ${var.rg_name}  --service-name ${var.cognitive_search_name}"
  ]

}

我无法让它在 windows 上工作:

  • 当我在整个命令中只使用数组中的一个字符串时,我得到一个错误的executable file not found in %PATH%
  • 当我将az保留为第一个元素并将其他所有元素保留在第二个时,我收到Error Message: ERROR: 'search admin-key show -g <my resource group> --service-name <my search service>' is misspelled or not recognized by the system.

请注意,我在null-resource / local-exec provisioner 中使用了az并且在那里工作正常。

如何解决问题并通过外部数据源语法运行我需要的命令?

external数据源期望它的program参数为程序的每个单独参数包含一个单独的列表元素。

我不熟悉您在此处运行的 Azure CLI,因此我无法确定它究竟如何解释其命令行,但根据 Windows CLI 应用程序的典型约定进行猜测,我会尝试以下操作:

data "external" "search_admin_key" {
  count   = local.deploy_indexes ? 1 : 0
  program = [
    "az", "search", "admin-key", "show", "-g", var.rg_name, "--service-name", var.cognitive_search_name,
  ]
}

运行程序时,数据源会自动插入任何必要的引号和转义,以处理var.rg_namevar.cognitive_search_name可能包含空格和其他特殊字符的可能性。 但是,在 Windows 上并没有关于引用的单一标准,而 escaping 是必需的,因此它将始终使用 Microsoft Visual C++ 运行时库最初引入的最典型的约定。 大多数现代 Windows CLI 程序都将接受该格式,因此我希望上面的格式能够工作,但我提到它只是为了以防az是一个具有不寻常要求的程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM