Valores do arquivo de configuração de origem externa para implantações autogerenciadas
Nesta página
O MongoDB oferece suporte ao 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 para opçõ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 ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processomongod
oumongos
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 Diretiva de Expansão __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 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 Diretiva de Expansão __exec
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çãostring
Obrigatório A URL na qual o
mongod
/mongos
emite uma solicitaçãoGET
para recuperar o valor de origem externa.Para endpoints não locaishost
REST
(por exemplo, umREST
endpoint hospedado em um servidor remoto),__rest
requer URLs criptografadas ()https://
em que a máquina host e o servidor remoto suportem TLS 1.1 ou posterior.Se o ponto de extremidade
REST
especificado na URL exigir autenticação, codifique as credenciais na URL com o padrão no formato RFC 3986 Informações do usuário .Para
REST
endpoints localhost (por exemplo, umREST
endpoint escutando na máquina host),__rest
permitehttp://
URLs não criptografadas ().IMPORTANTE: o valor retornado pelo
REST
endpoint 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
string
Opcional Controla como analisa o valor retornado da URL
__rest
especificada.Os valores possíveis são:
string
(padrão)Direciona para analisar os dados retornados como uma string
__rest
literal. Sestring
especificar, todo o__rest
bloco e as opções de suporte deverão estar aninhados sob o campo para o qual você está carregando valores de origem externa.yaml
Direciona para analisar os dados retornados como
__rest
umyaml
arquivo formatado em. Seyaml
especificar, o bloco deverá ser o único conteúdo no arquivo de__rest
configuração. Omongod
/ substitui o conteúdomongos
doyaml
arquivo de configuração pelo recuperado do recurso REST.
trim
string
Opcional Especifique
whitespace
para direcionar para cortar qualquer espaço em branco à esquerda ou à direita, especificamente__rest
ocorrências" "
"\r"
"\n"
"\t"
de,,,,"\v"
"\f"
e. 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 a digest_key.
string
Opcional. A representação de string hexadecimal do256 segredo utilizado para calcular o resumo SHA-.
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 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
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 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
string
Opcional Controla como analisa o valor retornado pelo comando
__exec
executado.Os valores possíveis são:
string
(padrão )Direciona para analisar os dados retornados como uma string
__exec
literal. Sestring
especificar, todo o__exec
bloco e as opções de suporte deverão estar aninhados sob o campo para o qual você está carregando valores de origem externa.yaml
Direciona para analisar os dados retornados como
__exec
umyaml
arquivo formatado em. Seyaml
especificar, o bloco deverá ser o único conteúdo no arquivo de__exec
configuração. Omongod
/ substitui o conteúdo do arquivo de configuraçãomongos
peloyaml
recuperado do comando executado.
trim
string
Opcional Especifique
whitespace
para direcionar para cortar qualquer espaço em branco à esquerda ou à direita, especificamente__exec
ocorrências" "
"\r"
"\n"
"\t"
de,,,,"\v"
"\f"
e. 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 a digest_key
string
Opcional. A representação de string hexadecimal do256 segredo utilizado para calcular o resumo SHA-.
Se especificado, você também deve especificar o resumo
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 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