Использование vagrant для запуска виртуальных машин с окружением рабочего стола

В моей среде разработки компании работают виртуальные машины, работающие на VirtualBox. Мы хотели бы перейти на один шаг дальше и использовать возможности Vagrant, чтобы иметь описание машины в текстовом файле, а затем иметь возможность "поднять" эту машину на основе этого текстового файла. В сочетании с марионеткой это решило бы нам проблему, когда у каждого есть разные версии программного обеспечения, установленные в виртуальной машине.

Однако, Vagrant, похоже, очень сфокусирован на разработке на хосте, позволяя машине в фоновом режиме. Нам нужно иметь среду разработки внутри машины, поэтому нам понадобится полный графический интерфейс, поэтому при вводе "бродяг" в машину должна быть установлена ​​полная среда рабочего стола (XFCE, KDE...).

До сих пор мне удалось создать "базовый" ящик из дистрибутива Xubuntu. Но когда я набираю "бродячий", хотя рабочий стол появляется, и я могу правильно войти в систему, Вагрант замерзает в сообщении "Ожидание загрузки машины. Это может занять несколько минут...". Через некоторое время бродяга вылетает из-за таймаута. Таким образом, общие папки не создаются, и не выполняется пакет -puppet-пакет.

Как создать виртуальную машину с полным графическим интерфейсом с использованием бродяг?

Ответ 1

Я просто получил эту работу в основном тремя шагами. Совет от askubuntu.com для меня не совсем сработал, поэтому попробуйте эту упрощенную версию:

  • Получите базовое изображение Ubuntu. Вы должны иметь возможность загружать его и vagrant ssh.
  • Затем включите отображение VirtualBox, которое по умолчанию отключено. Остановите VM и раскомментируйте эти строки в Vagrantfile:
    config.vm.provider :virtualbox do |vb|
      vb.gui = true
    end
  • Загрузите виртуальную машину и наблюдайте за новым окном отображения. Теперь вам просто нужно установить и запустить xfce4. Используйте vagrant ssh и:
    sudo apt-get install xfce4
    sudo startxfce4&
    

Чтобы это, вы должны приземлиться в сеансе xfce4.

Обновление: Для лучшего опыта я рекомендую следующие улучшения:

  • Не запускайте графический интерфейс пользователя как root. Вы действительно хотите остаться пользователем vagrant. Для этого вам нужно разрешить любому пользователю запустить графический интерфейс: sudo vim /etc/X11/Xwrapper.config и отредактировать его до allowed_users=anybody.
  • Затем установите гостевые инструменты VirtualBox до, начиная графический интерфейс. Это даст вам хорошее разрешение экрана, встроенную мышь и т.д.
    $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient-all
  • Только теперь вы должны запустить графический интерфейс пользователя vagrant с помощью $ startxfce4&.

Обновление 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