[英]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.