設定ファイルはどこにあるか
起動のたびに config/templates/*.template をレンダーし、各コンポーネントの設定場所に
上書きします。 コンポーネント側のファイルを直接修正すると、次の起動で消えてしまいます。
→ 設定の変更方法
データレイクの設定は 「出所は二つ、方向は一つ」 で作られます。オペレーターが修正するファイルは決まっており、コンテナ内の設定ファイルはそれを掛け合わせて生成されたものです。
호스트 /etc/kopens/conf/*.template ← 설정의 «형태» (빈칸이 뚫린 원본)
× /etc/kopens/plantpulse-platform.env ← 시크릿 (비밀번호 · API 키)
× /etc/kopens/platform.node.env ← 이 노드의 값 (IP · 모드)
+ 이미지 안 config/defaults.env ← 비밀 아닌 기본값 (위에서 안 준 것만)
─────────────────────────────────────────
→ pd config render → /opt/kopens/plantpulse-platform/<module>/conf/… (생성물)
pd start は毎回、例外なく最初にレンダーします。そのため、コンテナ内の生成物を手で修正しても次の起動で消えてしまいます。2026-09-01 に実際にコンテナ内の cassandra.yaml を修正して認証を有効にしたところ、再生成でファイルが元に戻り、認証が丸ごと壊れた事故がありました。
正本ファイル四つ
| # | ファイル | 内容 | 形式 | 誰が書くか |
|---|---|---|---|---|
| 1 | /etc/kopens/plantpulse-platform.env | シークレット — サービスアカウントのパスワード・API キー・TLS パスワード。秘密でない共通値もここに書けます | VAR=값 1行に1つ、export なし。先頭2行(# generated:・# last rotation:)はツールが管理 | install.sh が作成し、passwd.sh が更新。秘密でない行はオペレーターが直接 |
| 2 | /etc/kopens/platform.node.env | このボックスだけに真の値 — PP_MASTER_IP・PP_KAFKA_ADVERTISED_HOST・DOCKER_PP_EXTERNAL_IP・PP_NODE_ID | 同じ形式 | インストールツールがテンプレートから作成し、オペレーターが直接 |
| 3 | /etc/kopens/conf/*.template | 設定の形 — 各エンジンの設定ファイル原本33個 | 各エンジンの文法 + ${PP_변수} プレースホルダー | 初回起動時にイメージからシードし、その後はオペレーターが直接 |
| 4 | (イメージ内) plantpulse-datalake-cli/config/defaults.env | 秘密でないデフォルト値 — ポート・アカウント名・ディレクトリ・TLS設定 | KEY=value | 製品。オペレーターは変更せず、1・2で上書きします |
サイドカーのパスワード行を修正するだけでは反映が完了しません。PostgreSQL・Aster TSDB のようにサーバーアカウントが正本である値は、サーバー側も一緒に変更する必要があり、順序を間違えるとプラットフォームが起動しません。bin/passwd.sh がその順序を代わりに実行します → パスワード・API キーの変更
値が決まる順序
ホストの bin/env.sh が上から下へ読む順序が、そのまま優先順位です。後から読まれるものが勝ちます。
| 優先順位 | 出所 | なぜ勝つか |
|---|---|---|
| 1 (最上位) | /etc/kopens/platform.node.env | サイドカーの次に読まれる無条件代入 |
| 2 | /etc/kopens/plantpulse-platform.env | VAR=값 無条件代入 — シェルの export も上書きします |
| 3 | 呼び出しシェルの export | 1・2 がその名前を書いていないときだけ |
| 4 (最下位) | bin/env.sh の ${VAR:-기본값} | 誰も決めていないときだけ |
その値は compose を経由してコンテナに環境変数として入り、コンテナ内では渡された値が defaults.env に勝ちます。
export は静かに無視されますPP_PG_PASSWORD=새값 bin/up.sh のようにシェルで値を渡す方法は、サイドカーがまだないノードでのみ有効です。サイドカーがすでにその名前を持っている場合は、サイドカーが勝ちます。実際にこの方法で変更したと思い込んで進めてしまった事故がありました。
いまこのボックスの有効値と出所を確認するには、頭の中でシミュレーションせずに次のコマンドを実行してください。シークレットは **** で隠されます。
cd /opt/kopens/plantpulse-platform-docker
bin/env.sh --print
コンテナ内にはサイドカーはありません
コンテナには /etc/kopens/plantpulse-platform.env ファイルがマウントされません。 値はホストの bin/env.sh がサイドカーを読み取り、compose がそれを環境変数としてコンテナに渡す経路でのみ入ります。
そのため、二つのことが付随します。
- サイドカーを修正した後はコンテナを再作成する必要があり、新しい値が入ります。ホストの
bin/restart-datalake.shがその作業を行います。 - compose が書いていない名前は、サイドカーにいくら書いてもコンテナに届きません。 どの名前が届くかは
compose/docker-compose.ymlのx-pp-secretsアンカーとplantpulse-datalakeサービスのenvironment:ブロックが決定します。変数リファレンスに「届く名前」だけをまとめています。
pd doctor をコンテナ内で実行すると、サイドカーの行は「ファイルなし」ではなくそもそも表示されず、代わりに all required secrets set 行が実際の測定値です — 正常です。
テンプレート一覧 — 何がどこへレンダーされるか
ホスト /etc/kopens/conf/ のテンプレート33個(最上位23 + cluster/ 10)が以下の場所へ移動します。対応表の正本はコンテナ内の plantpulse-datalake-cli/config/render.map で、pd config list がこのノードのモードに該当する行を出力します。
| テンプレート | レンダー先 (PP_HOME 基準) | MASTER | WORKER |
|---|---|---|---|
valkey.conf | plantpulse-storage/cache/valkey/conf/valkey.conf | ○ | ○ (cluster/) |
postgresql.conf・pg_hba.conf | plantpulse-storage/db/postgres/conf/ | ○ | ○ (cluster/) |
cassandra.yaml・jvm-server.options | plantpulse-storage/db/cassandra/conf/ | ○ | ○ (cluster/) |
spark-env.sh・spark-defaults.conf・metrics.properties | plantpulse-analytics/spark/conf/ | ○ | ○ |
hive-site.xml・hive-auth.properties | plantpulse-analytics/spark/conf/ | ○ | ○ (cluster/) |
hive-site.xml | plantpulse-analytics/hive/conf/hive-site.xml | ○ | — |
kyuubi-defaults.conf | plantpulse-analytics/kyuubi/conf/ | ○ | ○ |
gravitino-iceberg-rest-server.conf | plantpulse-analytics/gravitino/conf/ | ○ | — |
kafka.properties・kafka-jaas.conf | plantpulse-messaging/kafka/config/kafka.properties・jaas.conf | ○ | — |
hivemq.xml・plantpulse-mq-auth.properties | plantpulse-messaging/mqtt/conf/config.xml・auth.properties | ○ | — |
plantpulse-timeseries-engine.conf | plantpulse-timeseries/engine/conf/ (二つの名前で) | ○ | — |
plantpulse-datalake-admin-api.properties | plantpulse-datalake-admin-api/config/ | ○ | ○ (cluster/) |
workflow.yaml・application.yaml | plantpulse-workflow/temporal/config/・kestra/config/ | ○ | — |
plantpulse-cep.properties | plantpulse-cep/config/ | ○ | — |
plantpulse-jdbc.properties・plantpulse-data-gateway.properties | plantpulse-data-gateway/config/ | ○ | — |
cluster/ 表示は、WORKER ノードが /etc/kopens/conf/cluster/ の下の別のテンプレートを使うことを意味します。例えば MASTER の valkey.conf.template には replicaof がなく、cluster/valkey.conf.template には replicaof ${PP_MASTER_IP} ${PP_REDIS_PORT} があります。
テンプレート文法
三つだけです。
| 文法 | 意味 |
|---|---|
${PP_VAR} | 値がない場合、レンダー全体が失敗します(exit 4)。空の値で埋めて先に進みません |
${PP_VAR:기본값}・${PP_VAR:-기본값} | 値がない場合、デフォルト値 |
シークレットにはインラインデフォルト値を置けません。昔のレンダラーが空の値で埋めて先に進み、パスワードが空文字列の Aster TSDB が起動したことがあったため、現在は欠けている名前をすべて列挙して停止します。
レンダーされない設定 — 管理コンソールアカウント
管理コンソールのログインアカウントはどのテンプレートにも含まれません。admin-api プロセスが環境変数から直接読み取ります。ディスクにパスワードのコピーをもう一枚作らないためです。
| 変数 | 出所 | デフォルト値 |
|---|---|---|
PP_DATALAKE_ADMIN_USER | defaults.env | admin |
PP_DATALAKE_ADMIN_PASSWORD | サイドカー | 2026-09-05 以降のインストール版は、Web コンソールの管理者と同じ開発用デフォルト値 → 初期パスワードの変更。それ以前のインストール版は空で、コンソールがオフになっています |
PP_DATALAKE_ADMIN_API_KEY | サイドカー | なし — 空の場合、キー認証のみオフになり、ブラウザログインはそのまま |
コンポーネントを選んで停止できません
変数 PD_OPTIONS はありますが、現在の compose スタックはこの値をコンテナに渡しません。
そのため、コンポーネントを一つだけ除外して起動する構成は現在サポートされていません →
FAQ