Terraform aks 模块 - 通过远程状态获取集群名称和资源组名称
Terraform aks module - get cluster name and resource group name via remote state
嗨,我正在尝试按照 this offical guide to manage aks resources. There terraform_remote_state 用于获取 resource_group_name
和 kubernetes_cluster_name
。
data "terraform_remote_state" "aks" {
backend = "local"
config = {
path = "/path/to/base/project/terraform.tfstate"
}
}
# Retrieve AKS cluster information
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "cluster" {
name = data.terraform_remote_state.aks.outputs.kubernetes_cluster_name
resource_group_name = data.terraform_remote_state.aks.outputs.resource_group_name
}
我在文档中使用 aks module. Looking at its output 创建了初始 aks 集群,它不导出资源组名称或集群名称。
现在我想知道如何获得这些信息。我在基础项目中尝试了以下内容。
module "aks" {
...
}
output "resource_group_name" {
value = module.aks.resource_group_name
}
output "kubernetes_cluster_name" {
value = module.aks.cluster_name
}
但是我在尝试时遇到错误 terraform plan
Error: Unsupported attribute
│
│ on main.tf line 59, in output "resource_group_name":
│ 59: value = module.aks.resource_group_name
│ ├────────────────
│ │ module.aks is a object, known only after apply
│
│ This object does not have an attribute named "resource_group_name".
╵
╷
│ Error: Unsupported attribute
│
│ on main.tf line 63, in output "kubernetes_cluster_name":
│ 63: value = module.aks.cluster_name
│ ├────────────────
│ │ module.aks is a object, known only after apply
│
│ This object does not have an attribute named "cluster_name".
不过,这些在该模块的 inputs 下列出。现在我不知道如何从 terraform_remote_state
.
中获取这些值
由于模块本身没有名称和资源组作为输出,我们必须先在那里声明输出,然后在部署或远程状态下调用它。
因此我们必须在执行 terraform init 后在 output.tf 中为 aks 模块添加 2 个输出。
output "kubernetes_cluster_name" {
value = azurerm_kubernetes_cluster.main.name
}
output "resource_group_name" {
value = azurerm_kubernetes_cluster.main.resource_group_name
}
然后在定义模块后调用 main.tf 中的输出,即 network 和 aks ,您也可以在计划中看到您的 Kubernetes 集群名称,并在应用它之后。
output "kuberneteclustername" {
value = module.aks.kubernetes_cluster_name
}
output "resourcegroupname" {
value = module.aks.resource_group_name
}
现在让我们从远程状态测试它:
data "terraform_remote_state" "aks" {
backend = "local"
config = {
path = "path/to/terraform/aksmodule/terraform.tfstate"
}
}
# Retrieve AKS cluster information
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "cluster" {
name = data.terraform_remote_state.aks.outputs.kuberneteclustername
resource_group_name = data.terraform_remote_state.aks.outputs.resourcegroupname
}
output "aks" {
value = data.azurerm_kubernetes_cluster.cluster.name
}
output "rg" {
value = data.azurerm_kubernetes_cluster.cluster.resource_group_name
}
嗨,我正在尝试按照 this offical guide to manage aks resources. There terraform_remote_state 用于获取 resource_group_name
和 kubernetes_cluster_name
。
data "terraform_remote_state" "aks" {
backend = "local"
config = {
path = "/path/to/base/project/terraform.tfstate"
}
}
# Retrieve AKS cluster information
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "cluster" {
name = data.terraform_remote_state.aks.outputs.kubernetes_cluster_name
resource_group_name = data.terraform_remote_state.aks.outputs.resource_group_name
}
我在文档中使用 aks module. Looking at its output 创建了初始 aks 集群,它不导出资源组名称或集群名称。
现在我想知道如何获得这些信息。我在基础项目中尝试了以下内容。
module "aks" {
...
}
output "resource_group_name" {
value = module.aks.resource_group_name
}
output "kubernetes_cluster_name" {
value = module.aks.cluster_name
}
但是我在尝试时遇到错误 terraform plan
Error: Unsupported attribute
│
│ on main.tf line 59, in output "resource_group_name":
│ 59: value = module.aks.resource_group_name
│ ├────────────────
│ │ module.aks is a object, known only after apply
│
│ This object does not have an attribute named "resource_group_name".
╵
╷
│ Error: Unsupported attribute
│
│ on main.tf line 63, in output "kubernetes_cluster_name":
│ 63: value = module.aks.cluster_name
│ ├────────────────
│ │ module.aks is a object, known only after apply
│
│ This object does not have an attribute named "cluster_name".
不过,这些在该模块的 inputs 下列出。现在我不知道如何从 terraform_remote_state
.
由于模块本身没有名称和资源组作为输出,我们必须先在那里声明输出,然后在部署或远程状态下调用它。
因此我们必须在执行 terraform init 后在 output.tf 中为 aks 模块添加 2 个输出。
output "kubernetes_cluster_name" {
value = azurerm_kubernetes_cluster.main.name
}
output "resource_group_name" {
value = azurerm_kubernetes_cluster.main.resource_group_name
}
然后在定义模块后调用 main.tf 中的输出,即 network 和 aks ,您也可以在计划中看到您的 Kubernetes 集群名称,并在应用它之后。
output "kuberneteclustername" {
value = module.aks.kubernetes_cluster_name
}
output "resourcegroupname" {
value = module.aks.resource_group_name
}
现在让我们从远程状态测试它:
data "terraform_remote_state" "aks" {
backend = "local"
config = {
path = "path/to/terraform/aksmodule/terraform.tfstate"
}
}
# Retrieve AKS cluster information
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "cluster" {
name = data.terraform_remote_state.aks.outputs.kuberneteclustername
resource_group_name = data.terraform_remote_state.aks.outputs.resourcegroupname
}
output "aks" {
value = data.azurerm_kubernetes_cluster.cluster.name
}
output "rg" {
value = data.azurerm_kubernetes_cluster.cluster.resource_group_name
}