Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / /

自己管理型配置の外部ソースの構成ファイルの値

項目一覧

  • __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展開ディレクティブを使用して、外部のRESTエンドポイントから設定net.tls.certificateKeyFilePassword値を読み込みます。

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"
ファイル権限
構成ファイルに__rest展開が含まれている場合、Linux/macOS では、構成ファイルへの読み取りアクセスは、 mongod / mongosプロセスを実行しているユーザーのみに制限する必要があります。
展開解析

ブロックを解析するには、mongod オプションを指定して__rest /mongos --configExpand "rest"を起動します。

mongod / mongosは、指定された URL に対してGETリクエストを発行します。 成功した場合、 mongod / mongoscertificateKeyFilePasswordの値を返し値に置き換えます。 URL の解決に失敗した場合、またはRESTエンドポイントが無効な値を返した場合、 mongod / mongosはエラーをスローして終了します。

次の構成ファイルでは、 __rest展開ディレクティブを使用して、外部のRESTエンドポイントから構成ファイルをロードします。 展開ディレクティブとそのオプションは、構成ファイルで指定される値のみである必要があります。

__rest: "https://myrestserver.example.net/api/config/fullConfig"
type: "yaml"
ファイル権限
構成ファイルに__rest展開が含まれている場合、Linux/macOS では、構成ファイルへの読み取りアクセスは、 mongod / mongosプロセスを実行しているユーザーのみに制限する必要があります。
展開解析

ブロックを解析するには、mongod オプションを指定して__rest /mongos --configExpand "rest"を起動します。

mongod / mongosは、指定された URL に対してGETリクエストを発行します。 成功した場合、 mongod / mongosは返された構成yamlファイルを解析し、起動時にそれを使用します。 URL の解決または適切にフォーマットされたyamlファイルの返却に失敗した場合、 mongod / mongosはエラーをスローして終了します。

重要

指定されたRESTエンドポイントによって返される値には、追加の展開ディレクティブを含めることはできませんmongod / mongosは返されたデータに対して追加の処理を実行せ、返されたデータに追加の展開ディレクティブが含まれている場合はエラー コードで終了します。

__exec展開ディレクティブは、shell またはターミナルコマンドから構成ファイル値をロードします。 __execは、構成ファイル内の特定の値の読み込みまたは構成ファイル全体の読み込みをサポートしています。

次の構成ファイルの例では、 __exec展開ディレクティブを使用して、shell またはターミナルコマンドの出力から設定net.tls.certificateKeyFilePassword値をロードします。

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"
ファイル権限
構成ファイルに__exec展開が含まれている場合、Linux/macOS では、構成ファイルへの書込み (write) アクセスは、 mongod / mongosプロセスを実行しているユーザーのみに制限する必要があります。
展開解析

ブロックを解析するには、mongod オプションを指定して__exec /mongos --configExpand "exec"を起動します。

mongod / mongosは指定された操作の実行を試みます。 コマンドが正常に実行されると、 mongod / mongoscertificateKeyFilePasswordの値を返し値に置き換えます。 コマンドが失敗した場合、または構成ファイル設定の無効な値を返した場合、 mongod / mongosはエラーをスローして終了します。

次の構成ファイルの例では、 __exec展開ディレクティブを使用して、shell またはターミナルコマンドの出力から構成ファイルを読み込みます。 __exec展開ディレクティブとそのオプションは、構成ファイルで指定される値のみである必要があります。

__exec: "python /home/myUserName/getFullConfig.py"
type: "yaml"
ファイル権限
構成ファイルに__exec展開が含まれている場合、Linux/macOS では、構成ファイルへの書込み (write) アクセスは、 mongod / mongosプロセスを実行しているユーザーのみに制限する必要があります。
展開解析

ブロックを解析するには、mongod オプションを指定して__exec /mongos --configExpand "rest"を起動します。

コマンドが正常に実行されると、 mongod / mongosは返された構成yamlファイルを解析し、起動時にそれを使用します。 コマンドが失敗した場合、または無効なyamlファイルが返された場合、 mongod / mongosはエラーをスローして終了します。

重要

指定された__exec string を実行して返されるデータには、追加の展開ディレクティブを含めることはできません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 は、次のフィールドがあります。

フィールド
タイプ
説明
string

必須mongod / mongosが外部ソースの値を取得するためのGETリクエストを発行する URL 。

