Я настраиваю инфраструктуру в Azure, и мой инструмент для выбора кода - Terraform.
Чтобы иметь хороший поддерживаемый код, я решил использовать модули. Моя текущая структура выглядит так:
├── development/
│ ├── main.tf
│ ├── vars.tf
│ ├── outputs.tf
│
├── modules/
│ ├── provider
│ └── resource-group
│ └── eventhub
Итак, я даже выпустил код провайдера в модуль. Мой код выглядит примерно так:
terraform {
backend "azurerm" {}
}
module "provider" {
tenant_id = "${var.tenant_id}"
client_id = "${var.client_id}"
client_secret = "${var.client_secret}"
subscription_id = "${var.subscription_id}"
source = "../modules/provider"
}
module "resource-group" {
source = "../modules/resource-group"
}
module "iothub" {
name = "${module.resource-group.name}"
location = "${module.resource-group.location}"
source = "../modules/iothub"
}
Но когда я запускаю terraform apply
, я получаю сообщение об ошибке * provider.azurerm: Error validating provider: No valid (unexpired) Azure CLI Auth Tokens found. Please run
az login .
Я уже исправил это, переместив код из модуля провайдера в файл main.tf
для моей среды разработки. Но мне любопытно, почему это происходит в первую очередь. Требуется ли ресурс провайдера в корневом модуле?
Спасибо!