Pytanie Uruchamianie Vagrant Inside VMWare VM


Zdaję sobie sprawę, że jest to zasadniczo OSCeption (uruchomienie systemu operacyjnego), ale myślę, że może to dla mnie najbardziej sensowne (proszę mi powiedzieć, czy jest lepsza opcja, to wydaje się naprawdę okropne).

Oto sytuacja: Mam maszynę Windows 8. Podoba mi się - działa świetnie na wszystko oprócz rozwoju. Do rozwoju używam wirtualnej maszyny VMWare z systemem Ubuntu. Spróbowałem używać Cygwina, ale po prostu nie czułem się dobrze.

Teraz dołączam do projektu, w którym używali Vagrant do zarządzania środowiskami programistycznymi, więc muszę mieć możliwość korzystania z Vagrant. Ale z tego, co widziałem, Vagrant jest używany głównie do uruchamiania kodu w spójnym środowisku, ale niekoniecznie do jego napisania. A jeśli chciałem napisać kod SSH'ing do moich vagrantowych pudełek, to musiałbym ponownie skonfigurować moje preferencje, takie jak mój plik .vimrc i co nie dla każdej maszyny.

Czy sensowne jest zainstalowanie Vagrant w mojej wirtualnej maszynie Ubuntu VirtualMachine? Czuję, że w pewnym momencie maszyny wirtualne w maszynach wirtualnych wymkną się spod kontroli i spowodują problemy. Czy istnieje lepszy sposób to zrobić?

Edytować: Więc wypróbowałem to - jak się spodziewałem, trafiłem kilka błędów. Kiedy próbuję uruchomić komputer, pojawia się następujący komunikat o błędzie:

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}

Wygląda na to, że moja wirtualna maszyna vmware nie może uruchomić innej maszyny wirtualnej. Jakieś pomysły na najlepszy sposób zrobienia tego?


42
2018-06-18 17:56


pochodzenie


Wygląda na to, że próbujesz uruchomić hiperwizor typu 2 osadzonego. Po pierwsze, nie wszystkie hiperwizory obsługują uruchamianie innego hiperwizora (tego samego lub innego) w nim. Po drugie, czy faktycznie włączyłeś opcję w Ustawieniach maszyny wirtualnej - CPU - Visualize Intel VT-x or AMD-V? - Terry Wang
BTW: VirtualBox wewnątrz VirtualBox jest możliwy, o ile włączysz akcelerację VT-x / AMD-V. - Terry Wang
Mogę potwierdzić komentarz Terry'ego - w moim poprzednim miejscu prowadziliśmy maszyny wirtualne Vagrant w maszynach wirtualnych vSphere, aby budować i testować nowe obrazy rdzeni Vagrantów :) - Matthew Skelton
@MatthewSkelton Czy wypróbowałeś VirtualBox w VMWare Fusion VM? Czy są jakieś gotcha? Trochę czasu próbuję skonfigurować hosta CentOS działającego w VMWare, aby szybko uruchomić Vagrant / VirtualBox, umieszczając go na liście mailingowej tutaj: groups.google.com/d/msg/vagrant-up/6YHdRupCKuI/2h2B4encffQJ - blong
To samo pytanie @TerryWang - blong


Odpowiedzi:


Dziś wpadłem na ten sam problem. Rozwiązanie jest dość proste.

  1. Wyłącz maszynę wirtualną vmware vitrual.
  2. Idź do "edytuj ustawienia maszyny wirtualnej"
  3. Idź do procesorów. Są tam trzy pola wyboru.
  4. Zaznacz drugie pole wyboru (włącz VT-x / AMD-V)
  5. Włącz urządzenie.

Po tym wirtualna skrzynka powinna działać wewnątrz vmware.


50
2018-04-08 08:45



@ b.long: Nie, w rzeczywistości nie brzmi to niegrzecznie. Mam nadzieję, że moje rozwiązanie Ci pomoże :) - Andrew Orsich
Rzeczywiście tak, dziękuję! - blong
Czy miałeś jakieś problemy z tym, że CentOS został zainstalowany na VMWare VM i używając VirtualBox w CentOS? Moja wewnętrzna maszyna wirtualna działa wolno, bez względu na to, co robię. Nie oczekuję tego, ponieważ dałem CentOS VM 7140MB pamięci i 2 rdzenie z mojego 2.7GHz Core i7. Kiedy próbuję uruchomić moją wewnętrzną maszynę wirtualną (z lub bez Vagranta), działają one powoli i nie wydają się przydzielać dużej ilości pamięci. Podczas uruchamiania maszyny wirtualnej widzę nieco spike z procesorem 1 i 2, a następnie zrzucam, ale zużycie pamięci nigdy nie przekracza 1 GB. Podczas próby uruchomienia maszyny wirtualnej limit czasu wynosi: gist.github.com/b-long/3ef3a726f9f4d28f4d59 - blong
Umieściłem swój numer na liście mailingowej Vagrant: groups.google.com/forum/#!topic/vagrant-up/6YHdRupCKuI - blong
Tylko uwaga dla każdego, kto ma darmową wersję ESXi. Nie jest to możliwe, chyba że uaktualnisz sprzęt maszyny wirtualnej do wersji v9 + .. i gdy to nastąpi, nie możesz edytować szczegółów VM z klienta vSphere. - Erik


