Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Valores de archivo de configuración de origen externo para implementación autogestionada

MongoDB admite el uso de directivas de expansión en los archivos de configuración para cargar valores obtenidos externamente. Las directivas de expansión pueden cargar valores para específicos Opciones del archivo de configuración o cargar todo el archivo de configuración. 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

Para usar las directivas de expansión, debes especificar la opción de línea de comandos --configExpand con la lista completa de directivas de expansión utilizadas:

mongod --config "/path/to/config/mongod.conf" --configExpand "rest,exec"

Si omites la opción --configExpand o si no especificas la lista completa de directivas de expansión utilizadas en el archivo de configuración, la opción mongod/mongos devuelve un error y se termina. Solo puedes especificar la opción --configExpand en la línea de comandos.

La __rest directiva de expansión carga los valores del archivo de configuración desde un endpoint de REST. __rest es compatible con 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 utiliza la directiva de expansión __rest para cargar el valor de configuración net.tls.certificateKeyFilePassword de un punto final externo REST:

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 expansión __rest, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse solo al usuario que ejecuta el proceso mongod / mongos.
Análisis de expansión

Para analizar los bloques __rest, inicia el mongod/mongos con la opción --configExpand "rest".

El mongod/mongos emite una solicitud GET contra la URL especificada. Si es exitoso, el mongod/mongos reemplaza el valor de certificateKeyFilePassword con el valor devuelto. Si la URL no se resuelve o si el terminal REST retorna un valor inválido, el mongod/mongos produce un error y termina el proceso.

El siguiente archivo de configuración utiliza la directiva de expansión __rest para cargar el archivo de configuración desde un endpoint externo de REST. 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 expansión __rest, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse solo al usuario que ejecuta el proceso mongod / mongos.
Análisis de expansión

Para analizar los bloques __rest, inicia el mongod/mongos con la opción --configExpand "rest".

El mongod/mongos emite una solicitud GET contra la URL especificada. Si es exitoso, el mongod/mongos analiza el archivo de configuración yaml devuelto y lo utiliza durante el inicio. Si la URL no se resuelve o devuelve un archivo yaml con el formato correcto, el mongod/mongos arroja un error y termina.

Importante

El valor devuelto por el REST endpoint especificado no puede incluir ninguna directiva adicional de expansión. El mongod/mongos no realiza un procesamiento adicional de los datos devueltos y terminará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

La directiva de expansión __exec carga valores del archivo de configuración desde un comando de shell o terminal. __exec admite cargar valores específicos en el archivo de configuración o cargar todo el archivo de configuración.

El siguiente ejemplo de archivo de configuración utiliza la directiva de expansión __exec para cargar el valor de la configuración net.tls.certificateKeyFilePassword a partir de 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 expansión __exec, en Linux/macOS, el acceso de escritura al archivo de configuración debe limitarse únicamente al usuario que ejecuta el proceso mongod / mongos.
Análisis de expansión

Para analizar los bloques __exec, inicia el mongod/mongos con la opción --configExpand "exec".

El mongod/mongos intenta ejecutar la operación especificada. Si el comando se ejecuta correctamente, el mongod/mongos reemplaza el valor de certificateKeyFilePassword con el valor devuelto. Si el comando falla o devuelve un valor no válido para el ajuste del archivo de configuración, el mongod/mongos lanza un error y finaliza.

El siguiente archivo de configuración de ejemplo utiliza la directiva de expansión __exec para cargar el archivo de configuración desde la salida de un comando de shell o terminal. La directiva de expansión __exec 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 expansión __exec, en Linux/macOS, el acceso de escritura al archivo de configuración debe limitarse únicamente al usuario que ejecuta el proceso mongod / mongos.
Análisis de expansión

Para analizar los bloques __exec, inicia el mongod/mongos con la opción --configExpand "rest".

