Cuando intento generar el uri de mongodb con Terraform y el proveedor de atlas de mongodb, no puedo obtener el uri completo con el nombre de usuario y la contraseña. Por ejemplo, cuando hago algo como:
terraform { required_version = "~> 0.14.7" required_providers { mongodbatlas = { source = "mongodb/mongodbatlas" version = "0.8.2" } } } provider "mongodbatlas" { public_key = var.mongodbatlas_public_key private_key = var.mongodbatlas_private_key } data "mongodbatlas_cluster" "db" { project_id = var.mongodbatlas_project_id name = format("some-db-name-%s", var.env) } output "db_url" { value = data.mongodbatlas_cluster.db.connection_strings[0].address_srv } Siempre obtengo un uri de la forma: mongodb+srv://some-db-name-staging.xjcol.mongodb.net Agregar eso como una variable de entorno a mi aplicación web para conectarme a db no funciona como es necesario para autenticarse con un nombre de usuario y una contraseña. Agregar manualmente el nombre de usuario y la contraseña a esa cadena como en mongodb+srv://[username]:[password]@some-db-name-staging.xjcol.mongodb.net funciona y la aplicación puede conectarse bien a la base de datos.
Si bien entiendo lo que estás tratando de lograr, sospecho que estás mezclando cosas aquí. Dejame explicar:
Sin embargo, la creación del clúster es independiente de la creación de la base de datos y del usuario de la base de datos, lo que significa que lo que obtiene de Terraform es solo una cadena de conexión genérica de Mongo donde ni siquiera Mongo sabe a qué usuario/base de datos desea conectarse.
Le sugiero que componga su propia cadena de conexión y la pase a su aplicación usando una secuencia de comandos posterior al aprovisionamiento, ya sea usando las salidas de Terraform del clúster y el usuario de la base de datos, o simplemente componiéndola usted mismo si ya conoce la información por adelantado.
En caso de que utilice AWS, MongoDB Atlas admite cadenas de conexión mediante usuarios de IAM y roles de IAM. Este es un enfoque mucho mejor y más seguro que lidiar con contraseñas y toda la carga adicional que implica administrar contraseñas. Si esto suena como algo que te gustaría explorar, házmelo saber.