dockerinstaller케이스별_시나리오
0. 共通確認項目 (すべてのケース共通)
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| Docker未インストール時に実行 | xmError(501)出力後終了 | ✅ |
| Dockerデーモン未起動時に実行 | xmError(502)出力後終了 | ✅ |
| ./start.sh実行 | exemone-kafka-agentコンテナが起動される | ✅ |
| ./stop.sh実行 | exemone-kafka-agentコンテナが終了される | ✅ |
| cfg/ディレクトリowner | 1200:1200 (コンテナユーザー) | ✅ |
| log/ディレクトリ権限 | 777 (コンテナ書き込み可能) | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- コンテナ名変更:
exem-kafka-agent→exemone-kafka-agent - イメージ名変更:
maxgauge/exem-kafka-agent→maxgauge/exemone-kafka-agent - RECEIVER_IPにhostname/FQDNを許可(以前はIPのみ許可)
- Legacy環境サポート - Legacy環境検知/拒否分岐を追加
- cfg/.env:
KAFKA_GROUP_ID削除、KAFKA_AGENT_INSTALL_USER追加
1. Unpack (2番選択)
- 事前条件: exem/ディレクトリがない状態
- 実行: .bin実行 → 2番(unpack)選択
- 期待ログ:
Unpack completed
UNPACK_DIR={실행경로}/exem/kafka
xmSuccess(0): unpack completed
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| exem/kafka/生成 | 生成される | ✅ |
| start.sh, stop.sh | 存在 | ✅ |
| lib/exemone-kafka-agent-v*.tar.gz | 存在 (Dockerイメージファイル) | ✅ |
| Dockerイメージロード有無 | ロードされない (unpackのみ実行) | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- 抽出パス変更:
{실행경로}/exemone-kafka-agent→{실행경로}/exem/kafka
2. 新規インストール — Interactive (1番選択)
- 事前条件: exem/ディレクトリがない状態、
$EXEMONE_HOME未設定 - 実行: .bin実行 → 1番 → EXEM_HOME Enter(デフォルト値) → RECEIVER_IP入力 → 残りEnter
- 期待ログ:
Installation completed
AGENT_VERSION=...
PKG_VERSION=...
INSTALL_DIR={실행경로}/exem/kafka
RECEIVER_ADDR=...
IMAGE=maxgauge/exemone-kafka-agent:v...
To start: {실행경로}/exem/kafka/start.sh
xmSuccess(0): installation completed
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| Dockerイメージロードされる | docker imagesで確認可能 | ✅ |
| インストール位置 | {실행경로}/exem/kafka | ✅ |
| start.sh, stop.sh | 存在 | ✅ |
| cfg/.env | 生成される (RECEIVER_ADDR、VERSIONなど含む) | ✅ |
| exem-docker-installer-tmp/ | 残っていない | ✅ |
| RECEIVER_IPにhostname入力 (例: receiver) | 正常に処理される | ✅ |
変形: インストール中にexemone-kafka-agentコンテナが既に実行中の場合
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| コンテナ自動終了有無 | 終了しない | ✅ |
| 完了メッセージ | "Container is currently running"案内 + To apply出力 | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- 既存コンテナ自動stop/rm削除 - 以前は自動削除を試みたが、コンテナ名が異なり正常動作しなかった
3. 新規インストール — Config mode
- 実行:
./docker-installer.bin config.env - config.env例:
INSTALL_DIR=/opt/exem
RECEIVER_IP=10.20.30.40
RECEIVER_PORT=9009
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| 対話形式入力なしでインストール完了 | 確認 | ✅ |
| INSTALL_DIRキー | インストールパスとして認識される | ✅ |
| RECEIVER_PORT未指定時 | デフォルト値9009適用 | ✅ |
| EXEM_AGENT_NAME未指定時 | デフォルト値kafka-agent適用 | ✅ |
| RECEIVER_IP未指定時 | xmError(505)出力後終了 | ✅ |
| RECEIVER_IPにhostname指定 (例: receiver) | 正常に処理される | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- Configキー変更:
INSTALL_PATH→INSTALL_DIR
4. Standaloneパッチ — Interactive (1番選択、既存インストールあり)
- 事前条件: exem/kafka/に既存インストールあり、
$EXEMONE_HOME未設定 - 実行: 同じパスで.bin実行 → 1番 → EXEM_HOME Enter → Patch it? Enter → 既存値維持Enter
- 期待ログ:
Existing installation found. Running patch...
Existing version:
agent : x.x.x
package : x.x.x
New version:
agent : x.x.x
package : x.x.x
...
Patch completed (agent not started)
xmSuccess(0): patch completed
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| 置換される項目 | ||
| Dockerイメージ | 新バージョンに置換される | ✅ |
| 既存イメージ | 削除される (イメージIDが異なる場合) | ✅ |
| start.sh, stop.sh | 新バージョンに置換される | ✅ |
| cfg/kafka.conf | 新バージョンに置換される | ✅ |
| cfg/cfg.reload | 新バージョンに置換される | ✅ |
| cfg/.env | RECEIVER_ADDR、VERSIONなど更新される | ✅ |
| lib/ | 新バージョンに置換される | ✅ |
| 維持される項目 | ||
| log/ | 既存維持 | ✅ |
| コンテナ自動終了有無 | 終了しない | ✅ |
| 整理 | ||
| exem-docker-installer-tmp/ | 残っていない | ✅ |
変形: コンテナ実行中の場合
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| コンテナ自動終了有無 | 終了しない | ✅ |
| 完了メッセージ | "Container is currently running with the old version"案内 + To apply出力 | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- バージョン出力詳細化:
Existing version: x.x.x→ agent/package分離出力 - 完了メッセージ:
OLD_VERSION/NEW_VERSION→OLD_AGENT_VERSION/OLD_PKG_VERSION/NEW_AGENT_VERSION/NEW_PKG_VERSION
5. Standaloneパッチ — Config mode
- 実行:
./docker-installer.bin config.env - config.env例:
INSTALL_DIR=/opt/exem
RECEIVER_IP=10.20.30.40
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| 対話形式入力なしでパッチ完了 | 確認 | ✅ |
| RECEIVER_IP未指定時 | 既存のcfg/.env値をそのまま維持 | ✅ |
| RECEIVER_IP指定時 | cfg/.envに新しい値が反映される | ✅ |
| 残りの動作 | 4番(Standaloneパッチ)と同一 | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- 4番(Standaloneパッチ Interactive)と同一
6. Legacy環境パッチ — Interactive
- 事前条件:
$EXEMONE_HOME=/opt/exemone、$EXEMONE_HOME/containers/exemone-kafka-agentディレクトリ存在 - 実行: .bin実行 → 1番 → Y選択 → Patch it? Enter → 既存値維持Enter
- 期待ログ:
exemone-package environment detected. (EXEMONE_HOME: /opt/exemone)
Install to exemone-package environment? [Y/n]: Y
KAFKA_HOME: /opt/exemone/containers/exemone-kafka-agent
Existing installation found. Running patch...
...
Image tagged for legacy environment: maxgauge/exemone-kafka-agent:{VERSION}
...
Patch completed (agent not started)
To apply: cd $EXEMONE_HOME && ./scripts/restart.sh kafka-agent
xmSuccess(0): patch completed
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| KAFKA_HOME | $EXEMONE_HOME/containers/exemone-kafka-agent固定 | ✅ |
| 既存設定読み込み | kafka.confのRECEIVER_ADDRから読み込む | ✅ |
| イメージタグ | v prefixなしのタグでre-taggingされる | ✅ |
| $EXEMONE_HOME/.env更新 | KAFKA_AGENT_VERSION、KAFKA_AGENT_IMAGEが更新される | ✅ |
| kafka.conf | 上書きしない (既存設定保存) | ✅ |
| cfg.reload | 新バージョンに置換される | ✅ |
| cfg/log所有権 | $EXEMONE_HOME/.envのUID/GID基準でchown (なければ1200:1200) | ✅ |
| 再起動案内 | ./scripts/restart.sh kafka-agent案内出力 | ✅ |
7. Legacy環境パッチ — Config mode
- 事前条件:
$EXEMONE_HOME設定済み、containers/exemone-kafka-agent存在 - 実行:
./docker-installer.bin config.env(config.envに値がない、または一部のみ指定)
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| 対話形式入力なしでパッチ完了 | 確認 | ✅ |
| RECEIVER_IP未指定時 | kafka.confの既存値維持 | ✅ |
| RECEIVER_IP指定時 | cfg/.envに新しい値が反映される | ✅ |
| 残りの動作 | 6番(Legacyパッチ)と同一 | ✅ |
8. Legacy環境検知 → 拒否(n選択) → 新規インストール
- 事前条件:
$EXEMONE_HOME設定済み、新規インストール対象パスがない - 実行: .bin実行 → 1番 → n選択 → EXEM_HOME入力 → 新規インストール進行
- 期待ログ:
exemone-package environment detected. (EXEMONE_HOME: /opt/exemone)
Install to exemone-package environment? [Y/n]: n
Enter EXEM_HOME [/home/admin/exem]: ...
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| Legacy環境を無視してstandalone新規インストール進行 | 確認 | ✅ |
| 残りの動作 | 2番(新規インストール)と同一 | ✅ |
9. Legacy環境検知 → 拒否(n選択) → Standaloneパッチ
- 事前条件:
$EXEMONE_HOME設定済み、別途standaloneインストールも存在 - 実行: .bin実行 → 1番 → n選択 → EXEM_HOMEに既存standaloneパスを入力
- 期待ログ:
exemone-package environment detected. (EXEMONE_HOME: /opt/exemone)
Install to exemone-package environment? [Y/n]: n
Enter EXEM_HOME [/home/admin/exem]: /data/exem
Existing installation found at /data/exem/kafka. Patch it? [Y]: ...
| 確認項目 | 期待動作 | 確認必要 |
|---|---|---|
| Legacy環境を無視してstandaloneパッチ進行 | 確認 | ✅ |
| 残りの動作 | 4番(Standaloneパッチ)と同一 | ✅ |
10. エラーケース
| 状況 | 期待出力 | 確認必要 |
|---|---|---|
| Docker未インストール | xmError(501): Docker is not installed. Please install Docker first. | ✅ |
| Dockerデーモン未起動 | xmError(502): Docker daemon is not running. Please start Docker first. | ✅ |
| パッケージ破損 (バージョン情報なし) | xmError(503): version information not found in package | ✅ |
| イメージファイルなし | xmError(504): Docker image file not found: ... | ✅ |
| イメージロード失敗 | xmError(504): Docker image load failed | ✅ |
| Config mode — RECEIVER_IP未指定 | xmError(505): RECEIVER_IP is required in config file | ✅ |
| Config mode — RECEIVER_IP形式エラー | xmError(505): Invalid RECEIVER_IP format (e.g., 127.0.0.1 or receiver) | ✅ |
| Config mode — RECEIVER_PORT範囲エラー | xmError(505): Invalid RECEIVER_PORT (must be 1-65535) | ✅ |
| インストールディレクトリ生成失敗 | xmError(505): failed to create install directory ... | ✅ |
| ファイルコピー失敗 | xmError(505): failed to copy files to ... | ✅ |
| パッケージ抽出失敗 (tar破損) | xmError(506): unpack failed | ✅ |
| メニューの誤った入力 | xmError(500): invalid option selected | ✅ |
| 3番(exit)選択 | xmError(509): exit requested by user | ✅ |
| コンテナ削除失敗 (start.sh) | xmError(103) | ✅ |
| コンテナ生成失敗 (start.sh) | xmError(106) | ✅ |
| コンテナ停止失敗 (stop.sh) | xmError(200) | ✅ |
備考
⚠️ v3.0.23.3-2対比変更
- xmError(502)新規: Dockerデーモン未起動エラー (以前はこのチェックがなかった)
- xmError(506)新規: unpack失敗エラーコード変更 (以前はxmError(502)だった)
- xmError(505) RECEIVER_IP形式エラーメッセージ変更: hostnameも許可するよう案内文を修正