feat(chv-guest): seed 附加项供客机用户与静态网络(wake 路径前置)
wake_vm 在 WSL 台架上跑通需要客机身份与网络:镜像本身不建 用户、tap 无 DHCP,缺 users 块的 VM 登不进去、缺 network-config 的 VM 拿不到静态 IP。最小补法(复用 write_seed 机制): - hostkeys.write_seed 新增 user_data_extra(原样追加进 user-data,供 users: 块)与 network_config(写 seed network-config 文件,0600);附加项含 runcmd: 即 ValueError - config _seed_fragment:CHV_SEED_USER_DATA_EXTRA_FILE / CHV_SEED_NETWORK_CONFIG_FILE(只存路径) - executor._seed_extras 在 wake 起 VMM 前读入,缺失即 ChvFailure seed_extra_missing;provision_host_key 透传 - README §7 残留更新:guest-env 集成已做 - 测试:test_chv_gitea_sync 新增 5 项(写盘/禁 runcmd/ 配置映射/wake 带附加项/缺失 fail-closed)
This commit is contained in:
1 parent
e7f699c62b
commit
d7cc482ed5
5 files changed
+184
-11
No files matched your search
@@ -259,6 +259,23 @@ def _gitea_fragment(env: dict) -> dict:
|
||||
return {"gitea_sync_env": config_gitea_sync_env(env)}
|
||||
|
||||
|
||||
def _seed_fragment(params: dict, env: dict) -> dict:
|
||||
"""seed 附加项片段:只存宿主文件路径,不读文件内容
|
||||
(读文件在 wake 时 fail-closed,见执行器 _seed_extras;
|
||||
构造时不读,免得路径配错时连执行器对象都建不出来)。
|
||||
CHV_SEED_USER_DATA_EXTRA_FILE 指向含 `users:` 块的文件,
|
||||
CHV_SEED_NETWORK_CONFIG_FILE 指向 NoCloud network-config
|
||||
文件;皆空即不附加(行为与旧 seed 一致)。"""
|
||||
return {
|
||||
"seed_user_data_extra_file":
|
||||
params.get("seed_user_data_extra_file")
|
||||
or env.get("CHV_SEED_USER_DATA_EXTRA_FILE"),
|
||||
"seed_network_config_file":
|
||||
params.get("seed_network_config_file")
|
||||
or env.get("CHV_SEED_NETWORK_CONFIG_FILE"),
|
||||
}
|
||||
|
||||
|
||||
def _assemble_chv_config(fragments: list) -> "ChvConfig":
|
||||
"""把各片段 dict 合并成 ChvConfig(纯合并,不改值)。
|
||||
|
||||
@@ -292,4 +309,5 @@ def build_chv_config(params: dict, env: dict) -> "ChvConfig":
|
||||
_network_fragment(params, env),
|
||||
_timeout_fragment(params, env),
|
||||
_gitea_fragment(env),
|
||||
_seed_fragment(params, env),
|
||||
])
|
||||
Reference in new issue
Block a user