我公司的开发环境基于在VirtualBox上运行的虚拟机。我们希望更进一步,并使用Vagrant的功能在文本文件中获得机器的描述,然后能够基于该文本文件“提升”该机器。结合木偶,这将解决我们每个人在VM中安装不同软件版本的问题。
然而,Vagrant似乎非常专注于在主机上开发,让机器在后台运行。我们需要在机器中拥有我们的开发环境,因此我们需要一个完整的GUI,因此当输入“vagrant up”时,应该出现具有完整桌面环境(XFCE,KDE ...)的机器。
到目前为止,我已经设法从Xubuntu发行版中创建了一个“基础”框。但是当我输入“vagrant up”时,虽然桌面出现了,并且我能够正确登录,但Vagrant会在“等待机器启动时消息”中冻结。这可能需要几分钟......“。过了一会儿,Vagrant因超时而崩溃。因此,不会创建共享文件夹,也不会执行包配置程序-puppet-。
如何使用vagrant创建具有完整GUI的虚拟机?
答案 0 :(得分:140)
我刚刚完成了三个步骤。来自askubuntu.com
的建议并不适合我,所以请尝试这个简化版本:
vagrant ssh
。Vagrantfile
:config.vm.provider :virtualbox do |vb| vb.gui = true end
xfce4
即可。使用vagrant ssh
和:sudo apt-get install xfce4 sudo startxfce4&
就是这样,你应该进入xfce4
会话。
更新:为了获得更好的体验,我建议您进行以下改进:
vagrant
用户。为此,您需要允许任何人启动GUI:sudo vim /etc/X11/Xwrapper.config
并将其编辑为allowed_users=anybody
。$ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 $ sudo VBoxClient-all
vagrant
作为$ startxfce4&
用户启动GUI。 更新2:今天尝试了这一点,并不总是安装VBoxClient-all
脚本。如果它丢失了,你可以用等效的替换:
sudo VBoxClient --clipboard sudo VBoxClient --draganddrop sudo VBoxClient --display sudo VBoxClient --checkhostversion sudo VBoxClient --seamless
答案 1 :(得分:70)
这是Air的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
启动虚拟机
vagrant up
使用用户名:vagrant
,密码:vagrant
通过虚拟机GUI上的登录提示进行登录。
启动xfce
startx
答案 2 :(得分:10)
我的2美分
确保您正在运行最新的流浪者(现在为1.3.3)+ VirtualBox(4.2.18)以避免错误。
您可以使用shell脚本或内联命令安装桌面环境或轻量级窗口管理器
例如,在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
答案 3 :(得分:6)
我正在使用ubuntu桌面图像,它可以很好地与带有虚拟盒提供程序的Windows上的两个显示器配合使用。
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
答案 4 :(得分:5)
您也可以考虑使用Packer创建VirtualBox图像供开发人员使用。
您可以拥有一个用于创建VM映像的打包器模板(json),而不是共享开发人员各自用来构建和运行其VM的Vagrantfile。开发人员可以直接在VB中下载或复制映像并在本地运行它,而无需自行构建。
许多公开共享的Vagrant基本框都是使用Packer创建的。
答案 5 :(得分:3)
以下是针对Ubuntu 18.04 LTS / bionic的略微修改的Vagrantfile-感谢Air和Nik的回答,以及this post解释了使用时如何增加磁盘大小VirtualBox(默认= 10 GB)。
VM包含一个LightDM登录屏幕。
更新:我已根据此示例创建了GitHub repo,并添加了许多用于前端+后端开发的软件包。
# 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
答案 6 :(得分:2)
安装桌面后,您还需要安装GDM 将让您直接启动到图形环境。你也会 想配置它。
所以也许加上这个?
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
答案 7 :(得分:0)
在上面添加了billmalarky的评论,在Fedora 20上,在启动xfce之前需要以下内容:
以下是代码:
/\A(?:[- +()0-9])\z/ # yours
/\A(?:[- +()0-9]+)\z/ # correct
答案 8 :(得分:0)
为了避免使用HTTP 404,我对Nik的回答做了一些修补:
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
答案 9 :(得分:0)
我看到一些人在“ startx:找不到命令”方面遇到问题。我也有这个原因,这是因为我在首次配置完成之前就尝试登录和启动。耐心点,去喝杯咖啡。检查原始控制台窗口,查看发生了什么情况,尤其是在配置完成后。