Aby odpowiedzieć na oryginalne pytanie, a także na post na forum Vagrant @ blonga, właśnie to zrobiłem, aby to zadziałało.

Próbowałem zrobić coś podobnego samemu (właściwie Vagrant / VMware hosting Vagrant / Vbox) i wykonałem wszystkie optymalizacje, jakie mogę wymyślić, dając mojej maszynie wirtualnej "hosta" dużą ilość pamięci RAM (24 GB) i 6 rdzeni, wyłączając zamianę Maszyny wirtualne na dysk (to KILLS rzeczy w systemie Windows, gdy się to dzieje), ustawiając "Dopasuj wszystkie pamięci maszyn wirtualnych do zarezerwowanej pamięci hosta" i zezwalając na pliki stron VM (w przeciwnym razie żyją w pliku stron systemowych, co ogranicza liczbę maszyn wirtualnych, które można uruchomić w pewnego razu).

To, co robię, działa doskonale, problemy z siecią, które miałem, wynikały z korporacyjnego proxy, z którym jestem związany. Kiedy już skonfigurowałem, że moja maszyna wirtualna ma dostęp do Internetu i wszystko było w porządku ze światem.

Musiałem ręcznie ustawić --natbindip1 i --natnet1 przez Vagrantfile oprócz natdnsproxy1 i naddnshostresolver1, które zostały już ustawione w moim przykładzie (Virtualbox) Vagrantfile. Te ustawienia można znaleźć w dokumentacji Virtualbox do prawidłowego użycia.

Podsumowując, użyj opcji przekazywania VT-x / "wirtualizacji" w ustawieniach procesora VM, daj VM odpowiednią pamięć, nie pozwól, aby pamięć została zamieniona na hoście "root" i spróbuj się upewnić zakresy twoich sieci się nie pokrywają lub będziesz mieć problemy z routingiem.

Oto Vagrantfile, z którego pracowałem, opiera się prawie wyłącznie na aspekcie andreptb dla nowoczesnej konfiguracji vagrant. 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

Moje dodatkowe zmiany:

# 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"]

Usuń znaki + i dodaj te linie do pliku Vagrantfile powyżej i powinieneś mieć równoważny działający system do tego, z czego korzystałem.


4
2018-06-17 15:51



Musiałem dodać v.customize ["modifyvm",: id, "- cpus", "2"] v.customize ["modifyvm",: id, "--hwvirtex", "on"]. @ dragon788 Jak ustawić adres IP? - v0d1ch
@vodich zrobiłem tak bardzo, jak inne parametry. ["modifyvm",: id, "--natbindip1", "true"]. Sprawdzę podwójnie składnię, ale w zasadzie zajmuje ona komendę modyfikacji, identyfikator VM, parametr do zmiany oraz wartość do ustawienia. - dragon788
Dzięki, myślę, że zamierzam poprosić o kwerendę w nowym wątku o konfiguracji innej niż to, o czym tutaj mówiliśmy, ponieważ spędziłem 6 godzin próbując to zrozumieć bez powodzenia :( - v0d1ch
Czy możesz wkleić inne ustawienia ze swojego pliku vagrant, więc spróbuję z tym? - v0d1ch


Jeśli używasz virualbox w VM w vsphere, musisz ssh do ESXi, aby zaktualizować konfigurację.

Kroki:

  1. ssh na serwerze ESXi.
  2. znajdź plik vmx należący do twojej maszyny wirtualnej find / -name *.vmx
  3. wyłączanie maszyny wirtualnej (bardzo ważne, lub twoja zmiana zostanie nadpisana)
  4. edytuj plik vmx, dołącz nową konfigurację u dołu pliku: vhv.enable = "TRUE"
  5. włączaj swoją maszynę wirtualną
  6. cieszyć się włóczęgą. :)

1
2017-12-11 05:17





Próbowałem tego w dwóch produktach VMware. Kliknij maszynę wirtualną prawym przyciskiem myszy:

  • W vCloud Director 5.5 Właściwości VM w zakładce Hardware jest pole wyboru "Uwolnij sprzętową wirtualizację procesora do systemu-gościa", ale jest dla mnie szare. YMMV.
  • W vSphere Version 5.5.0 Edytuj ustawienia> Sprzęt wirtualny> Procesor ten pole wyboru nosi nazwę "Wyświetl wirtualizację wspomaganą sprzętowo dla systemu-gościa" i to działało dla mnie.

1
2017-11-04 21:35