我配置了打包机将各种 Debian 衍生发行版的无人值守 ISO 安装构建到 VMware Fusion。当我手动配置虚拟机以进行 ssh 访问时,它会超时并且创建的构建工件会被删除。
您如何预先安装 ssh 访问作为 OS 安装映像的一部分,类似于对云服务 VM 实例所做的操作?我将尝试通过 kickstart 或 Debian preseed late-command 将其配置到重新制作的 ISO 映像中以解决我的问题,但我有兴趣了解其他更灵活的方法。所有这些的目标是创建一个开发基础架构,该基础架构可以以自动化方式轻松启动和关闭,可用于在本地模拟云环境。
答案1
您可以在 ISO 上预安装 Userify 代理。这将使您的 SSH 密钥随时间更新,并允许您远程创建用户(sudo 权限等)。它只需要出站 HTTPS,因此它应该可以轻松地从 VM 运行,除非您关闭了出站网络访问。
答案2
您可以在盒子上安装 git 和 puppet 代理,并设置 rc.local 来运行 git pull && puppet apply。
您将需要可通过 http(s) 访问的 git repo,您也可以将其托管在您的环境中(例如笔记本电脑),以及一个带有用户/密钥定义的 puppet 清单,这非常容易编写。
如果您更新 repo 中的密钥定义,git pull 将更新本地克隆,而 puppet 将从那里提取数据。Puppet 是幂等的,因此如果创建了所有用户并且所有 ssh 密钥与本地 git 克隆中的密钥相同,则连续运行不会改变系统,并且每次运行前的 git pull 将确保本地 repo 克隆与上游同步。
您可能还可以使用其他 cfg mgmt 工具。
答案3
在提出这个问题后不久,我最终通过 Debian 按下 late-command 配置静态 ssh-key 解决了我的问题。这绝不是一个明确的解决方案(因为 ssh-keys 不是动态生成的),但对于正在进行中的本地开发基础设施来说,这就足够了。如果您遇到这种情况,我也会认为发布的其他答案也是同样有效的解决方案。