簡體   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