【问题标题】:terraform resource deployment across multiple subscription using service principle使用服务原理跨多个订阅的 terraform 资源部署
【发布时间】:2020-11-03 13:24:56
【问题描述】:

我有一个单一的服务原则。由于我的 terraform 代码需要访问订阅 A 和 B 中存在的资源,我该如何执行,下面是我的提供程序块。

 provider "azurerm" {
  features {}
    }
provider "azurerm" {
  alias   = "vnet"
  subscription_id = "0000"
  features {}
   }
data "azurerm_private_dns_zone" "foo" {
  provider            = azurerm.vnet
  name                = var.private_dnszonename
  resource_group_name = var.existing_dnsresourcegroup
          }  

【问题讨论】:

    标签: terraform-provider-azure azure-rm


    【解决方案1】:

    要允许我们在多个订阅中创建资源,您可以通过使用 别名 来使用多个 AzureRM 提供程序。您还可以在提供程序块中定义 SP 身份验证。然后你可以在特定的提供者中声明你的资源。

    例如,在该订阅中创建一个别名为 vnet azurerm provider 的资源组。

    resource "azurerm_resource_group" "test" {
      provider = "azurerm.vnet"
      name     = var.rgname                   
      location = var.location  
    }
    

    阅读更多详情here

    【讨论】:

    • 我已经完成了与您上面提到的相同的操作,但 terraform 计划抛出并确保资源提供者已注册。有关“skip_provider_registration”标志的更多信息可以在此处找到:terraform.io/docs/providers/azurerm/…
    • 我需要 2 个服务主体还是在两个订阅上拥有一个具有贡献者访问权限的单个 sp 都可以。我也添加了代码,
    • 您可以为每个订阅创建服务主体,或者一个 SP 对两个订阅都拥有权限,请参阅 this。不同的服务主体在订阅中可以有不同的范围和角色。
    • 实际上问题不在于 SP 在两个订阅中都扮演角色,而是错误是 terraform 正在尝试注册提供者。我将 skip_provider _registration 标志添加为 true,并且我能够部署
    • 我想我对你的问题有点困惑。那么,您的原始问题是否已解决,而不是评论中的问题?
    猜你喜欢
    • 2019-01-13
    • 2020-03-18
    • 2021-06-29
    • 2021-07-08
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多