1

我最近尝试建立与第二个订阅的服务连接,我让它在第一个订阅上正常工作,并且已经工作了七个月并且仍在工作。但是,当我向服务主体应用程序授予对新订阅的访问权限时,管道失败并说它看不到资源组。这是在 Terraform Initialise 步骤中。

我已在订阅级别授予贡献者对服务主体的访问权限,并且为了更好的措施,我已授予贡献者对实际资源组自身的服务主体的访问权限。

这是我得到的错误:

Initializing the backend...

Successfully configured the backend "azurerm"! Terraform will automatically
use this backend unless the backend configuration changes.
╷
│ Error: Failed to get existing workspaces: Error retrieving keys for Storage Account "nsterraformstatestorage": storage.AccountsClient#ListKeys: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error. Status=404 Code="ResourceGroupNotFound" Message="Resource group 'TerraformBackendForCICTesting' could not be found."
│ 
│ 
╵

##[error]Error: The process '/opt/hostedtoolcache/terraform/1.0.4/x64/terraform' failed with exit code 1

我过去一直关注这篇文章来设置服务连接:https ://sabirmohamed.com/how-to-create-a-service-connection-in-the-azure-devops/

我相信这两个订阅都在同一个租户中。

我肯定遗漏了一些东西,因为我确信一个服务主体可以跨多个订阅工作。

4

1 回答 1

-1

如果您在订阅范围级别创建服务连接(在链接之后完成),则服务连接将绑定到您在创建时输入的订阅。

如果您改为创建一个包含两个订阅的管理组并使用该管理组作为范围创建服务连接,那么它应该适用于两个订阅。

就个人而言,我不喜欢给服务主体和服务连接提供过宽的访问权限,因此我通常为每个订阅创建至少一个。

编辑(由于评论中的格式不佳)

如果任务需要,可以在任务级别设置服务连接:

steps:
  - task: AzureKeyVault@1
    displayName: KeyVault
    inputs:
      azureSubscription: ${{ parameters.serviceConnectionName }}
      KeyVaultName: ${{ parameters.keyVaultName }}

编辑2:

在 Terraform 任务中,服务连接设置如下:

environmentServiceNameAzureRM: 'YourServiceConnectionName'
于 2022-01-09T15:30:23.910 回答