Я собираю 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
, но когда я запускаю новый ящик на второй машине - этот файл исчезает. Я также пытался добавить ключ в файл "administrators' keys", поддерживаемый в Microsoft Windows OpenSSH port at 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