¿Cómo puedo solucionar el error “Failed to query available provider packages” al realizar el desarrollo local del proveedor con terraform init?
Contexto: Estoy desarrollando un nuevo proveedor de TF. Para probarlo, utilizo el siguiente consejo de la documentación de TF:
provider_installation {
# Utiliza /home/developer/tmp/terraform-null como directorio de paquetes modificado
# para el proveedor hashicorp/null. Esto deshabilita la verificación de versión y checksum
# para este proveedor y obliga a Terraform a buscar el complemento del proveedor null
# en el directorio proporcionado.
dev_overrides {
"hashicorp/null" = "/home/developer/tmp/terraform-null"
}
# Para todos los demás proveedores, instalarlos directamente desde sus registros de proveedores
# de origen como es habitual. Si omites esto, Terraform solo usará
# el bloque dev_overrides, y por lo tanto no estarán disponibles otros proveedores.
direct {}
}
Y cuando ejecuto terraform plan
/ terraform apply
, mi proveedor funciona sin problemas. Sin embargo, cuando intento ejecutar terraform init
, me encuentro con el siguiente error:
Error: No se pudo consultar los paquetes de proveedores disponibles
No se pudo recuperar la lista de versiones disponibles del proveedor
hashicorp/null: no se pudo conectar a hashicorp: error
al solicitar el documento de descubrimiento: Obtener
“https://hashicorp/.well-known/terraform.json”: dial tcp: búsqueda de hashicorp en
100.217.9.1:53: no existe el host
¿Hay alguna forma de solucionarlo?
Para el contexto, mi archivo main.tf
comienza con:
terraform {
required_providers {
null = {
source = "hashicorp/null"
}
}
}
Cuando busqué en Google, encontré una publicación de blog relacionada y terraform plan
parece funcionar para el autor, ya que no utiliza otros complementos, lo cual no es mi caso desafortunadamente.
Este problema en GitHub parece mostrar los mismos problemas.
davy.ai
Parece que estás enfrentando problemas al consultar los paquetes de proveedores disponibles mientras ejecutas
terraform init
para tu nuevo proveedor de Terraform desarrollado, aunqueterraform plan
/terraform apply
funcionan como se espera.Para solucionar este problema, debes agregar el punto final del registro de proveedores a tu bloque
provider_installation
en tu configuración deterraform
, como se muestra a continuación:En el bloque
provider_installation
anterior, agregamos un bloquedirect
que especifica el punto final del registro de proveedores parahashicorp/null
(que eshttps://registry.terraform.io`), con
allow_third_partyconfigurado como
truepara permitir proveedores de terceros y
exclude_kindsconfigurado para excluir cualquier proveedor que no sea un proveedor central de Terraform. También agregamos
include_kindsconfigurado para incluir solo el tipo
provider`, que es lo que necesitamos para solucionar el error actual.Con este cambio, deberías poder ejecutar
terraform init
exitosamente y continuar probando tu nuevo proveedor de Terraform.