Terraform 未针对我指向的 AZ 帐户

问题描述 投票:0回答:1

我有 2 个帐户。帐户 1 和帐户 2。 我跑

az login

然后

az account set --subscription "account-1-subscription-id

然后

az account show

然后显示我指向帐户 1 接下来我就跑

terraform plan

及其目标帐户 2

我使用相同的命令提示符来运行 az login、az account set...、terrform init、terraform plan 等

我通过 Azure CLI 向 azurerm 提供商进行身份验证

这就是我设置提供商的方式

provider "azurerm" {
  features {
    resource_group {
      prevent_deletion_if_contains_resources = false
    }
  }
  subscription_id = var.subscription_id
  client_id       = var.client_id
  client_secret   = var.client_secret
  tenant_id       = var.tenant_id
}

即使用我的变量文件中的订阅 ID 变量,如下所示:

variable "subscription_id" {
  default     = "account-1-subscription-id"
  description = "the subscription ID we are creating azure resources in."
}

我尝试卸载并重新安装 terraform,从帐户 2 的订阅中完全删除我的访问权限,更新 AZ CLI,运行“Remove-Item -Recurse -Force .terraform”,terraform init -reconfigure。

azure terraform
1个回答
0
投票

我和你有同样的问题。 就我而言,我有两个 Azure 服务主体,另一个已注销,但

terraform
正在尝试使用注销的 SP 来定位资源。

我的后端块看起来像这样......

terraform {
  backend "azurerm" {
    subscription_id      = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    storage_account_name = "terraformdevstate"
    resource_group_name  = "cc-dev-rg-tor"
    container_name       = "tfstate-devops-dev"
    key                  = "dev-test"
  }
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.80"
    }
    azuread = {
      source  = "hashicorp/azuread"
      version = "~>2.4"
    }
  }
  required_version = "~> 1.5"
}

我认为

terraform
正在缓存并针对其他订阅,即使我专门选择属于第二个 SP 的订阅。

Error: Failed to get existing workspaces: Error retrieving keys for Storage Account "terraformdevstate": storage.AccountsClient#ListKeys: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="AuthorizationFailed" Message="The client '6cb8xxxx-xxxx-xxxx-xxxx-70c35b6cxxxx' with object id '6cb8xxxx-xxxx-xxxx-xxxx-70c35b6cxxxx' does not have authorization to perform action

即使我注销第一个 SP 并登录到第二个 SP terraform 也想使用第一个 SP 来部署基础设施。

不确定这是 Terraform 还是 Azure CLI 出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.