在 Windows 中将 Azure CLI 命令与 Terraform "data source" 结合使用失败
Use Azure CLI command with Terraform "data source" in Windows is failing
我有一个 Azure CLI 命令,returns 认知搜索 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 上,对于需要什么引用和转义没有单一的标准,因此它将始终使用最初由 Microsoft Visual C++ 运行时库引入的最典型的约定。大多数现代 Windows CLI 程序都将接受该格式,因此我希望上面的内容能够工作,但我提到它是为了以防万一 az
是一个有不寻常要求的程序。
我有一个 Azure CLI 命令,returns 认知搜索 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 上,对于需要什么引用和转义没有单一的标准,因此它将始终使用最初由 Microsoft Visual C++ 运行时库引入的最典型的约定。大多数现代 Windows CLI 程序都将接受该格式,因此我希望上面的内容能够工作,但我提到它是为了以防万一 az
是一个有不寻常要求的程序。