Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / /

Valores do arquivo de configuração de origem externa para implantações autogerenciadas

Nesta página

  • Use a diretiva de expansão __rest
  • Use a Diretiva de Expansão __exec
  • Referência de diretivas de expansão
  • Enviar o arquivo de configuração com valores de diretiva de expansão resolvidos

O MongoDB suporta o uso de diretivas de expansão em arquivos de configuração para carregar valores de origem externa. As diretivas de expansão podem carregar valores paraopções específicas do arquivo de configuração ou carregar o arquivo de configuração inteiro. As diretivas de expansão ajudam a ocultar informações confidenciais, como certificados de segurança e senhas.

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 diretivas de expansão, você deve especificar a opção de linha de comando --configExpand com a lista completa de diretivas de expansão usadas:

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

Se você omitir a opção --configExpand ou não especificar a lista completa de diretivas de expansão usadas no arquivo de configuração, o mongod/mongos retornará um erro e será encerrado. Você só pode especificar a opção --configExpand na linha de comando.

A diretiva de expansão __rest carrega valores do arquivo de configuração de um ponto de extremidade REST. __rest suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração.

O arquivo de configuração a seguir usa a diretiva de expansão __rest para carregar o valor de configuração net.tls.certificateKeyFilePassword de um endpoint REST 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"
Permissão de arquivo
Se o arquivo de configuração incluir a expansão __rest, no Linux ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

Para analisar os blocos __rest, inicie o mongod/mongos com a opção --configExpand "rest".

O mongod/mongos emite uma solicitação GET relação à URL especificada. Se for bem-sucedido, mongod/mongos substitui o valor de certificateKeyFilePassword pelo valor retornado. Se a URL não conseguir resolver ou se o ponto de extremidade REST retornar um valor inválido, mongod/mongos lançará um erro e encerrará.

O seguinte arquivo de configuração utiliza a diretiva de expansão __rest para carregar o arquivo de configuração de um endpoint REST externo. A diretiva de expansão e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__rest: "https://myrestserver.example.net/api/config/fullConfig"
type: "yaml"
Permissão de arquivo
Se o arquivo de configuração incluir a expansão __rest, no Linux ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

Para analisar os blocos __rest, inicie o mongod/mongos com a opção --configExpand "rest".

O mongod/ emitemongos uma GET solicitação para o URL especificado. Se for bem-sucedido, o mongod/ analisará o arquivo de configuraçãomongos retornado yaml e o usará durante a inicialização. Se o URL não conseguir resolver ou retornar um yaml arquivo formatado corretamente, o mongod/ gera um erro e émongos encerrado.

Importante

O valor retornado pelo ponto de extremidade REST especificado não pode incluir nenhuma diretiva de expansão adicional. O mongod/mongos não realiza processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

A diretiva de expansão __exec carrega os valores do arquivo de configuração a partir de um comando shell ou terminal. __exec suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração.

O exemplo de arquivo de configuração a seguir usa a diretiva de expansão __exec para carregar o valor de configuração net.tls.certificateKeyFilePassword a partir da saída de um comando de shell ou 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"
Permissão de arquivo
Se o arquivo de configuração incluir a expansão __exec, no Linux ou macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

Para analisar os blocos __exec, inicie o mongod/mongos com a opção --configExpand "exec".

O mongod/ tenta executar a operaçãomongos especificada. Se o comando for executado com êxito, o mongod/mongos substituirá o valor de certificateKeyFilePassword pelo valor retornado. Se o comando falhar ou retornar um valor inválido para a configuração do arquivo de configuração, o mongod/mongos gera um erro e é encerrado.

O arquivo de configuração de exemplo a seguir usa a diretiva de expansão __exec para carregar o arquivo de configuração a partir da saída de um comando de shell ou terminal. A diretiva de expansão __exec e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__exec: "python /home/myUserName/getFullConfig.py"
type: "yaml"
Permissão de arquivo
Se o arquivo de configuração incluir a expansão __exec, no Linux ou macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

Para analisar os blocos __exec, inicie o mongod/mongos com a opção --configExpand "rest".

Se o comando for executado com êxito, o mongod/mongos analisa o arquivo de configuração yaml retornado e o usa durante a inicialização. Se o comando falhar ou retornar um arquivo yaml inválido, o mongod/mongos lançará um erro e encerrará.

Importante

Os dados retornados pela execução da string __exec especificada não podem incluir nenhuma diretiva de expansão adicional. O mongod/mongos não realiza processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

__rest

A diretiva de expansão __rest carrega valores do arquivo de configuração de um ponto de extremidade REST. __rest suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração. O mongod/mongos então começa a usar os valores de origem externa como parte da sua configuração.

A diretiva de expansão __rest tem a seguinte sintaxe:

  • Passo a passo de como especificar um endpoint REST para uma configuração específica ou para configurações específicas no arquivo de configuração:

    <some configuration file setting>:
    __rest: "<string>"
    type: "string"
    trim: "none|whitespace"
    digest: "<string>"
    digest_key: "<string>"
  • Para especificar um ponto de extremidade REST para todo o arquivo de configuração:

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

    Se especificar todo o arquivo de configuração por meio do endpoint REST, a diretiva de expansão e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__rest usa os seguintes campos:

Campo
Tipo
Descrição
string

Obrigatório A URL na qual o mongod/mongos emite uma solicitação GET para recuperar o valor de origem externa.

