Valores do arquivo de configuração de origem externa para implantações autogerenciadas
Nesta página
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
Se o arquivo de configuração incluir a expansão
__rest
, no Linux/macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado apenas ao usuário que estiver executando o processomongod
/mongos
apenas.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 processomongod
oumongos
apenas.
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.
Use a __rest
diretiva de expansão
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 processomongod
oumongos
apenas. - Análise de expansão
Para analisar os blocos
__rest
, inicie omongod
/mongos
com a opção--configExpand "rest"
.O
mongod
/mongos
emite uma solicitaçãoGET
relação à URL especificada. Se for bem-sucedido,mongod
/mongos
substitui o valor decertificateKeyFilePassword
pelo valor retornado. Se a URL não conseguir resolver ou se o ponto de extremidadeREST
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 processomongod
oumongos
apenas. - Análise de expansão
Para analisar os blocos
__rest
, inicie omongod
/mongos
com a opção--configExpand "rest"
.O
mongod
/ emitemongos
umaGET
solicitação para o URL especificado. Se for bem-sucedido, omongod
/ analisará o arquivo de configuraçãomongos
retornadoyaml
e o usará durante a inicialização. Se o URL não conseguir resolver ou retornar umyaml
arquivo formatado corretamente, omongod
/ gera um erro e émongos
encerrado.
Importante
Use a __exec
diretiva de expansão
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 processomongod
oumongos
apenas. - Análise de expansão
Para analisar os blocos
__exec
, inicie omongod
/mongos
com a opção--configExpand "exec"
.O
mongod
/ tenta executar a operaçãomongos
especificada. Se o comando for executado com êxito, omongod
/mongos
substituirá o valor decertificateKeyFilePassword
pelo valor retornado. Se o comando falhar ou retornar um valor inválido para a configuração do arquivo de configuração, omongod
/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 processomongod
oumongos
apenas. - Análise de expansão
Para analisar os blocos
__exec
, inicie omongod
/mongos
com a opção--configExpand "rest"
.Se o comando for executado com êxito, o
mongod
/mongos
analisa o arquivo de configuraçãoyaml
retornado e o usa durante a inicialização. Se o comando falhar ou retornar um arquivoyaml
inválido, omongod
/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.
Referência de diretivas de expansão
__rest
A diretiva de expansão
__rest
carrega valores do arquivo de configuração de um ponto de extremidadeREST
.__rest
suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração. Omongod
/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:CampoTipoDescriçãostringObrigatório A URL na qual o
mongod
/mongos
emite uma solicitaçãoGET
para recuperar o valor de origem externa.Para endpoints
REST
não localhosts (por exemplo, um endpointREST
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 endpointREST
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. Omongod
/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
stringOpcional 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 especificarstring
, 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 formatoyaml
. Se especificaryaml
, o bloco__rest
deverá ser o único conteúdo no arquivo de configuração. Omongod
/mongos
substitui o conteúdo do arquivo de configuração peloyaml
recuperado do recurso REST.
trim
stringOpcional Especifiquewhitespace
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.stringOpcional. O resumo SHA-256 do resultado da expansão.
Se especificado, você também deve especificar o digest_key.
stringObservaçã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 processomongod
oumongos
apenas.Para ativar a análise da diretiva de expansão
__rest
, inicie omongod
/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. Omongod
/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:CampoTipoDescrição__exec
stringObrigató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 omongod
oumongos
.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
stringOpcional 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 especificarstring
, 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 formatadoyaml
. Se especificaryaml
, o bloco__exec
deverá ser o único conteúdo no arquivo de configuração. Omongod
/ substitui o conteúdo do arquivo de configuraçãomongos
peloyaml
recuperado do comando executado.
trim
stringOpcional Especifiquewhitespace
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.stringOpcional. O resumo SHA-256 do resultado da expansão.
Se especificado, você também deve especificar o digest_key.
stringObservaçã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 processomongod
oumongos
apenas.Para ativar a análise das diretivas de expansão
__exec
, iniciemongod
/mongos
com a opção--configExpand "exec"
.
Para obter exemplos, consulte Usar a diretiva de expansão
__exec
.
Enviar o arquivo de configuração com valores de diretiva de expansão resolvidos
É 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