我正在建立一個 Vagrant Windows 10 盒子(使用 libvirt,基於此處記錄的工作流程:https://fishilico.github.io/generic-config/windows/vagrant.html)。虛擬機器準備就緒後,我運行:
vagrant package default --output win10-libvirt.box
然後我將“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