Terrafrom-部署到多个Azure订阅

时间:2018-08-06 19:44:15

标签: azure terraform subscription terraform-provider-azure

我一直在尝试使用相同的Terraform堆栈在多个Azure订阅中部署资源。还需要在不同订阅中的这些资源之间传递参数。我曾尝试使用多个提供程序,但不支持。

Error: provider.azurerm: multiple configurations present; only one configuration is allowed per provider

如果您有关于如何完成此操作的方法或想法,请告诉我。

3 个答案:

答案 0 :(得分:3)

您可以通过使用aliasdoku)使用多个提供程序。

# The default provider configuration
provider "azurerm" {
  subscription_id = "xxxxxxxxxx"
}

# Additional provider configuration for west coast region
provider "azurerm" {
  alias  = "y"
  subscription_id = "yyyyyyyyyyy"
}

然后指定要使用备用提供程序的时间:

resource "azurerm_resource_group" "network_x" {
  name     = "production"
  location = "West US"
}

resource "azurerm_resource_group" "network_y" {
  provider = "azurerm.y"
  name     = "production"
  location = "West US"
}

答案 1 :(得分:0)

Markus的答案是正确的,但是如果您需要访问同一套Terraform源中的多个订阅,这是正确的解决方案。

如果您的目的是使用一个订阅作为沙箱,而另一个则用作真正的订阅,则只需将提供者信息移出Terraform脚本即可。有多种方法可以解决此问题:

由于工作空间太僵硬,无法满足我们的需求,因此我将最后三个结合使用。

答案 2 :(得分:0)

我作为Terraform初学者的一个愚蠢的原因得到了此错误代码,也许这里有人遇到了相同的问题:

我将main.tf文件的备份保存为mymainbackup1.tf之类的文件,即使不是main.tf,Terraform也将其解释为真实的.tf文件,因此它认为我已经注册了多个提供商。

我将文件更改为.txt扩展名,Terraform停止解释该文件并停止提供错误。