it-swarm.com.de

Verwenden von Vagrant zum Ausführen von virtuellen Maschinen mit Desktop-Umgebung

Die Entwicklungsumgebung meines Unternehmens basiert auf virtuellen Maschinen, die auf VirtualBox laufen. Wir möchten noch einen Schritt weitergehen und die Funktionen von Vagrant nutzen, um die Beschreibung der Maschine in einer Textdatei zu haben und dann die Maschine auf Basis dieser Textdatei "anheben" zu können. In Kombination mit der Marionette würde dies das Problem lösen, dass auf der VM unterschiedliche Softwareversionen installiert sind. 

Vagrant scheint sich jedoch sehr darauf konzentriert zu haben, sich auf dem Host zu entwickeln und die Maschine im Hintergrund zu lassen. Wir müssten unsere Entwicklungsumgebung in der Maschine haben, also benötigen wir eine vollständige grafische Benutzeroberfläche. Wenn Sie "vagrant up" eingeben, sollte eine Maschine mit einer vollständigen Desktopumgebung (XFCE, KDE ...) erscheinen. 

Bisher habe ich aus einer Xubuntu-Distribution eine "Basis" -Box erstellt. Wenn ich jedoch "vagrant up" tippe, obwohl der Desktop angezeigt wird und ich mich richtig anmelden kann, friert Vagrant bei der Meldung "Warten auf Maschine wird gestartet. Dies kann einige Minuten dauern ...". Nach einer Weile stürzt Vagrant wegen Zeitüberschreitung ab. Es werden also keine freigegebenen Ordner erstellt und das Paket Provisioner -puppet- wird nicht ausgeführt. 

Wie erstelle ich eine virtuelle Maschine mit einer kompletten GUI mit Vagrant?

135
PRiera

Ich habe gerade mit drei Schritten gearbeitet. Der Ratschlag von askubuntu.com hat für mich nicht ganz funktioniert, probieren Sie also diese vereinfachte Version:

  1. Holen Sie sich ein grundlegendes Ubuntu-Image. Sie sollten es und vagrant ssh booten können.
  2. Aktivieren Sie anschließend die VirtualBox-Anzeige, die standardmäßig deaktiviert ist. Halte die VM an und kommentiere diese Zeilen in Vagrantfile:
     config.vm.provider: virtualbox do | vb | 
     vb.gui = true 
     ende
  3. Starten Sie den VM und beobachten Sie das neue Anzeigefenster. Jetzt müssen Sie nur noch xfce4 installieren und starten. Verwenden Sie vagrant ssh und:
     Sudo apt-get install xfce4 
     Sudo startxfce4 & 
    

Das ist es, Sie sollten in einer xfce4-Sitzung gelandet sein.

Update: Für ein besseres Erlebnis empfehle ich folgende Verbesserungen:

  1. Starten Sie die GUI nicht als root. Sie möchten wirklich der vagrant-Benutzer bleiben. Dazu müssen Sie jedem Benutzer erlauben, die GUI zu starten: Sudo vim /etc/X11/Xwrapper.config und in allowed_users=anybody zu bearbeiten.
  2. Installieren Sie anschließend die VirtualBox-Gastools, bevor Sie die GUI starten. Dadurch erhalten Sie eine gesunde Bildschirmauflösung, eine integrierte Maus usw.
     $ Sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 
     $ Sudo VBoxClient-all
  3. Erst jetzt sollten Sie die GUI als vagrant-Benutzer mit $ startxfce4& starten.

Update 2: Habe dies heute versucht und das VBoxClient-all-Skript wird nicht immer installiert. Wenn es fehlt, können Sie es durch das Äquivalent ersetzen:

Sudo VBoxClient - Clipboard 
 Sudo VBoxClient --draganddrop__. Sudo VBoxClient --display 
 Sudo VBoxClient --checkhostversion 
 Sudo VBoxClient --s Seamless
136
Air

Here's Airs ausgezeichnete Antwort in Form einer Vagrantfile

Vagrant.configure(2) do |config|
  # Ubuntu 15.10
  config.vm.box = "ubuntu/wily64"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # Install xfce and virtualbox additions
  config.vm.provision "Shell", inline: "Sudo apt-get update"
  config.vm.provision "Shell", inline: "Sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "Shell", inline: "Sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"
end

Vm starten

vagrant up

Melden Sie sich mit Benutzername: vagrant, Kennwort: vagrant über die Anmeldeaufforderung auf der Virtualbox-Benutzeroberfläche an.

Starten Sie xfce

startx
68
Nik

Meine 2 Cent

  • Stellen Sie sicher, dass Sie den neuesten Vagrant (1.3.3 jetzt) ​​+ VirtualBox (4.2.18) ausführen, um Fehler zu vermeiden.

  • Sie können ein Shell-Skript oder einen Inline-Befehl verwenden, um eine Desktop-Umgebung oder einen Light-Window-Manager zu installieren

    Zum Beispiel installieren Sie LXDE auf Ubuntu 12.04 Precise Base Box aus vagrantbox.es .

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "Shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • Wenn Sie Ihre eigenen Vagrant-Basis-Boxen erstellen, befolgen Sie die Verpackungsanweisungen für base-Box oder verwenden Sie Tools wie Packer (oder veewee), um die Erstellung zu automatisieren.
9
Terry Wang

