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?
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:
- Obtenir une base de Ubuntu image de travail. Vous devriez pouvoir démarrer avec
vagrant ssh
. - 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
- démarrer la VM et observer la nouvelle fenêtre d'affichage. Maintenant, vous avez juste besoin d'installer et de démarrer
xfce4
. Utiliservagrant 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:
- 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 enallowed_users=anybody
. - 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
- 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
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
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.
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
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.
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
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
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