Подтвердить что ты не робот

Запуск Vagrant внутри VMWare VM

Я понимаю, что это по существу OSCeption (начало операционной системы), но я думаю, что это может иметь для меня наибольший смысл (скажите, пожалуйста, лучший вариант, это кажется очень ужасным).

Здесь ситуация: У меня машина окон 8. Мне это нравится - он отлично работает для всего, кроме развития. Для разработки я использовал виртуальную машину VMWare под управлением Ubuntu. Я пробовал использовать Cygwin, но он просто не чувствовал себя хорошо.

Теперь я присоединяюсь к проекту, в котором они использовали Vagrant для управления средами разработки, поэтому мне нужно иметь возможность использовать Vagrant. Но, из того, что я видел, Vagrant в основном используется для запуска кода в согласованной среде, но не обязательно для его написания. И если бы я хотел написать код SSH'ing в мои бродячие боксы, мне пришлось бы повторно настроить мои настройки, такие как мой .vimrc файл и что не для каждой машины.

Есть ли смысл установить Vagrant в моей виртуальной машине Ubuntu? Я чувствую, что в какой-то момент виртуальные машины внутри виртуальных машин выйдут из-под контроля и вызовут проблемы. Есть ли лучший способ сделать это?

Изменить: Итак, я попробовал - как я и ожидал, я ударил некоторые ошибки. Когда я пытаюсь загрузить машину, я получаю следующее сообщение об ошибке:

Failed to open a session for the virtual machine vagranttest_1371583212.

VT-x is not available. (VERR_VMX_NO_VMX).

Result Code: NS_ERROR_FAILURE (0x80004005)
Component: Console
Interface: IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}

Похоже, моя виртуальная машина vmware не может запускать другую виртуальную машину. Любые идеи о том, как лучше всего это сделать?

4b9b3361

Ответ 1

Сегодня я столкнулся с той же проблемой. Решение довольно просто.

  • Выключить vmware vitrual machine.
  • Перейдите к "редактированию настроек виртуальной машины"
  • Перейдите к процессорам. Есть три флажка.
  • Установите второй флажок (включите VT-x/AMD-V)
  • Включить питание.

После этого виртуальный бокс должен работать внутри vmware.

Ответ 2

Чтобы ответить на исходный вопрос, а также на форум @blong Vagrant forum, это то, что я сделал, чтобы сделать эту работу.

Я пытался сделать что-то подобное себе (на самом деле Vagrant/VMware, где размещен Vagrant/Vbox), и я выполнил все оптимизационные решения, которые я могу себе представить, предоставляя моей "хост-виртуальной" большой объем оперативной памяти (24 ГБ) и 6 ядер, отключив замену виртуальных машин на диск (это относится к событиям KILLS в Windows, когда это происходит), установив "Вставить всю память VM в зарезервированную память хоста" и разрешив файлы страниц VM (в противном случае они будут отображаться в файле системной страницы, который ограничивает количество виртуальных машин может запускаться сразу).

То, что я делаю, работает отлично, проблемы с сетью, которые у меня были, связаны с корпоративным прокси-сервером, с которым я позади. Как только я сконфигурировал, что моя виртуальная машина получила доступ в Интернет, и все было правильно с миром.

Мне пришлось вручную установить --natbindip1 и --natnet1 через Vagrantfile в дополнение к natdnsproxy1 и naddnshostresolver1, которые уже были установлены в моем примере (Virtualbox) Vagrantfile. Эти настройки можно найти в документации по Virtualbox для правильного использования.

Подводя итог, используйте опцию V-x passthrough/ "virtualize" в настройках вашего VM-процессора, предоставите виртуальной памяти VM, не позволяйте ее заменять на "корневой" хост-машине и пытаться чтобы ваши сетевые диапазоны не перекрывались или у вас возникли проблемы с маршрутизацией.

Вот Vagrantfile, над которым я работал, он почти полностью основан на andreptb gist для modern.ie бродячих настроек. https://gist.github.com/andreptb/57e388df5e881937e62a

# -*- mode: ruby -*-
# vi: set ft=ruby :

# box name into env var, same script can be used with different boxes. Defaults to win7-ie11.
box_name = box_name = ENV['box_name'] != nil ? ENV['box_name'].strip : 'win7-ie11'
# box repo into env var, so private repos/cache can be used. Defaults to http://aka.ms
box_repo = ENV['box_repo'] != nil ? ENV['box_repo'].strip : 'http://aka.ms'

Vagrant.configure("2") do |config|
  # If the box is win7-ie11, the convention for the box name is modern.ie/win7-ie11
  config.vm.box = "modern.ie/" + box_name
  # If the box is win7-ie11, the convention for the box url is http://aka.ms/vagrant-win7-ie11
  config.vm.box_url = box_repo + "/vagrant-" + box_name
  # big timeout since windows boot is very slow
  config.vm.boot_timeout = 500

  # rdp forward
  config.vm.network "forwarded_port", guest: 3389, host: 3389, id: "rdp", auto_correct: true

  # winrm config, uses modern.ie default user/password. If other credentials are used must be changed here
  config.vm.communicator = "winrm"
  config.winrm.username = "IEUser"
  config.winrm.password = "Passw0rd!"

  config.vm.provider "virtualbox" do |vb|
    # first setup requires gui to be enabled so scripts can be executed in virtualbox guest screen
    #vb.gui = true
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--vram", "128"]
    vb.customize ["modifyvm", :id,  "--cpus", "2"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
  end
end

Мои дополнительные изменения:

# Need the WinRM gem for managing from Linux
$ sudo gem install winrm

    config.vm.communicator = "winrm"
+  config.winrm.host = "localhost"
    config.winrm.username = "IEUser"
    config.winrm.password = "Passw0rd!"
# This one may not be necessary, I added it for completeness
+  config.vm.guest = :windows

# In order to USE the two CPUs you need the ioapic
# Virtualbox gives an error in the GUI and only shows 1 CPU in the VM otherwise
      vb.customize ["modifyvm", :id, "--cpus", "2"]
+    vb.customize ["modifyvm", :id, "--ioapic", "on"]
# We had to modify the network range because we are running Virtualbox inside VMware
+    vb.customize ["modifyvm", :id, "--natnet1", "192.168.199.0/24"]

Удалите знаки + и добавьте эти строки в Vagrantfile выше, и вы должны иметь эквивалентную рабочую систему для того, что я использовал.

Ответ 3

Если вы запускаете virualbox в виртуальной машине в vsphere, вам нужно ssh для ESXi обновить конфигурацию.

Шаги:

  • ssh для сервера ESXi.
  • найдите файл vmx, принадлежащий вашей виртуальной машине find / -name *.vmx
  • отключите вашу виртуальную машину (очень важно, или ваши изменения будут перезаписаны).
  • отредактируйте это vmx, добавьте новую конфигурацию в нижней части файла: vhv.enable = "TRUE"
  • питание вашей виртуальной машины
  • наслаждайтесь бродягой.:)

Ответ 4

Я пробовал это в двух продуктах VMware. Щелкните правой кнопкой мыши виртуальную машину:

  • В свойствах VMware vCloud Director 5.5 на вкладке "Оборудование" установлен флажок "Экспозиция аппаратной поддержки виртуализации процессоров к гостевой ОС", но для меня это недоступно. YMMV.
  • В vSphere Version 5.5.0 "Редактирование настроек" > "Виртуальное оборудование" > "ЦП" этот флажок называется "Expose аппаратная поддержка виртуализации гостевой ОС", и это сработало для меня.