Si el comando se ejecuta correctamente, el mongod/mongos analiza el archivo de configuración yaml devuelto y lo utiliza durante el inicio. Si el comando falla o devuelve un archivo yaml inválido, el mongod/mongos produce un error y se termina.

Importante

Los datos devueltos al ejecutar la string __exec especificada no pueden incluir ninguna directiva de expansión adicional. El mongod/mongos no realiza un procesamiento adicional de los datos devueltos y terminará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

__rest

La __rest directiva de expansión carga los valores del archivo de configuración desde un endpoint de REST. __rest admite la carga de valores específicos en el archivo de configuración o la carga de todo el archivo de configuración. El mongod/mongos comienza entonces a utilizar los valores obtenidos externamente como parte de su configuración.

La directiva de expansión __rest tiene la siguiente sintaxis:

  • Para especificar un endpoint de REST para un ajuste o ajustes de archivo de configuración:

    <some configuration file setting>:
    __rest: "<string>"
    type: "string"
    trim: "none|whitespace"
    digest: "<string>"
    digest_key: "<string>"
  • Para especificar un endpoint REST para todo el archivo de configuración:

    __rest: "<string>"
    type: "yaml"
    trim: "none|whitespace"

    Si especificas el archivo de configuración completo vía el endpoint REST, la directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.

__rest requiere los siguientes campos:

Campo
Tipo
Descripción

string

Requerido La URL ante la cual el mongod/mongos emite una solicitud GET para recuperar el valor obtenido externamente.

