windows - vagrant virtualbox
Ejecutando Vagrant Inside VMWare VM (4)
Me doy cuenta de que esto es esencialmente OSCeption (sistema operativo Inception), pero creo que podría tener más sentido para mí (por favor, dígame si hay una mejor opción, esto parece realmente horrible)
Aquí está la situación: tengo una máquina con Windows 8. Me gusta - funciona muy bien para todo menos para el desarrollo. Para el desarrollo, he estado usando una máquina virtual VMWare que ejecuta Ubuntu. He incursionado con el uso de Cygwin, pero simplemente no se sentía bien.
Ahora me estoy uniendo a un proyecto en el que han estado usando Vagrant para administrar entornos de desarrollo, por lo que necesito poder usar Vagrant. Pero, por lo que he visto, Vagrant se utiliza principalmente para ejecutar código dentro de un entorno consistente, pero no necesariamente para escribirlo. Y si quisiera escribir código SSH''ing en mis cajas errantes, tendría que volver a configurar mis preferencias como mi archivo .vimrc y qué no para cada máquina.
¿Entonces tiene sentido instalar Vagrant dentro de mi Ubuntu VirtualMachine? Siento que en algún momento las máquinas virtuales dentro de las máquinas virtuales se saldrán de las manos y causarán problemas. ¿Hay alguna manera mejor de hacer esto?
Edit: Así que lo probé, como esperaba, cometí algunos errores. Cuando intento arrancar la máquina, aparece el siguiente mensaje de error:
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}
Parece que mi máquina virtual vmware no puede ejecutar otra máquina virtual. ¿Alguna idea sobre la mejor manera de hacer esto?
He intentado esto en dos productos VMware. Haga clic derecho en la máquina virtual:
- En las propiedades de VM de vCloud Director 5.5 en la pestaña Hardware, hay una casilla de verificación "Exponer la virtualización de CPU asistida por hardware al sistema operativo invitado", pero está desactivada para mí. YMMV.
- En vSphere Versión 5.5.0 Editar configuración> Hardware virtual> CPU, la casilla de verificación se llama "Exponer la virtualización asistida por hardware al sistema operativo invitado", y eso me funcionó.
Me he encontrado con el mismo problema hoy. La solución es bastante simple.
- Apague la máquina vmware vitrual.
- Ir a "editar configuración de la máquina virtual"
- Ir a los procesadores. Hay tres casillas de verificación allí.
- Marque la segunda casilla de verificación (habilitar VT-x / AMD-V)
- Encendido de la máquina.
Después de este virtualbox debería funcionar dentro de vmware.
Para responder a la pregunta original, así como a la publicación del foro Vagrant de @blong, esto es lo que he hecho para que esto funcione.
Intenté hacer algo similar a mí mismo (en realidad Vagrant / VMware hosting Vagrant / Vbox) y he realizado todas las optimizaciones que se me ocurren, dándole a mi VM "host" una gran cantidad de RAM (24GB) y 6 núcleos, deshabilitando el intercambio VM al disco (esto KILLS funciona en Windows cuando ocurre) al configurar "Ajustar toda la memoria de la VM en la memoria del host reservado", y permitir archivos de página de la VM (de lo contrario, viven en el archivo de la página del sistema que limita la cantidad de VM que puede ejecutar en una vez).
Lo que estoy haciendo ha funcionado perfectamente, los problemas de red que tuve se debieron al proxy corporativo que estoy detrás. Una vez que configuré que mi VM tenía acceso a Internet y todo estaba bien con el mundo.
Tuve que configurar manualmente --natbindip1 y --natnet1 a través del Vagrantfile además del natdnsproxy1 y naddnshostresolver1 que ya estaban configurados en mi ejemplo (Virtualbox) Vagrantfile. Estas configuraciones se pueden encontrar en la documentación de Virtualbox para el uso correcto.
Para resumir, use la opción VT-x passthrough / "virtualize" en la configuración de la CPU de su VM, proporcione a la VM la memoria adecuada, no permita que esa memoria se intercambie en la máquina host "raíz" y trate de asegurarse los rangos de su red no se superponen o tendrá problemas de enrutamiento.
Aquí está el Vagrantfile del que estaba trabajando, se basa casi por completo en la esencia de andreptb para la configuración vagrant moderna. 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
Mis cambios adicionales:
# 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"]
Elimine los signos + y agregue esas líneas en el archivo Vagrant de arriba y debería tener un sistema de trabajo equivalente al que he estado usando.
Si está ejecutando virualbox en una máquina virtual en vsphere, debe enviar un SSH al ESXi para actualizar una configuración.
Pasos:
- ssh al servidor ESXi.
- encuentre el archivo vmx que pertenece a su máquina virtual
find / -name *.vmx
- apague su máquina virtual (muy importante, o su cambio se sobrescribirá)
- edite ese vmx, agregue una nueva configuración en la parte inferior del archivo:
vhv.enable = "TRUE"
- enciende tu máquina virtual
- disfruta del vagabundo :)