我正在构建一个 Vagrant Windows 10 盒子(使用 libvirt,基于此处记录的工作流程:https://fishilico.github.io/generic-config/windows/vagrant.html)。虚拟机准备就绪后,我运行:
vagrant package default --output win10-libvirt.box
然后我将“盒子”文件带到另一台机器并使用导入它vagrant add
。
问题是,作为设置的一部分,我向用户~/.ssh/authorized_keys
文件添加了一个密钥,但当我在第二台机器上启动新机器时,该文件就消失了。我还尝试向 Microsoft Windows OpenSSH 端口支持的“管理员密钥”文件添加一个密钥,C:\ProgramData\ssh\administrators_authorized_keys
但当我启动新机器时,该文件也消失了,实际上整个C:\ProgramData\ssh
文件夹都消失了。
是否vagrant package
清理机器配置文件夹?如果是,是否可以以某种方式禁用它?我找不到有关此内容的文档。
答案1
我在配置脚本末尾添加了对 Sysprep 的调用,然后关闭后,问题就解决了。我不确定 Sysprep 是必需的还是关闭 - libvirt 关闭过程应该足够安全,通过观察 libvirt 查看器,我可以看到虚拟机执行了 Windows 关闭过程。
我在我的中使用了这个命令Vagrantfile
:
Vagrant.configure("2") do |config|
# ...
config.vm.provision "shell", inline: <<-'SCRIPT'
& ./run-some-provisioning.ps1
& C:/Windows/System32/sysprep/sysprep.exe /generalize /mode:vm /shutdown
SCRIPT
# ...
end