Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

源自外部的配置文件值

在此页面上

  • 使用__rest扩展指令
  • 使用__exec扩展指令
  • 扩展指令参考
  • 输出具有已解析扩展指令值的配置文件

MongoDB 支持在配置文件中使用扩展指令来加载外部来源的值。扩展指令可以加载特定配置文件选项的值加载整个配置文件。扩展指令有助于隐藏安全证书和密码等机密信息。

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

要使用扩展指令,必须指定--configExpand命令行选项以及所使用的扩展指令的完整列表:

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

如果省略--configExpand选项,或者未指定配置文件中使用的扩展指令的完整列表,则mongod / mongos将返回错误并终止。您只能在命令行上指定--configExpand选项。

__rest扩展指令从REST端点加载配置文件值。 __rest支持加载配置文件中的特定值加载整个配置文件。

重要

指定的REST端点返回的值不能包含任何其他扩展指令。 mongod / mongos不会对返回的数据执行额外处理;如果返回的数据包含额外的扩展指令,则 / 将以错误代码终止。

__exec扩展指令从 shell 或终端命令加载配置文件值。 __exec支持加载配置文件中的特定值加载整个配置文件。

重要

执行指定的__exec字符串返回的数据不能包含任何其他扩展指令。 mongod / mongos不会对返回的数据执行额外处理;如果返回的数据包含额外的扩展指令,则 / 将以错误代码终止。

__rest

__rest扩展指令从REST端点加载配置文件值。 __rest支持加载配置文件中的特定值加载整个配置文件。然后, mongod / mongos开始使用外部来源的值作为其配置的一部分。

__rest扩展指令采用以下语法:

  • 要为一个或多个特定配置文件设置指定REST端点:

    <some configuration file setting>:
    __rest: "<string>"
    type: "string"
    trim: "none|whitespace"
    digest: "<string>"
    digest_key: "<string>"
  • 要为整个配置文件指定REST端点:

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

    如果通过REST端点指定整个配置文件,则扩展指令及其选项必须是配置文件中指定的唯一值。

__rest 采用以下字段:

字段
类型
说明
__rest
字符串

必需mongod / mongos针对其发出GET请求以检索外部来源值的 URL。

对于非本地主机REST端点(例如,远程服务器上托管的REST端点), __rest需要加密 ( https:// ) 的 URL,其中主机和远程服务器都支持 TLS 1 。 1或更高版本。

如果 URLREST 中指定的 端点需要身份验证,请使用标准 RFC3986 用户信息 将档案编码到 URL 中 格式。

对于本地主机REST端点(例如,侦听主机的REST端点), __rest允许使用未加密 ( http:// ) URL。

重要

指定的REST端点返回的值不能包含任何其他扩展指令。 mongod / mongos不会对返回的数据执行额外处理;如果返回的数据包含额外的扩展指令,则 / 将以错误代码终止。

type
字符串

可选控制__rest如何解析指定 URL 的返回值。

可能的值为:

  • string默认值

    指示__rest将返回的数据解析为字符串字面量。如果指定string ,则整个__rest区块和支持选项必须嵌套在您要为其加载外部来源值的字段下。

  • yaml

    指示__rest将返回的数据解析为yaml格式的文件。如果指定yaml ,则__rest区块必须是配置文件中的唯一内容。 mongod / mongos会将配置文件内容替换为从 REST 资源检索到的yaml

trim
字符串
可选指定whitespace以指示__rest修剪任何前导或尾随空格,特别是出现" ""\r""\n""\t""\v""\f"的空格。默认为none ,即不进行修剪。
字符串

可选。扩展结果的 SHA- 256摘要。

如果指定,则还必须指定digest_key。

字符串

可选。用于计算 SHA- 256摘要的密钥的十六进制字符串表示形式。

如果指定,则还必须指定摘要。

注意

  • 如果配置文件包含__rest扩展,则在 Linux/macOS 上,对配置文件的读取访问权限必须仅限于运行mongod / mongos进程的用户。

  • 要启用对__rest 扩展指令的解析,请使用mongod 选项启动mongos --configExpand "rest"/ 。

有关示例,请参阅使用__rest扩展指令。

__exec

__exec扩展指令从 shell 或终端命令的输出中加载配置文件值。 __exec支持加载配置文件中的特定值加载整个配置文件。然后, mongod / mongos开始使用外部来源的值作为其配置的一部分。

__exec扩展指令采用以下语法:

  • 要为一个或多个特定配置文件设置指定 shell 或终端命令,请执行以下操作:

    <some configuration file setting>:
    __exec: "<string>"
    type: "string"
    trim: "none|whitespace"
  • 为整个配置文件指定 shell 或终端命令:

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

    如果通过终端或 shell 命令指定整个配置文件,则扩展指令及其选项必须是配置文件中指定的唯一值。

__exec 采用以下字段:

字段
类型
说明
__exec
字符串

必需mongod / mongos在终端或 Shell 上执行以检索外部来源的值的字符串。

在 Linux 和 OSX 主机上,通过 POSIX popen()处理执行。在 Windows 主机上,通过进程控制 API 处理执行。 __exec以启动mongodmongos的同一用户身份打开一个只读管道。

重要

执行指定命令返回的数据不能包含任何附加扩展指令。 mongod / mongos不对返回的数据执行额外处理;如果返回的数据包含额外的扩展指令,则 / 将以错误代码终止。

type
字符串

可选控制__exec如何解析已执行命令的返回值。

可能的值为:

  • string默认值

    指示__exec将返回的数据解析为字符串字面量。如果指定string ,则整个__exec区块和支持选项必须嵌套在您要为其加载外部来源值的字段下。

  • yaml

    指示__exec将返回的数据解析为yaml格式的文件。如果指定yaml ,则__exec区块必须是配置文件中的唯一内容。 mongod / mongos会将配置文件内容替换为从执行命令中检索到的yaml

trim
字符串
可选指定whitespace以指示__exec修剪任何前导或尾随空格,特别是出现" ""\r""\n""\t""\v""\f"的空格。默认为none ,即不进行修剪。
字符串

可选。扩展结果的 SHA- 256摘要。

如果指定,您还必须指定digest_key

字符串

可选。用于计算 SHA- 256摘要的密钥的十六进制字符串表示形式。

如果指定,还必须指定摘要

注意

有关示例,请参阅使用__exec扩展指令。

您可以通过使用--outputConfig选项启动mongod / mongos来测试指定一个或多个扩展指令的配置文件的最终输出。使用--outputConfig } 启动的mongod / mongos将解析的 YAML 配置文档输出到stdout并停止。如果配置文件中指定的任何扩展指令返回其他扩展指令,则mongod / mongos会引发错误并终止。

警告

--outputConfig选项使用扩展指令返回任何字段的解析值。这包括以前通过使用配置选项的外部来源掩盖的任何隐私或敏感信息。

例如,以下配置文件mongod.conf包含__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

在指定 URL 记录的字符串是 20128

如果配置文件包含__rest扩展,则在 Linux/macOS 上,对配置文件的读取访问权限必须仅限于运行mongod / mongos进程的用户。

使用mongod --configExpand "rest"--outputConfig 选项启动 :

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

在终止之前, 会向mongod 输出以下内容:stdout

config: mongod.conf
storage:
dbPath: "/var/lib/mongo"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
net:
port: 20128
outputConfig: true
← 配置文件选项