Использование vagrant для запуска виртуальных машин с окружением рабочего стола
В моей среде разработки компании работают виртуальные машины, работающие на VirtualBox. Мы хотели бы перейти на один шаг дальше и использовать возможности Vagrant, чтобы иметь описание машины в текстовом файле, а затем иметь возможность "поднять" эту машину на основе этого текстового файла. В сочетании с марионеткой это решило бы нам проблему, когда у каждого есть разные версии программного обеспечения, установленные в виртуальной машине.
Однако, Vagrant, похоже, очень сфокусирован на разработке на хосте, позволяя машине в фоновом режиме. Нам нужно иметь среду разработки внутри машины, поэтому нам понадобится полный графический интерфейс, поэтому при вводе "бродяг" в машину должна быть установлена полная среда рабочего стола (XFCE, KDE...).
До сих пор мне удалось создать "базовый" ящик из дистрибутива Xubuntu. Но когда я набираю "бродячий", хотя рабочий стол появляется, и я могу правильно войти в систему, Вагрант замерзает в сообщении "Ожидание загрузки машины. Это может занять несколько минут...". Через некоторое время бродяга вылетает из-за таймаута. Таким образом, общие папки не создаются, и не выполняется пакет -puppet-пакет.
Как создать виртуальную машину с полным графическим интерфейсом с использованием бродяг?
Ответы
Ответ 1
Я просто получил эту работу в основном тремя шагами. Совет от askubuntu.com
для меня не совсем сработал, поэтому попробуйте эту упрощенную версию:
Чтобы это, вы должны приземлиться в сеансе xfce4
.
Обновление: Для лучшего опыта я рекомендую следующие улучшения:
Обновление 2: Пробовал это сегодня, а VBoxClient-all
script не всегда установлен. Если он отсутствует, вы можете заменить его эквивалентом:
sudo VBoxClient --clipboard
sudo VBoxClient --draganddrop
sudo VBoxClient --display
sudo VBoxClient --checkhostversion
sudo VBoxClient --seamless
Ответ 2
Здесь отличный ответ в виде 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
vagrant up
Войти с именем пользователя: vagrant
, password: vagrant
через приглашение для входа в графический интерфейс виртуального сервера.
Запустить xfce
startx
Ответ 3
Мои 2 цента
Убедитесь, что у вас установлена последняя версия vagrant (сейчас 1.3.3) + VirtualBox (4.2.18), чтобы избежать ошибок.
Вы можете использовать сценарий оболочки или встроенную команду для установки окружения рабочего стола или облегченного оконного менеджера
Например, установите LXDE поверх Ubuntu 12.04 Precise base box от 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
- Если вы строите свои собственные бродячие базовые блоки, следуйте инструкциям по упаковке базового блока или рассмотрите инструменты, такие как упаковщик (или veewee), для автоматизации сборки.
Ответ 4
Я использую образ рабочего стола ubuntu, он отлично работает с двумя мониторами на окнах с провайдером виртуальных ящиков.
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
Ответ 5
Вот слегка адаптированный Vagrantfile для Ubuntu 18.04 LTS/bionic - благодаря Air и Nik и этому посту объясняется, как увеличить размер диска при использовании VirtualBox (по умолчанию = 10 ГБ).
Виртуальная машина включает в себя экран входа LightDM.
Обновление: Я создал репозиторий GitHub из этого примера и добавил множество пакетов программного обеспечения для разработки с использованием внешнего интерфейса + бэкэнда.
# 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
Вы можете также рассмотреть возможность использования Packer для создания образов VirtualBox для разработчиков.
Вместо того, чтобы делиться Vagrantfile, который каждый из разработчиков использует для создания и запуска своей виртуальной машины, у вас будет шаблон упаковщика (json), который используется для создания образа виртуальной машины. Разработчики загружают или копируют образ и запускают его локально, непосредственно в VB, без необходимости создавать его самостоятельно.
Многие из общедоступных базовых блоков Vagrant создаются с помощью Packer.
Ответ 7
https://askubuntu.com/questions/300799/does-ubuntu-12-04-lts-32-bit-have-graphic-user-interface/300805#300805
После установки рабочего стола вы также захотите установить 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
Ответ 8
Добавив комментарий к billmalarky выше, на fedora 20 перед запуском xfce необходимо было следующее:
- Установить VirtualBox-guest.rpm(доступный из rpmfusion repos)
- группы yum отмечают установку 'graphical_environment'
- yum groupinstall "Xfce"
- yum install xorg-x11-drivers
Вот код:
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
Ответ 9
Как и решение xfce4
by @Air. Когда-то у меня был успех, но сегодня я потерпел неудачу с ubuntu16.04. Я получил эту ошибку:
xrdb can't open display 1
Но, к счастью, я нашел, что это работает:
startx
Ответ 10
Я немного исправил ответ ник, чтобы избежать 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