非ローカルホストRESTエンドポイント(たとえば、リモート サーバーでホストされているRESTエンドポイント)の場合、 __restにはホストマシンとリモート サーバーの両方が TLS 1.1以降をサポートしている暗号化された( https:// ) URL が必要です。

URL で指定されたREST エンドポイントに認証が必要な場合は、標準 RFC3986 ユーザー情報 を使用して URL に認証情報をエンコードします 形式。

ローカルホストRESTエンドポイント(ホスト マシンでリッスンするRESTエンドポイントなど)の場合、 __restは暗号化されていない( http:// )URL を許可します。

重要:指定されたRESTエンドポイントによって返される値には、追加の展開ディレクティブを含めることはできませんmongod / mongosは返されたデータに対して追加の処理を実行せ、返されたデータに追加の展開ディレクティブが含まれている場合はエラー コードで終了します。

type
string

任意__restが指定された URL から返された値を解析する方法を制御します。

可能な値は次のとおりです。

  • stringデフォルト

    返されたデータをリテラル string として解析するように__restに指示します。 stringを指定する場合、 __restブロック全体とサポート オプションは、外部ソース値をロードするフィールドの下にネストする必要があります。

  • yaml

    返されたデータをyaml形式のファイルとして解析するように__restに指示します。 yamlを指定する場合、 __restブロックは構成ファイル内の 唯一 のコンテンツである必要があります。 mongod / mongosは、構成ファイルの内容を REST リソースから取得されたyamlに置き換えます。

trim
string
任意whitespaceを指定すると、 __restは先頭または末尾の空白、具体的には" ""\r""\n""\t""\v""\f"の発生を削除します。 デフォルトはnone 、または削除なし。
string

任意。 展開結果の SHA- 256ダイジェスト。

指定する場合は、 Digest_key も指定する必要があります。

string

注意

  • 構成ファイルに__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
string

必須 stringmongodmongos外部ソースの値を取得するためにターミナルまたは shell 実行shell する 。

Linux および OSX ホストでは、実行は POSIX popen()によって処理されます。 Windows ホストでは、実行は プロセス制御 API 経由で処理されます。 __execは、 mongodまたはmongosを開始したのと同じユーザーとして読み取り専用パイプを開きます。

重要:指定されたコマンドを実行して返されるデータには、追加の展開ディレクティブを含めることはできませんmongod / mongosは返されたデータに対して追加の処理を実行せ、返されたデータに追加の展開ディレクティブが含まれている場合はエラー コードで終了します。

type
string

任意コマンドの実行時に返される値を__execが解析する方法を制御します。

可能な値は次のとおりです。

  • stringデフォルト

    返されたデータをリテラル string として解析するように__execに指示します。 stringを指定する場合、 __execブロック全体とサポート オプションは、外部ソース値をロードするフィールドの下にネストする必要があります。

  • yaml

    返されたデータをyaml形式のファイルとして解析するように__execに指示します。 yamlを指定する場合、 __execブロックは構成ファイル内の 唯一 のコンテンツである必要があります。 mongod / mongosは、構成ファイルの内容を実行された コマンドから検索されたyamlに置き換えます。

trim
string
任意whitespaceを指定すると、 __execは先頭または末尾の空白、具体的には" ""\r""\n""\t""\v""\f"の発生を削除します。 デフォルトはnone 、または削除なし。
string

任意。 展開結果の SHA- 256ダイジェスト。

指定する場合は、 Digest_keyも指定する必要があります

string

任意。 stringSHA-256 ダイジェスト を計算するために使用されるシークレットの 16進数 表現。

指定する場合は、ダイジェストも指定する必要があります

注意

  • 構成ファイルに__exec展開が含まれている場合、Linux/macOS では、構成ファイルへの書込み (write) アクセスは、 mongod / mongosプロセスを実行しているユーザーのみに制限する必要があります。

  • __exec展開ディレクティブの解析を有効にするには、 mongod / mongos--configExpand "exec"オプションとともに起動します。

例については、「 __exec展開ディレクティブの使用 」を参照してください。

1 つ以上の展開ディレクティブを指定する構成ファイルの最終出力をテストするには、 mongod / mongos--outputConfigオプションとともに起動します。 mongodで開始されたmongos /--outputConfig は、解決された 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 で記録された string は、 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

戻る

構成ファイルのオプション