我有一個回傳認知搜索 API 密鑰的 Azure CLI 命令,需要在 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.
請注意,我az在null-resource / local-exec供應商中使用它并且在那里作業正常。
如何解決問題并通過外部資料源語法運行我需要的命令?
uj5u.com熱心網友回復:
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程式有不尋常的要求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441698.html
