概要
devbase env init の対話セットアップで、ホスト(mac/Linux/WSL)のログインユーザー名を HOST_SSH_USER として .env に自動設定したい。
これにより、コンテナからホストへ SSH してホスト側 GUI アプリ(例: Chrome をリモートデバッグモードで起動)を起動するワークフローを、追加設定なしで利用できるようにする。
背景・動機
ai-plugins の ndf:playwright-browser-connect skill に、コンテナから SSH 経由でホストの Chrome (CDP) を起動するスクリプト scripts/start-host-chrome.sh を追加した。
このスクリプトはホストへ SSH するために ホストのログインユーザー名 を必要とし、現状は実行時に HOST_SSH_USER=<ユーザー名> を手動指定している。
# 現状: 毎回手で渡す必要がある
HOST_SSH_USER=$(whoami) ./scripts/start-host-chrome.sh
devbase env init は ホスト上で実行される CLI であり、ホストのユーザー名を確実に取得できる立場にある。
ここで HOST_SSH_USER を .env に書き出してコンテナへ引き継げば、利用側スクリプトは環境変数を手で渡す必要がなくなる。
参照(利用側): ai-plugins plugins/ndf/skills/playwright-browser-connect/(start-host-chrome.sh / SKILL.md「コンテナからホスト Chrome を起動する (SSH 経由)」)
提案する実装
既存のコレクタ機構(lib/devbase/env/collectors/)に倣い、ホスト接続情報用のコレクタを追加する。
-
キー定義 (lib/devbase/env/keys.py)
HOST_SSH_USER = "HOST_SSH_USER"
HOST_SSH_HOST = "HOST_SSH_HOST" # 任意。default: host.docker.internal
-
コレクタ追加 (lib/devbase/env/collectors/host.py)
display_name: 例「ホスト接続情報 (SSH)」
collect_fn:
HOST_SSH_USER の既定値を getpass.getuser()(または $USER / whoami)で自動取得し、safe_input で確認・上書き可能にする
HOST_SSH_HOST は任意。既定 host.docker.internal
- 既存の
git.py コレクタと同じ Collector インターフェースで collect_<name>(env_file) を実装
import getpass
from devbase.env import keys
from devbase.env.store import EnvFile, safe_input
from devbase.env.collector import Collector
def collect_host_info(env_file: EnvFile) -> None:
default_user = getpass.getuser()
user = safe_input(f"ホストのログインユーザー名 [{default_user}]: ", default_user)
env_file.set(keys.HOST_SSH_USER, user)
collector = Collector(
name="host",
display_name="ホスト接続情報 (SSH)",
collect_fn=collect_host_info,
)
-
devbase env sync でも再取得できると望ましい(任意)。
受け入れ条件
補足
- セキュリティ上、
HOST_SSH_USER はユーザー名のみで秘密情報ではない。SSH 鍵やリモートログイン有効化はホスト側でユーザーが別途設定する前提(ai-plugins 側スクリプトは鍵が無い場合に手動起動コマンドを案内するフォールバックを備えている)。
- WSL2/Windows の場合はホストユーザーと SSH 先が一致しないケースがあるため、
HOST_SSH_HOST の上書き余地を残しておくとよい。
概要
devbase env initの対話セットアップで、ホスト(mac/Linux/WSL)のログインユーザー名をHOST_SSH_USERとして.envに自動設定したい。これにより、コンテナからホストへ SSH してホスト側 GUI アプリ(例: Chrome をリモートデバッグモードで起動)を起動するワークフローを、追加設定なしで利用できるようにする。
背景・動機
ai-plugins の
ndf:playwright-browser-connectskill に、コンテナから SSH 経由でホストの Chrome (CDP) を起動するスクリプトscripts/start-host-chrome.shを追加した。このスクリプトはホストへ SSH するために ホストのログインユーザー名 を必要とし、現状は実行時に
HOST_SSH_USER=<ユーザー名>を手動指定している。devbase env initは ホスト上で実行される CLI であり、ホストのユーザー名を確実に取得できる立場にある。ここで
HOST_SSH_USERを.envに書き出してコンテナへ引き継げば、利用側スクリプトは環境変数を手で渡す必要がなくなる。提案する実装
既存のコレクタ機構(
lib/devbase/env/collectors/)に倣い、ホスト接続情報用のコレクタを追加する。キー定義 (
lib/devbase/env/keys.py)コレクタ追加 (
lib/devbase/env/collectors/host.py)display_name: 例「ホスト接続情報 (SSH)」collect_fn:HOST_SSH_USERの既定値をgetpass.getuser()(または$USER/whoami)で自動取得し、safe_inputで確認・上書き可能にするHOST_SSH_HOSTは任意。既定host.docker.internalgit.pyコレクタと同じCollectorインターフェースでcollect_<name>(env_file)を実装devbase env syncでも再取得できると望ましい(任意)。受け入れ条件
devbase env init実行時にHOST_SSH_USERの既定値(ホストのユーザー名)が提示され、確認・変更できる.envにHOST_SSH_USERが書き出され、コンテナ内の環境変数として参照できるgetpass.getuser())で設定される、もしくは安全にスキップされるdocs/user/environment-variables.md)にHOST_SSH_USER(必要ならHOST_SSH_HOST)を追記補足
HOST_SSH_USERはユーザー名のみで秘密情報ではない。SSH 鍵やリモートログイン有効化はホスト側でユーザーが別途設定する前提(ai-plugins 側スクリプトは鍵が無い場合に手動起動コマンドを案内するフォールバックを備えている)。HOST_SSH_HOSTの上書き余地を残しておくとよい。