Ich verwende Ubuntu Desktop Image, es funktioniert gut mit zwei Monitoren unter Windows mit Virtual Box Provider.

Vagrant.configure(2) do |config|
  config.vm.box = "box-cutter/ubuntu1404-desktop"

  config.ssh.forward_agent = true

  config.vm.network "forwarded_port", guest: 8080, Host: 8080
  config.vm.network "forwarded_port", guest: 3000, Host: 3000


  config.vm.synced_folder "../../git", "/home/vagrant/git"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.customize ["modifyvm", :id, "--monitorcount", "2"]
    vb.memory = "2048"
  end
end
6
Andrzej Rehmann

Sie können auch Packer verwenden, um VirtualBox-Images für Entwickler zu erstellen. 

Anstatt die Vagrantfile gemeinsam zu nutzen, die Entwickler zum Erstellen und Ausführen ihrer VM verwenden, haben Sie eine Packer-Vorlage (json), die zum Erstellen eines VM - Images verwendet wird. Entwickler laden oder kopieren das Image und führen es lokal aus, direkt in VB, ohne es selbst erstellen zu müssen.

Viele der öffentlich gemeinsam genutzten Vagrant-Basisboxen werden mit Packer erstellt.

5
Kief

Hier ist ein leicht angepasstes Vagrantfile für Ubuntu 18.04 LTS/bionic - dank der Antworten von Air und Nik und diesem Beitrag . Standard = 10 GB).

Die VM enthält einen LightDM-Anmeldebildschirm.

Update: Ich habe aus diesem Beispiel ein GitHub-Repo erstellt und viele Software-Pakete für Frontend + Backend-Entwicklung hinzugefügt.

# Optional - enlarge disk:
#vagrant plugin install vagrant-disksize
vagrant up
vagrant reload
# After reboot, the VM screen should show the LightDM login screen.
# Log in as user "vagrant", password "vagrant".
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/bionic64"
  # Optional - enlarge disk (will also convert the format from VMDK to VDI):
  #config.disksize.size = "50GB"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # https://askubuntu.com/questions/1067929/on-18-04-package-virtualbox-guest-utils-does-not-exist
  config.vm.provision "Shell", inline: "Sudo apt-add-repository multiverse && Sudo apt-get update"

  # Install xfce and virtualbox additions.
  # (Not sure if these packages could be helpful as well: virtualbox-guest-utils-hwe virtualbox-guest-x11-hwe)
  config.vm.provision "Shell", inline: "Sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "Shell", inline: "Sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"

  # Optional: Use LightDM login screen (-> not required to run "startx")
  config.vm.provision "Shell", inline: "Sudo apt-get install -y lightdm lightdm-gtk-greeter"
  # Optional: Install a more feature-rich applications menu
  config.vm.provision "Shell", inline: "Sudo apt-get install -y xfce4-whiskermenu-plugin"
end
3
mh8020

https://askubuntu.com/questions/300799/does-ubuntu-12-04-lts-32-bit-have-graphic-user-interface/300805#300805

Nach der Installation des Desktops möchten Sie auch GDM installieren, das können Sie direkt in eine grafische Umgebung booten. Sie werden auch will es konfigurieren.

Also vielleicht das hinzufügen?

Vagrant::Config.run do |config|
    config.vm.provision :Shell, :inline => "Sudo apt-get install gdm"
    config.vm.provision :Shell, :inline => "Sudo dpkg-reconfigure gdm"
end
2
Anthony Roberts

Zusätzlich zu Billmalarkys Kommentar zu Fedora 20 war vor dem Start von xfce Folgendes erforderlich:

  • Installieren Sie VirtualBox-guest.rpm (verfügbar in RPM-Repos).
  • yum-Gruppenmarkierung "graphical_environment" installieren
  • yum groupinstall "Xfce"
  • yum installiere xorg-x11-treiber

Hier ist der Code:

config.vm.provision "Shell", inline: <<-Shell        
    #Install Virtual Box guest additions from rpmfusion repos
    cd /vagrant
    yum install -y rpmfusion-free-release-20.noarch.rpm 
    yum install -y rpmfusion-nonfree-release-20.noarch.rpm
    yum update -y
    yum install -y VirtualBox-guest

    #Add XFCE desktop to Fedora server
    yum groups mark install 'graphical_environment'
    yum groupinstall -y "Xfce"
    yum install -y xorg-x11-drivers   
Shell
0
Izak Marais

Wie die xfce4-Lösung von @Air. Einmal hatte ich Erfolg, aber heute bin ich mit Ubuntu16.04 gescheitert. Ich habe diesen Fehler erhalten:

xrdb can't open display 1

Zum Glück fand ich diese Arbeiten:

startx
0
scil

Ich habe Niks Antwort ein wenig gepatcht, um HTTP 404 zu vermeiden:

Vagrant.configure(2) do |config|
  # Ubuntu 15.10
  config.vm.box = "bento/ubuntu-18.04"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # Install xfce and virtualbox additions
  config.vm.provision "Shell", inline: "Sudo apt-get update"
  config.vm.provision "Shell", inline: "Sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "Shell", inline: "Sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"
end
0