从Azure CLI分析json结果时出错:正在启动Azure CLI:执行:“az”:在%PATH%中找不到可执行文件

68de4m5k  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(106)

我在运行"terraform计划"时遇到此错误。我通过CLI向Azure验证了terraform。我已设置帐户订阅。如何解决此问题?
错误:构建AzureRM客户端:请确保已安装Azure CLI版本2.0.79或更高版本。从Azure CLI分析JSON结果时出错:正在启动Azure CLI:执行:"az":在%PATH %中找不到可执行文件。

hec6srdp

hec6srdp1#

错误提示未找到az。因此,对于这种类型的错误,简单的解决方法是登录Azure,如下所示:

az login

然后错误出现:

然后,您可以检查您的订阅一次如下:

az account list

和以下登录步骤,我得到了解决我的问题。并检查您是否使用最新的Azure Cli版本。并尝试以下命令:

az account get-access-token

参考文献摘自:

flseospp

flseospp2#

Terraform云需要Azure访问权限,因为您的计划在云上运行。
首先,您需要为azure创建一个服务主体

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/SUBSCRIPTION_ID"

请参阅本教程:https://developer.hashicorp.com/terraform/tutorials/azure-get-started/azure-build
创建服务主体后,您将得到以下响应:

{
  "appId": "...", - client_id
  "displayName": "...",
  "password": "...", - client_secret
  "tenant": "..."  - tenant_id
}

然后,您可以使用以下方法之一为terraform提供Azure访问:
1.通过地形云GUI添加工作空间变量。它们将被视为环境变量。

ARM_CLIENT_ID="..."
ARM_CLIENT_SECRET="..."
ARM_SUBSCRIPTION_ID="..."
ARM_TENANT_ID="..."

1.或者将它们包含在. tf文件中。

provider "azurerm" {
  features {}
    
  subscription_id = '...'
  client_id       = '...'
  client_secret   = '...'
  tenant_id       = '...'
}

然而,在config中设置敏感数据并不是一个好主意。这就是为什么你可以使用方法#3:
1.在. tf文件中声明变量并通过命令行传递

provider "azurerm" {
  features {}
    
  subscription_id = var.subscription-id
  client_id       = var.client-id
  client_secret   = var.secret
  tenant_id       = var.tenant-id
}
terraform apply -var client-id='...' -var tenant-id='...' -var...

有关详细信息,请参见此答案:https://discuss.hashicorp.com/t/using-the-azure-provider-with-terraform-cloud/18177/2

相关问题