2013-06-18 18 views
39

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

В ситуации: У меня есть машина для окон 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 виртуальная машина не может запустить другую виртуальную машину. Любые идеи о том, как лучше всего это сделать?

+0

Похоже, вы пытаетесь запустить встроенный гипервизор типа 2. Во-первых, не все гипервизоры поддерживают запуск другого гипервизора (такого же или diff) внутри него. Во-вторых, действительно ли вы включили опцию в настройках виртуальной машины - ЦП - «Визуализировать Intel VT-x или AMD-V»? –

+4

BTW: VirtualBox внутри VirtualBox возможен, если вы активируете ускорение VT-x/AMD-V. –

+0

Я могу подтвердить комментарий Терри - на моем предыдущем месте мы запустили Vagrant VM в виртуальных виртуальных машинах vSphere, чтобы построить и протестировать новые ящики с ядром Vagrant :) –

ответ

50

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

  1. Отключить vmware vitrual machine.
  2. Перейти к «Редактировать настройки виртуальной машины»
  3. Перейти к процессорам. Есть три флажка.
  4. Проверить второй флажок (включить VT-x/AMD-V)
  5. Power on machine.

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

+1

@ b.long: Нет, на самом деле это не звучало грубо. Я надеюсь, что мое решение поможет вам :) –

+0

Действительно, спасибо, спасибо! – blong

+0

Были ли у вас проблемы с CentOS, установленными на VMWare VM, и с помощью VirtualBox внутри CentOS? Моя внутренняя виртуальная машина работает медленно, независимо от того, что я делаю. Я не ожидаю этого, так как я дал CentOS VM 7140MB памяти и 2 ядра от 2,7 ГГц Core i7. Когда я пытаюсь запустить свою внутреннюю виртуальную машину (с или без бродяг), они работают медленно и, похоже, не выделяют много памяти. Когда виртуальная машина загружается, я немного вижу CPU 1 и 2, а затем, в конце концов, падает, но использование памяти никогда не превышает 1 ГБ. При попытке запустить виртуальную машину это происходит так: https://gist.github.com/b-long/3ef3a726f9f4d28f4d59 – blong

4

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

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

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

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

Чтобы подвести итог, используйте опцию «виртуализацию» VT-x в настройках вашего VM-процессора, предоставите виртуальной памяти VM, не разрешайте замену этой памяти на «корневой» хост-машине и попробуйте убедиться, что ваши сетевые диапазоны не перекрываются, или у вас возникнут проблемы с маршрутизацией.

Здесь находится Vagrantfile, из которого я работал, он основан почти полностью на основе andreptb для современной установки бродяг. 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 выше, и вы должны иметь эквивалентную рабочую систему к тому, что я использую.

+0

Мне пришлось добавить v.customize [" modifyvm ",: id , "--cpus", "2"] v.customize ["modifyvm",: id, "--hwvirtex", "on"]. @ dragon788 Как вы установили IP-адрес? – vodich

+0

@vodich Я сделал так же, как и другие параметры. ["modifyvm",: id, "--natbindip1", "true"]. Я дважды проверю синтаксис, но в основном он принимает команду изменения, идентификатор виртуальной машины, параметр изменения и значение для его установки. – dragon788

+0

Спасибо, я думаю, я собираюсь задать quetion в новой теме о конфигурации, отличной от того, что мы обсуждали здесь, так как я просто потратил 6 часов, пытаясь понять это без успеха :( – vodich

1

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

Шаги:

  1. SSH к серверу ESXi.
  2. найти файл VMX, которые принадлежат к ВМ find/-name *.vmx
  3. POWEROFF виртуальная машина (очень важно, или ваши изменения будут перезапись)
  4. редактировать что VMX, добавляемых новую конфигурацию в нижней части файла:. vhv.enable = "TRUE"
  5. мощность на вашей VM
  6. наслаждайтесь бродягой. :)
1

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

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