MongoDB admite el uso de directivas de expansión en archivos de configuración para cargar valores de origen externo. Las directivas de expansión pueden cargar valores para... opciones del archivo de configuración o cargar el archivo de configuración completo. Las directivas de expansión ayudan a ocultar información confidencial, como certificados de seguridad y contraseñas.
storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: bindIp: __exec: "python /home/user/getIPAddresses.py" type: "string" trim: "whitespace" digest: 85fed8997aac3f558e779625f2e51b4d142dff11184308dc6aca06cff26ee9ad digest_key: 68656c6c30303030307365637265746d796f6c64667269656e64 tls: mode: requireTLS certificateKeyFile: "/etc/tls/mongod.pem" certificateKeyFilePassword: __rest: "https://myrestserver.example.net/api/config/myCertKeyFilePassword" type: "string" digest: b08519162ba332985ac18204851949611ef73835ec99067b85723e10113f5c26 digest_key: 6d795365637265744b65795374756666
Si el archivo de configuración incluye el Expansión
__rest: en Linux/macOS, el acceso de lectura al archivo de configuración debe estar limitado únicamente al usuario que ejecuta el procesomongod/mongos.Si el archivo de configuración incluye la
__execexpansión, en Linux/macOS, el acceso de escritura al archivo de configuración debe estar limitado únicamente al usuario que ejecutamongodmongosel proceso /.
Para utilizar directivas de expansión, debe especificar la --configExpand opción de línea de comandos con la lista completa de directivas de expansión utilizadas:
mongod --config "/path/to/config/mongod.conf" --configExpand "rest,exec"
Si omite la --configExpand opción o no especifica la lista completa de directivas de expansión utilizadas en el archivo de configuración,mongod/ devuelve un error ymongos --configExpand finaliza. Solo puede especificar la opción en la línea de comandos.
Utiliza la directiva de expansión __rest
La __rest directiva de expansión carga valores del archivo de configuración desde un REST punto final. __rest admite la carga de valores específicos en el archivo de configuración o la carga del archivo de configuración completo.
El siguiente archivo de configuración utiliza la __rest directiva de expansión para cargar el net.tls.certificateKeyFilePassword valor de configuración desde un REST punto final externo:
storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: bindIp: 192.51.100.24,127.0.0.1 tls: mode: requireTLS certificateKeyFile: "/etc/tls/mongod.pem" certificateKeyFilePassword: __rest: "https://myrestserver.example.net/api/config/myCertKeyFilePassword" type: "string"
- Permiso de archivo
- Si el archivo de configuración incluye la
__restexpansión, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse únicamente al usuario que ejecutamongodmongosel proceso /. - Análisis de expansión
Para analizar los
__restbloques, iniciemongod/mongoscon la--configExpand "rest"opción.El
mongod/ emitemongosunaGETsolicitud contra la URL especificada. Si la solicitud es correcta, elmongod/mongosreemplaza el valor decertificateKeyFilePasswordcon el valor devuelto. Si la URL no se resuelve o si elRESTpunto final devuelve un valor no válido, elmongod/mongosgenera un error y finaliza la conexión.
El siguiente archivo de configuración utiliza la __rest directiva de expansión para cargarlo desde un REST punto final externo. La directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.
__rest: "https://myrestserver.example.net/api/config/fullConfig" type: "yaml"
- Permiso de archivo
- Si el archivo de configuración incluye la
__restexpansión, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse únicamente al usuario que ejecutamongodmongosel proceso /. - Análisis de expansión
Para analizar los
__restbloques, iniciemongod/mongoscon la--configExpand "rest"opción.El
mongod/ emitemongosunaGETsolicitud a la URL especificada. Si la solicitud es correcta, elmongod/mongosanaliza el archivo de configuración devueltoyamly lo utiliza durante el inicio. Si la URL no se resuelve o no devuelve un archivo con elyamlformato correcto, elmongod/ genera un error ymongosfinaliza.
Utiliza la directiva de expansión __exec
La __exec directiva de expansión carga valores del archivo de configuración desde un comando de shell o terminal. __exec admite la carga de valores específicos en el archivo de configuración o la carga de todo el archivo de configuración.
El siguiente archivo de configuración de ejemplo utiliza la __exec directiva de expansión para cargar el net.tls.certificateKeyFilePassword valor de configuración desde la salida de un comando de shell o terminal:
storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: bindIp: 192.51.100.24,127.0.0.1 tls: mode: requireTLS certificateKeyFile: "/etc/tls/mongod.pem" certificateKeyFilePassword: __exec: "python /home/myUserName/getPEMPassword.py" type: "string"
- Permiso de archivo
- Si el archivo de configuración incluye la
__execexpansión, en Linux/macOS, el acceso de escritura al archivo de configuración debe estar limitado únicamente al usuario que ejecutamongodmongosel proceso /. - Análisis de expansión
Para analizar los
__execbloques, iniciemongod/mongoscon la--configExpand "exec"opción.El comando
mongod/mongosintenta ejecutar la operación especificada. Si el comando se ejecuta correctamente, el comandomongod/mongosreemplaza el valor decertificateKeyFilePasswordcon el valor devuelto. Si el comando falla o devuelve un valor no válido para la configuración del archivo de configuración, el comandomongod/mongosgenera un error y finaliza.
El siguiente archivo de configuración de ejemplo utiliza la __exec directiva de expansión para cargar el archivo de configuración desde la salida de un comando de shell o terminal. La __exec directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.
__exec: "python /home/myUserName/getFullConfig.py" type: "yaml"
- Permiso de archivo
- Si el archivo de configuración incluye la
__execexpansión, en Linux/macOS, el acceso de escritura al archivo de configuración debe estar limitado únicamente al usuario que ejecutamongodmongosel proceso /. - Análisis de expansión
Para analizar los
__execbloques, iniciemongod/mongoscon la--configExpand "rest"opción.Si el comando se ejecuta correctamente,
mongod/ analiza el archivo de configuraciónmongosdevueltoyamly lo utiliza durante el inicio. Si el comando falla o devuelve unyamlarchivo nomongodválido, / genera un error ymongosfinaliza.
Referencia de directivas de expansión
__restLa
__restdirectiva de expansión carga valores del archivo de configuración desde unRESTpunto final.__restpermite cargar valores específicos en el archivo de configuración o cargar el archivo de configuración completo. A continuación,mongod/ empieza a usar los valores externos como parte de sumongosconfiguración.La
__restdirectiva de expansión tiene la siguiente sintaxis:Para especificar un punto final
RESTpara una o más configuraciones de un archivo de configuración específico:<some configuration file setting>: __rest: "<string>" type: "string" trim: "none|whitespace" digest: "<string>" digest_key: "<string>" Para especificar un punto final
RESTpara todo el archivo de configuración:__rest: "<string>" type: "yaml" trim: "none|whitespace" Si se especifica el archivo de configuración completo a través del
RESTpunto final, la directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.
__resttoma los siguientes campos:CampoTipoDescripciónstring
Obligatorio La URL contra la cual
mongod/ emitemongosunaGETsolicitud para recuperar el valor de origen externo.Para los puntos finales que no son de host
RESTlocal (por ejemplo, unRESTpunto final alojado en un servidor remoto),__restrequierehttps://URL cifradas () donde tanto la máquina host como el servidor remoto admitan TLS 1.1 o posterior.Si el
RESTpunto final especificado en la URL requiere autenticación, codifique las credenciales en la URL con la información de usuario RFC 3986 estándar formato.Para los puntos
RESTfinales localesREST__rest(por ejemplo, un punto final que escucha en la máquina host), permitehttp://URL sin cifrar ().IMPORTANTE: El valor devuelto por el
RESTpunto final especificado no puede incluir directivas de expansión adicionales.mongod/mongosno realiza procesamiento adicional en los datos devueltos y finalizará con un código de error si estos incluyen directivas de expansión adicionales.typestring
Opcional Controla cómo analiza el valor devuelto desde la URL
__restespecificada.Los valores posibles son:
string( Pordefecto)Indica a que analice los datos devueltos como una cadena literal. Si
__restsestringespecifica, todo el__restbloque y las opciones complementarias deben estar anidados bajo el campo para el que se cargan los valores de origen externo.yamlIndica a que analice los datos devueltos como
__restunyamlarchivo con formato. Si seyamlespecifica, el bloque debe ser el__restmongodúnico contenido del archivo de configuración. / reemplazamongoselyamlcontenido del archivo de configuración con el obtenido del recurso REST.
trimstring
Opcional: Especifique
whitespacepara indicar a que recorte cualquier espacio inicial o final, específicamente las__restocurrencias" ""\r"de,,,,"\n""\t""\v"y."\f"El valor predeterminado esnoneo no se recorta.string
Opcional. El256 resumen SHA- del resultado de la expansión.
Si se especifica, también debe especificar digest_key.
string
Opcional. La representación de cadena hexadecimal del secreto utilizado para calcular el256 resumen SHA-.
Si se especifica, también debe especificar el resumen.
Nota
Si el archivo de configuración incluye la
__restexpansión, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse únicamente al usuario que ejecutamongodmongosel proceso /.Para habilitar el análisis de la
__restdirectiva de expansión, iniciemongod/mongoscon la--configExpand "rest"opción.
Para ver ejemplos, consulte Utilizar la
__restdirectiva de expansión.
__execLa
__execdirectiva de expansión carga los valores del archivo de configuración desde la salida de un comando de shell o terminal.__execpermite cargar valores específicos en el archivo de configuración o cargar el archivo de configuración completo. A continuación,mongod/mongosempieza a usar los valores externos como parte de su configuración.La
__execdirectiva de expansión tiene la siguiente sintaxis:Para especificar un comando de shell o terminal para una o más configuraciones de un archivo de configuración específico:
<some configuration file setting>: __exec: "<string>" type: "string" trim: "none|whitespace" Para especificar un comando de shell o terminal para todo el archivo de configuración:
__exec: "<string>" type: "yaml" trim: "none|whitespace" Si se especifica el archivo de configuración completo a través de un comando de terminal o shell, la directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.
__exectoma los siguientes campos:CampoTipoDescripción__execstring
Obligatorio La cadena que
mongod/ ejecuta en la terminal o shell para recuperar el valor de origenmongosexterno.En hosts Linux y OSX, la ejecución se gestiona mediante POSIX
popen(). En hosts Windows, la ejecución se gestiona mediante la API de control de procesos.__execabre una tubería de solo lectura con el mismo usuario que iniciómongodomongos.IMPORTANTE: Los datos devueltos al ejecutar el comando especificado no pueden incluir directivas de expansión adicionales.
mongod/mongosno realiza procesamiento adicional en los datos devueltos y finalizará con un código de error si estos incluyen directivas de expansión adicionales.typestring
Opcional Controla cómo analiza el valor devuelto por el comando
__execejecutado.Los valores posibles son:
string( Pordefecto )Indica a que analice los datos devueltos como una cadena literal. Si
__execsestringespecifica, todo el__execbloque y las opciones complementarias deben estar anidados bajo el campo para el que se cargan los valores de origen externo.yamlIndica a que analice los datos devueltos como
__execunyamlarchivo con formato. Si seyamlespecifica, el bloque debe ser el__execmongodúnico contenido del archivo de configuración. / reemplazamongoselyamlcontenido del archivo de configuración con el obtenido del comando ejecutado.
trimstring
Opcional: Especifique
whitespacepara indicar a que recorte cualquier espacio inicial o final, específicamente las__execocurrencias" ""\r"de,,,,"\n""\t""\v"y."\f"El valor predeterminado esnoneo no se recorta.string
Opcional. El256 resumen SHA- del resultado de la expansión.
Si se especifica, también debe especificar la digest_key
string
Opcional. La representación de cadena hexadecimal del secreto utilizado para calcular el256 resumen SHA-.
Si se especifica, también debe especificar el resumen.
Nota
Si el archivo de configuración incluye la
__execexpansión, en Linux/macOS, el acceso de escritura al archivo de configuración debe estar limitado únicamente al usuario que ejecutamongodmongosel proceso /.Para habilitar el análisis de las
__execdirectivas de expansión, iniciemongod/mongoscon la--configExpand "exec"opción.
Para ver ejemplos, consulte Utilizar la
__execdirectiva de expansión.
Genere el archivo de configuración con los valores resueltos de la directiva de expansión
Puede probar la salida final de un archivo de configuración que especifique una o más directivas de expansión iniciando mongod/mongos con la --outputConfig opción. Un mongod/mongos iniciado con genera el documento de configuración YAML --outputConfig resuelto stdout en y se detiene. Si alguna directiva de expansión especificada en el archivo de configuración devuelve directivas de expansión adicionales,mongod/ genera un error ymongos finaliza.
Advertencia
La opción devuelve los valores resueltos de cualquier campo que utilice una directiva de expansión. Esto incluye cualquier información privada o sensible previamente ocultada mediante el uso de una fuente externa para la opción de --outputConfig configuración.
Por ejemplo, el siguiente archivo mongod.conf de configuración contiene una __rest directiva de expansión:
storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: port: __rest: "https://mongoconf.example.net:8080/record/1" type: string
La cadena registrada en la URL especificada es 20128
Si el archivo de configuración incluye la __rest expansión, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse únicamente al usuario que ejecuta mongod mongos el proceso /.
Comience el mongod con --configExpand "rest" las opciones --outputConfig y:
mongod -f mongod.conf --configExpand rest --outputConfig
El envía lo siguiente mongod a stdout antes de finalizar:
config: mongod.conf storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: port: 20128 outputConfig: true