AKS集群部署时terraform init查询hashicorp提供者包失败如何解决
问题原因
错误是因为代码中使用了azure前缀的数据源,你仅在配置中声明了官方Azure Provider hashicorp/azurerm,Terraform会自动尝试拉取不存在的hashicorp/azure Provider,导致初始化失败。
需修改的配置项
- 数据源命名错误:你定义的
data "azure_key_vault_secret"不属于azurermProvider,需修改为azurerm_key_vault_secret - 多余的Key Vault数据源配置:你定义的
data "azurerm_key_vault" "keyVaultClientID"参数错误,该数据源不支持key参数,且你不需要单独查询Key Vault本身,直接查询Key Vault内的秘密即可 - 数据源引用错误:你原本在AKS配置中引用
data.azurerm_key_vault_secret.keyVaultClientID.value属于对象引用错误,Key Vault数据源本身没有value属性,直接查询两个对应秘密即可
操作步骤
- 先删除本地缓存文件:执行
rm -rf .terraform .terraform.lock.hcl(Windows环境手动删除对应目录和文件),避免旧缓存影响 - 替换错误的数据源和引用配置,参考以下修正后的代码片段:
# 直接拉取Key Vault中存储的client id秘密 data "azurerm_key_vault_secret" "client_id" { name = "AKSClientID" key_vault_id = var.keyvaultID } # 直接拉取Key Vault中存储的client secret秘密 data "azurerm_key_vault_secret" "client_secret" { name = "AKSClientSecret" key_vault_id = var.keyvaultID } resource "azurerm_kubernetes_cluster" "test_cluster" { name = var.name location = var.location resource_group_name = var.resourceGroup dns_prefix = "" default_node_pool { name = "default" node_count = 1 vm_size = "Standard_D2_v2" } service_principal { client_id = data.azurerm_key_vault_secret.client_id.value client_secret = data.azurerm_key_vault_secret.client_secret.value } tags = { "Environment" = "Development" } }
- 重新执行
terraform init即可正常拉取Provider完成初始化
内容的提问来源于stack exchange,提问作者Hvaandres
相关产品推荐
相关产品推荐

