[英]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_name
和var.cognitive_search_name
可能包含空格和其他特殊字符的可能性。 但是,在 Windows 上并没有关于引用的单一标准,而 escaping 是必需的,因此它将始终使用 Microsoft Visual C++ 运行时库最初引入的最典型的约定。 大多数现代 Windows CLI 程序都将接受该格式,因此我希望上面的格式能够工作,但我提到它只是为了以防az
是一个具有不寻常要求的程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.