Terrafrom - развертывание на нескольких подписках Azure
Я пытался использовать один и тот же стек terraform для развертывания ресурсов в нескольких подписках Azure. Также необходимо передать параметры между этими ресурсами в разных подписках. Я пытался использовать несколько провайдеров, но это не поддерживается.
Error: provider.azurerm: multiple configurations present; only one configuration is allowed per provider
Если у вас есть способ или идея, как этого добиться, пожалуйста, дайте мне знать.
2 ответа
Вы можете использовать несколько провайдеров, используя alias
( доку).
# 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"
}
Ответ Маркуса правильный, но это правильное решение, если вам нужно получить доступ к нескольким подпискам в одном наборе источников Terraform.
Если ваша цель состоит в том, чтобы использовать одну подписку как "песочницу", а другую по-настоящему, вам следует просто удалить информацию о провайдере из сценариев Terraform. Есть несколько способов справиться с этим:
- Workspaces
- Конфигурация сервера
- Скрипт-обёртка в bash/Powershell/python в стиле Terragrunt
- Символьные ссылки также могут быть использованы для обмена файлами в нескольких папках
Я использую комбинацию последних трех, так как рабочие пространства слишком жесткие для наших нужд.
Я получил этот код ошибки по глупой причине, как новичок Terraform, возможно, у кого-то здесь есть такая же проблема:
Я сохранил резервную копию моего main.tf
файл как-то вроде mymainbackup1.tf
и Terraform интерпретировал его как настоящий файл.tf, хотя он и не был main.tf
поэтому он подумал, что у меня зарегистрировано более одного поставщика.
Я изменил файл на расширение.txt, и Terraform перестал интерпретировать этот файл и перестал выдавать ошибку.