我正在 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
我的开发环境的文件中来解决这个问题。但我很好奇为什么会发生这种情况。根模块中是否需要提供程序资源?
谢谢!