Я пытаюсь настроить vagrantbox с Hyper-V на моем локальном компьютере с Windows-10. Моя рабочая станция работает за прокси-сервером, но я настроил локальный прокси-сервер cntlm, чтобы обойти эти ограничения. Настройки прокси работают нормально, так как я смог установить бродячий плагин и скачать образ коробки.

Но теперь мой гостевой Linux не запускается, и у меня заканчиваются идеи.

Мой бродячий файл

Vagrant.configure("2") do |config|

    config.vm.box = "bento/ubuntu-18.04" # ubuntu 18.04 image with support for virtual box and Hyper-V
    config.vm.hostname = "skywalker"

    config.vm.provider "virtualbox" do |vb|
        vb.memory = "2048"
    end

    config.vm.provider "hyperv" do |hv|
        hv.memory = "2048"
    end

    config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'" # prevent tty errors

    # install the vagrant plugin "vagrant-cachier" to cache downloaded artifacts
    if Vagrant.has_plugin?("vagrant-cachier")
        config.cache.scope = :box
    end

    # vagrant behing local cntlm proxy if plugin exists (= provinzial win10 workstation)
    if !Vagrant.has_plugin?("vagrant-proxyconf")
        config.proxy.http     = "http://localhost:3128/"
        config.proxy.https    = "http://localhost:3128/"
        config.proxy.no_proxy = "localhost, 127.0.0.1"
    end

    # --------------------------------------------------------------------------

    # provision virtual mashine (basic setup) and install applications in VM
    #config.vm.provision "shell", path: "scripts/install-ansible.sh"
    config.vm.provision "shell", path: "scripts/install-ncdu.sh"
    config.vm.provision "shell", path: "scripts/install-git.sh"
    config.vm.provision "shell", path: "scripts/install-openjdk-11.sh"
    config.vm.provision "shell", path: "scripts/install-maven.sh"
    config.vm.provision "shell", path: "scripts/install-node-npm.sh"
    config.vm.provision "shell", path: "scripts/install-docker.sh"
    config.vm.provision "shell", path: "scripts/install-docker-compose.sh"

    # npm webserver
    config.vm.provision "shell", path: "apps/install-npm-apps.sh"
    config.vm.network "forwarded_port", guest: 8000, host: 8000

    # artifactory setup (start artifactory after vm startup)
    config.vm.network "forwarded_port", guest: 8081, host: 8081 # artifactory from docker
    config.vm.network "forwarded_port", guest: 8082, host: 8082 # artifactory from docker
    # See README.md for Artifactory in Docker

end

Запуск коробки с этими настройками приводит к

C:\home\work\workspace\vagrant-boxes\skywalker (master -> origin)
λ vagrant up
Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
==> default: Verifying Hyper-V is accessible...
==> default: Importing a Hyper-V instance
    default: Creating and registering the VM...
    default: Successfully imported VM
    default: Configuring the VM...
==> default: Starting the machine...
==> default: Waiting for the machine to report its IP address...
    default: Timeout: 120 seconds
    default: IP: fe80::215:5dff:fe02:8b01
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: fe80::215:5dff:fe02:8b01:22
    default: SSH username: vagrant
    default: SSH auth method: private key
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

На другой машине с VirtualBox в качестве поставщика виртуальных машин этот Vagrantfile работает нормально. К сожалению, я не могу использовать какой-либо поставщик виртуальных машин, кроме Hyper-V, на моей машине Windows из-за ограничений, которые я не могу контролировать ...

Я настроил Hyper-V с помощью Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All.

Любые идеи? Заранее спасибо и с наилучшими пожеланиями. Себастьян

0
Sebastian Sommerfeld 30 Мар 2020 в 18:17
Голосование за закрытие: речь идет о профессиональном администрировании серверной или сетевой инфраструктуры. Автор сообщения может получить помощь по сбою сервера.
 – 
TomTom
30 Мар 2020 в 20:10
Извините, я этого не знал... переместил мой вопрос в Sever Fault: serverfault.com/questions/1010195/…
 – 
Sebastian Sommerfeld
31 Мар 2020 в 10:24

1 ответ

Я прошел это упражнение на прошлой неделе и увидел аналогичные проблемы. Я добился большого прогресса, следуя этим шагам, и виртуальные машины запускаются в разумные сроки под Windows 10 Hyper-V. Это то, что я сделал.

Следил за этим блогом и сначала попытался успешно создать виртуальную машину. https://win32.io/posts/Vagrant-Install-HyperV

Затем я создал простой бродячий файл и заставил его успешно работать. Вот мой,

Vagrant.configure("2") do |config|
 config.vm.box = "hashicorp/bionic64"
 config.vm.hostname = 'utility-server-1'
 config.vm.network 'public_network', bridge: 'Internet'
 config.vm.synced_folder ".", "/vagrant", disabled: true
 config.vm.provider "hyperv" do |vb|
   vb.memory = "4024"
   vb.cpus = 2  
   vb.vmname = 'utility-server-1'
 end
end

Как только это сработает, добавьте более сложные шаги из вашего vagrantfile, такие как сценарии оболочки и перенаправленные порты.

0
blackrain 30 Мар 2020 в 20:08