L'environnement de développement de ma société est basé sur des machines virtuelles s'exécutant sur VirtualBox. Nous voudrions aller un peu plus loin et utiliser les capacités de Vagrant pour avoir la description de la machine dans un fichier texte et pouvoir ensuite "élever" cette machine sur la base de ce fichier texte. Combiné à marionnettes, cela résoudrait le problème posé par le fait que toutes les versions du logiciel sont installées sur la machine virtuelle.
Cependant, Vagrant semble très concentré sur le développement sur l'hôte, laissant la machine en arrière-plan. Nous aurions besoin de notre environnement de développement dans la machine, nous aurions donc besoin d'une interface graphique complète. Ainsi, lorsque vous tapez "vagrant", 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 lorsque je tape "vagrant", bien que le bureau apparaisse et que je puisse me connecter correctement, Vagrant se fige lorsque le message "En attente de démarrage de la machine. Cela peut prendre quelques minutes ...". Après un certain temps, Vagrant se bloque à cause d'un timeout. Ainsi, les dossiers partagés ne sont pas créés, ni le fournisseur de paquets, le groupe, n'est exécuté.
Comment créer une machine virtuelle avec une interface graphique complète utilisant vagrant?
Je viens de travailler avec essentiellement trois étapes. Les conseils de askubuntu.com
ne fonctionnant pas très bien pour moi, essayez cette version simplifiée:
vagrant ssh
.Vagrantfile
:config.vm.provider: virtualbox do | vb | vb.gui = true end
xfce4
. Utilisez vagrant ssh
et:Sudo apt-get install xfce4 Sudo startxfce4 &
Ça y est, vous devriez être débarqué dans une session xfce4
.
Mise à jour: Pour une meilleure expérience, je recommande ces améliorations:
vagrant
. Pour ce faire, vous devez permettre à quiconque de démarrer l'interface graphique: Sudo vim /etc/X11/Xwrapper.config
et de le modifier en allowed_users=anybody
.$ Sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 $ Sudo VBoxClient-all
vagrant
, avec $ startxfce4&
. Mise à jour 2: J'ai essayé ceci aujourd'hui et le script VBoxClient-all
n'est pas toujours installé. S'il manque, vous pouvez remplacer par l'équivalent:
Sudo VBoxClient --clipboard Sudo VBoxClient --draganddrop Sudo VBoxClient --display Sudo VBoxClient --checkhostversion Sudo VBoxClient --sempire
Voici l'excellente réponse d'Air sous la forme d'une 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 le vm
vagrant up
Connectez-vous avec le nom d'utilisateur: vagrant
, mot de passe: vagrant
via l'invite de connexion sur l'interface graphique de la virtualbox.
Démarrer xfce
startx
Mes 2 centimes
Assurez-vous que vous utilisez le dernier vagabond (1.3.3 maintenant) + VirtualBox (4.2.18) pour éviter les bugs.
Vous pouvez utiliser un script shell ou une commande intégrée pour installer un environnement de bureau ou un gestionnaire de fenêtres léger
Par exemple, installez LXDE sur Ubuntu 12.04 Precise base box 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
J'utilise ubuntu desktop image, cela fonctionne bien avec deux moniteurs sous windows avec un 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
Vous pouvez également envisager d’utiliser Packer pour créer des images VirtualBox à l’usage des développeurs.
Plutôt que de partager le fichier Vagrant que les développeurs utilisent chacun pour créer et exécuter leur machine virtuelle, vous devez utiliser un modèle de packer (json) 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.
La plupart des boîtes de base Vagrant partagées publiquement sont créées avec Packer.
Voici un fichier Vagrantfile légèrement adapté pour Ubuntu 18.04 LTS/bionic - grâce aux réponses de Air et Nik , et à cet article expliquant comment augmenter la taille du disque lors de l'utilisation VirtualBox (par défaut = 10 Go).
Le VM comprend un écran de connexion LightDM.
Update: J'ai créé un GitHub repo à partir de cet exemple et ajouté de nombreux packages logiciels pour le développement front-end + back-end.
# 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
Après avoir installé le bureau, vous voudrez également installer GDM, lequel vous permettra de démarrer directement dans un environnement graphique. Vous aurez aussi vouloir le 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
Pour ajouter au commentaire de billmalarky ci-dessus, sur Fedora 20, il était nécessaire de prendre les mesures suivantes avant de lancer xfce:
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
Comme la solution xfce4
de @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é ceci fonctionne:
startx
J'ai corrigé un peu la réponse de Nik pour éviter HTTP 404:
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