Para puntos finales no localhost REST (por ejemplo, un punto final de REST alojado en un servidor remoto), __rest requiere URLs cifradas (https://) donde tanto la máquina host como el servidor remoto soporten TLS 1.1 o posterior.

Si el endpoint REST especificado en la URL requiere autenticación, codifique las credenciales en la URL con el formato estándar RFC 3986 User Information.

Para los endpoints de localhost REST (por ejemplo, un endpoint REST que escucha en la máquina host), __rest permite URLs sin cifrado (http://).

IMPORTANTE: El valor devuelto por el extremo especificado de REST no puede incluir ninguna directiva de expansión adicional. El mongod/mongos no realiza un procesamiento adicional de los datos devueltos y finalizará con un código de error si los datos devueltos incluyen directivas adicionales de expansión.

type

string

Opcional Controla cómo __rest analiza el valor devuelto desde la URL especificada.

Los valores posibles son:

  • string (por defecto)

    Se indica a __rest que analice los datos devueltos como una string literal. Si se especifica string, todo el bloque __rest y las opciones de soporte deben estar anidados bajo el campo para el cual se están cargando valores obtenidos externamente.

  • yaml

    Dirige a __rest a analizar los datos devueltos como un archivo con formato yaml. Si se especifica yaml, el bloque __rest debe ser el único contenido en el archivo de configuración. La mongod/mongos reemplaza el contenido del archivo de configuración con el yaml recuperado del recurso REST.

trim

string

Opcional Especifique whitespace para que __rest recorte cualquier espacio en blanco al principio o al final, específicamente las apariciones de " ", "\r", "\n", "\t", "\v" y "\f". Por defecto es none o no recorta.

string

opcional. El resumen SHA-256 del resultado de la expansión.

Si se especifica, también debe especificar el digest_key.

string

opcional. La representación en string hexadecimal del secreto utilizado para calcular el SHA-256 digest.

Si se especifica, también se debe especificar el resumen.

Nota

  • Si el archivo de configuración incluye la expansión __rest, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse solo al usuario que ejecuta el proceso mongod / mongos.

  • Para habilitar el análisis de la directiva de expansión __rest, inicie el mongod/mongos con la opción --configExpand "rest".

Para ejemplos, consulte Usar la directiva de expansión __rest.

__exec

La directiva de expansión __exec carga los valores del archivo de configuración a partir de la salida de 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 mongod/mongos comenzará entonces a utilizar los valores obtenidos externamente como parte de su configuración.

La directiva de expansión __exec tiene la siguiente sintaxis:

  • Para especificar un comando shell o de terminal para una configuración específica o configuraciones en un archivo de configuración:

    <some configuration file setting>:
    __exec: "<string>"
    type: "string"
    trim: "none|whitespace"
  • Para especificar un shell o comando de terminal para todo el archivo de configuración:

    __exec: "<string>"
    type: "yaml"
    trim: "none|whitespace"

    Si se especifica todo el archivo de configuración 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.

__exec requiere los siguientes campos:

Campo
Tipo
Descripción

__exec

string

Obligatorio La string que el mongod/mongos ejecuta en el terminal o shell para recuperar el valor obtenido externamente.

En los hosts Linux y OSX, la ejecución se gestiona mediante POSIX popen(). En los hosts de Windows, la ejecución se gestiona a través de la API de control de procesos. __exec abre una pipe de solo lectura como el mismo usuario que inició mongod o mongos.

IMPORTANTE: Los datos devueltos al ejecutar el comando especificado no pueden incluir ninguna directiva de expansión adicional. El mongod/mongos no realiza procesamiento adicional en los datos devueltos y terminará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

type

string

Opcional Controla cómo __exec analiza el valor devuelto por el comando ejecutado.

Los valores posibles son:

  • string (por defecto )

    Se indica a __exec que analice los datos devueltos como una string literal. Si se especifica string, todo el bloque __exec y las opciones de soporte deben estar anidados bajo el campo para el cual se están cargando valores obtenidos externamente.

  • yaml

    Dirige a __exec para analizar los datos devueltos como un archivo con formato yaml. Si se especifica yaml, el bloque __exec debe ser el único contenido en el archivo de configuración. El/La mongod/mongos reemplaza el contenido del archivo de configuración con los/as yaml recuperados/as a partir del comando ejecutado.

trim

string

Opcional Especifique whitespace para que __exec recorte cualquier espacio en blanco al principio o al final, específicamente las apariciones de " ", "\r", "\n", "\t", "\v" y "\f". Por defecto es none o no recorta.

string

opcional. El resumen SHA-256 del resultado de la expansión.

Si se especifica, también debe especificar la clave_digest

string

opcional. La representación en string hexadecimal del secreto utilizado para calcular el SHA-256 digest.

Si se especifica, también se debe especificar el resumen

Nota

  • Si el archivo de configuración incluye la expansión __exec, en Linux/macOS, el acceso de escritura al archivo de configuración debe limitarse únicamente al usuario que ejecuta el proceso mongod / mongos.

  • Para habilitar el análisis de las directivas de expansión de __exec, inicia el mongod/mongos con la opción --configExpand "exec".

Para ejemplos, consulte Usar la directiva de expansión __exec.

Puede probar el resultado final de un archivo de configuración que especifique una o más directivas de expansión iniciando el mongod/mongos con la opción --outputConfig. Un mongod/mongos iniciado con --outputConfig emite el documento de configuración YAML resuelto en stdout y se detiene. Si cualquier directiva de expansión especificada en el archivo de configuración devuelve directivas de expansión adicionales, la mongod/mongos lanza un error y termina.

Advertencia

La opción --outputConfig devuelve los valores resueltos para cualquier campo usando una directiva de expansión. Esto incluye cualquier información privada o sensible previamente ocultada mediante una fuente externa para la opción de configuración.

Por ejemplo, el siguiente archivo de configuración mongod.conf contiene una directiva de expansión __rest:

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 string grabada en la URL especificada es 20128

Si el archivo de configuración incluye la expansión __rest, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse solo al usuario que ejecuta el proceso mongod / mongos.

Inicia el mongod con las opciones --configExpand "rest" y --outputConfig:

mongod -f mongod.conf --configExpand rest --outputConfig

El mongod emite lo siguiente 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

Volver

Opciones del archivo de configuración

En esta página