Para endpoints REST não localhosts (por exemplo, um endpoint REST hospedado em um servidor), __rest requer URLs criptografadas (https://) em que a máquina host e o servidor suportem TLS 1.1 ou posterior.

Se o REST endpoint especificado na URL exigir autenticação, codifique as credenciais na URL com o padrão RFC 3986 Informações do usuário formato.

Para endpoints REST de host local (por exemplo, um endpoint REST ouvindo na máquina host), __rest possibilita URLs não criptografados (http://).

IMPORTANTE: o valor retornado pelo endpoint REST especificado não pode incluir nenhuma diretiva de expansão adicional. O mongod/mongos não executa processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

type
string

Opcional Controla como __rest analisa o valor retornado a partir da URL especificada.

Os valores possíveis são:

  • string (Padrão)

    Direciona __rest para analisar os dados retornados como uma string literal. Se especificar string, todo o bloco de__rest e as opções de suporte devem ser aninhadas sob o campo para o qual você estiver carregando valores de origem externa.

  • yaml

    Orienta __rest a analisar os dados retornados como um arquivo em formato yaml. Se especificar yaml, o bloco __rest deverá ser o único conteúdo no arquivo de configuração. O mongod/mongos substitui o conteúdo do arquivo de configuração pelo yaml recuperado do recurso REST.

trim
string
Opcional Especifique whitespace para instruir __rest a cortar qualquer espaço em branco à esquerda ou à direita, especificamente as ocorrências de " ", "\r", "\n", "\t", "\v" e "\f". O padrão é none ou nenhum corte.
string

Opcional. O resumo SHA-256 do resultado da expansão.

Se especificado, você também deve especificar o digest_key.

string

Opcional. A representação de string hexadecimal do segredo usado para calcular o resumo SHA-256 .

Se especificado, você também deve especificar o resumo.

Observação

  • Se o arquivo de configuração incluir a expansão __rest, no Linux ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.

  • Para ativar a análise da diretiva de expansão __rest, inicie o mongod/mongos com a opção --configExpand "rest".

Para obter exemplos, consulte Usar a diretiva de expansão __rest .

__exec

A diretiva de expansão __exec carrega valores do arquivo de configuração a partir da saída de um comando shell ou terminal. __exec suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração. O mongod/mongos então começa a usar os valores de origem externa como parte da sua configuração.

A diretiva de expansão __exec tem a seguinte sintaxe:

  • Para especificar um comando de terminal ou shell para uma configuração ou configurações específicas do arquivo de configuração:

    <some configuration file setting>:
    __exec: "<string>"
    type: "string"
    trim: "none|whitespace"
  • Para especificar um comando shell ou terminal para todo o arquivo de configuração:

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

    Se especificar todo o arquivo de configuração por meio de um comando de terminal ou shell, a diretiva de expansão e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__exec usa os seguintes campos:

Campo
Tipo
Descrição
__exec
string

Obrigatório A string que mongod/mongos executa no terminal ou shell para recuperar o valor de origem externa.

Em hosts Linux e OSX, a execução é tratada via POSIX popen(). Em hosts Windows, a execução é feita por meio da API de controle de processo. __exec abre um pipeline somente leitura como o mesmo usuário que iniciou o mongod ou mongos.

IMPORTANTE: os dados retornados pela execução do comando especificado não podem incluir nenhuma diretiva de expansão adicional. O mongod/mongos não executa processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

type
string

Opcional Controla como __exec analisa o valor retornado pelo comando executado.

Os valores possíveis são:

  • string (Padrão)

    Direciona __exec para analisar os dados retornados como uma string literal. Se especificar string, todo o bloco de__exec e as opções de suporte devem ser aninhadas sob o campo para o qual você estiver carregando valores de origem externa.

  • yaml

    Orienta __exec a analisar os dados retornados como um arquivo formatado yaml. Se especificar yaml, o bloco __exec deverá ser o único conteúdo no arquivo de configuração. O mongod/ substitui o conteúdo do arquivo de configuraçãomongos pelo yaml recuperado do comando executado.

trim
string
Opcional Especifique whitespace para instruir __exec a cortar qualquer espaço em branco à esquerda ou à direita, especificamente as ocorrências de " ", "\r", "\n", "\t", "\v" e "\f". O padrão é none ou nenhum corte.
string

Opcional. O resumo SHA-256 do resultado da expansão.

Se especificado, você também deve especificar o digest_key.

string

Opcional. A representação de string hexadecimal do segredo usado para calcular o resumo SHA-256 .

Se especificado, você também deve especificar o digest

Observação

  • Se o arquivo de configuração incluir a expansão __exec, no Linux ou macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.

  • Para ativar a análise das diretivas de expansão __exec, inicie mongod/mongos com a opção --configExpand "exec".

Para obter exemplos, consulte Usar a diretiva de expansão __exec .

É possível testar a saída final de um arquivo de configuração que especifica uma ou mais diretivas de expansão iniciando o mongod/mongos com a opção --outputConfig. Quando iniciado com --outputConfig, um mongod/mongos gera o documento de configuração YAML resolvido para stdout e interrompe. Se alguma diretiva de expansão especificada no arquivo de configuração retornar diretivas de expansão adicionais, o mongod/mongos gerará um erro e será encerrado.

Aviso

A opção --outputConfig retorna os valores resolvidos para qualquer campo usando uma diretiva de expansão. Isso inclui qualquer informação privada ou confidencial anteriormente ocultada pelo uso de uma fonte externa para a opção de configuração.

Por exemplo, o seguinte arquivo de configuração mongod.conf contém uma diretiva de expansão __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

A string registrada na URL especificada é 20128

Se o arquivo de configuração incluir a expansão __rest, no Linux ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.

Inicie o mongod com as opções --configExpand "rest" e --outputConfig:

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

O mongod gera o seguinte para stdout antes de terminar:

config: mongod.conf
storage:
dbPath: "/var/lib/mongo"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
net:
port: 20128
outputConfig: true

Voltar

Opções de arquivo de configuração