Utiliser vagrant pour exécuter des machines virtuelles avec un environnement de bureau

L'environnement de développement de mon entreprise est basé sur des machines virtuelles, fonctionnant sur VirtualBox. Nous aimerions aller un peu plus loin, et utiliser les capacités de Vagrant pour avoir la description de la machine dans un fichier texte et ensuite être en mesure de "soulever" cette machine basée sur ce fichier texte. Combiné à puppet, cela nous résoudrait le problème que tout le monde a différentes versions logicielles installées dans la VM.

cependant, Vagrant semble très concentré pour se développer sur l'hôte, laissant la machine à l'arrière-plan. Nous aurions besoin de notre environnement de développement dans la machine, donc nous aurions besoin d'une interface graphique complète, donc lorsque nous tapons "vagrant up" une machine avec un environnement de bureau complet (XFCE, KDE...) doit apparaître.

jusqu'à présent, j'ai réussi à créer une boîte" base " à partir d'une distribution Xubuntu. Mais quand je tape "vagrant up", bien que le bureau apparaisse, et que je suis capable de me connecter correctement, Vagrant gèle devant le message " Waiting for machine pour démarrer. Cela peut prendre quelques minutes...". Au bout d'un moment, Le Vagabond s'écrase. Ainsi, les dossiers partagés ne sont pas créés, ni le paquet provisioner-puppet - n'est exécuté.

comment créer une machine virtuelle avec une interface graphique complète en utilisant vagrant?

131
demandé sur ROMANIA_engineer 2013-09-18 20:59:43

8 réponses

je viens d'obtenir ce travail avec essentiellement trois étapes. Le Conseil de askubuntu.com n'a pas tout à fait fonctionné pour moi, alors essayez cette version simplifiée:

  1. Obtenir une base de Ubuntu image de travail. Vous devriez pouvoir démarrer avec vagrant ssh .
  2. ensuite, activez L'affichage VirtualBox, qui est désactivé par défaut. Arrêter la VM et décommenter ces lignes dans Vagrantfile :
    config.vm.provider :virtualbox do |vb|
      vb.gui = true
    end
  3. démarrer la VM et observer la nouvelle fenêtre d'affichage. Maintenant, vous avez juste besoin d'installer et de démarrer xfce4 . Utiliser vagrant ssh et:
    sudo apt-get install xfce4
    sudo startxfce4&
    

C'est tout, vous devriez atterrir dans une session xfce4 .

mise à jour: pour une meilleure expérience, je recommande ces améliorations:

  1. ne démarrez pas l'interface graphique en tant que root. Vous voulez vraiment rester l'utilisateur vagrant . Pour ce faire, vous devez autoriser n'importe qui à démarrez l'interface graphique: sudo vim /etc/X11/Xwrapper.config et modifiez-la en allowed_users=anybody .
  2. ensuite, installez les outils invités VirtualBox avant démarrage de l'interface graphique. Cela vous donnera une résolution d'écran saine, une souris intégrée, etc.
    $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient-all
  3. ce N'est que maintenant que vous devez démarrer L'interface graphique en tant qu'utilisateur vagrant , avec $ startxfce4& .

mise à Jour 2: Essayé aujourd'hui et le VBoxClient-all le script n'est pas toujours installé. S'il manque, vous pouvez le remplacer par l'équivalent:

sudo VBoxClient --clipboard
sudo VBoxClient --draganddrop
sudo VBoxClient --display
sudo VBoxClient --checkhostversion
sudo VBoxClient --seamless
134
répondu Air 2016-10-12 18:56:52

voici l'excellente réponse de Air sous la forme d'un 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

pour démarrer la vm

vagrant up

Se connecter avec nom d'utilisateur: vagrant , mot de passe: vagrant via l'invite de connexion sur l'interface graphique virtualbox.

Démarrer xfce

startx
68
répondu Nik 2016-03-27 07:55:30

My 2 cents

  • assurez-vous que vous utilisez la dernière version de vagrant (1.3.3 maintenant) + VirtualBox (4.2.18) pour éviter les bugs.

  • vous pouvez utiliser le script shell ou la commande en ligne pour installer un environnement de bureau ou un gestionnaire de fenêtre léger

    par exemple installer LXDE sur Ubuntu 12.04 boîte de base précise de 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
  • si vous construisez vos propres boîtes de base, assurez-vous de suivre les instructions d'emballage de la boîte de base ou de considérer des outils comme packer (ou veewee) pour automatiser la construction.
9
répondu Terry Wang 2016-01-08 09:52:27

j'utilise ubuntu image de bureau, Il fonctionne bien avec deux moniteurs sur windows avec fournisseur de boîte virtuelle.

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
répondu Hoto 2016-03-25 10:44:13

vous pourriez également envisager d'utiliser Packer pour créer des images VirtualBox pour les développeurs à utiliser.

plutôt que de partager le Vagrantfile que les développeurs utilisent chacun pour construire et exécuter leur VM, vous auriez un modèle de packer (json) qui est utilisé pour créer une image VM. Les développeurs téléchargent ou copient l'image et l'exécutent localement, directement en VB, sans avoir à la construire eux-mêmes.

beaucoup de vagabonds les boîtes de base sont créées avec Packer.

4
répondu Kief 2014-02-13 07:56:07

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

après avoir installé le bureau, vous voudrez également installer GDM qui vous permettra de démarrer directement dans un environnement graphique. Vous aurez également souhaitez configurer.

alors peut-être ajouter ceci?

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
répondu Anthony Roberts 2018-04-23 14:38:15

ajoutant au commentaire de billmalarky ci-dessus, sur fedora 20 ce qui suit était nécessaire avant de commencer xfce:

  • installez VirtualBox-guest.rpm (disponible auprès de rpmfusion repos)
  • yum groupes de la marque d'installer 'graphical_environment'
  • yum groupinstall "Xfce"
  • yum install xorg-x11-drivers

voici le 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
répondu Izak Marais 2015-08-06 13:31:40

comme la solution xfce4 par @Air. Une fois j'ai eu du succès, mais aujourd'hui j'ai échoué avec ubuntu16.04. J'ai eu cette erreur:

xrdb can't open display 1

Mais heureusement, j'ai trouvé cela fonctionne:

startx
0
répondu scil 2018-02-27 14:22:15