vagrantを使用してデスクトップ環境で仮想マシンを実行する


148

私の会社の開発環境は、VirtualBoxで実行される仮想マシンに基づいています。さらに一歩進め、Vagrantの機能を使用して、マシンの説明をテキストファイルに記述し、そのテキストファイルに基づいてそのマシンを「上げる」ことができるようにしたいと考えています。パペットと組み合わせると、VMにインストールされているソフトウェアのバージョンが全員に異なるという問題が解決されます。

ただし、Vagrantはホストでの開発に非常に重点を置いているため、マシンをバックグラウンドで実行できます。マシン内に開発環境を用意する必要があるため、完全なGUIが必要になるため、完全なデスクトップ環境(XFCE、KDE ​​...)を備えたマシンを「vagrant up」と入力すると表示されます。

これまでのところ、Xubuntuディストリビューションから「ベース」ボックスを作成できました。しかし、「vagrant up」と入力すると、デスクトップは表示され、適切にログインできますが、Vagrantは「マシンの起動を待機しています。これには数分かかる場合があります...」というメッセージでフリーズします。しばらくすると、タイムアウトによりVagrantがクラッシュします。そのため、共有フォルダーは作成されず、パッケージプロビジョナー-puppet-も実行されません。

vagrantを使用して完全なGUIで仮想マシンを作成するにはどうすればよいですか?


1
これらのボックスの使用に問題はありませんでした。ベースボックスをパッケージ化したときに問題が発生した可能性があります。
bfitzpatrick 2013

1
素朴な観点から、VMではなくホスト上で開発できる場合、なぜVagrant VMにGUI機能をインストールする必要があるのですか?ホストで開発しないのはなぜですか?
Alexander Mills

VMで開発することで、開発チームがVM / Vagrant仕様を維持してアプリケーションのターゲット環境と同期させると、問題が少なくなる可能性があります。開発者に固有の忍び寄る依存関係や動作が少なくなります。ターゲット環境/インストールに存在しない(または同一ではない)環境。
ジム・デニス

実際、あなたの結論は完全に正しくはありません。Vagrantは、箱から出してすぐに開発環境を使用できるようにするものではありません。Linuxの多くの人がターミナルで開発しています。そして、sshのみのvagrantボックスでそれをうまく行うことができます。
erikbwork

回答:


150

私はこれを基本的に3つのステップで機能させました。からのアドバイスaskubuntu.comは私にとってはうまくいかなかったので、この簡略化されたバージョンを試してください:

  1. 基本的なUbuntuイメージを機能させる。起動できるはずvagrant sshです。
  2. 次に、VirtualBoxディスプレイを有効にします。これはデフォルトではオフになっています。VMを停止し、次の行のコメントを外しますVagrantfile
    config.vm.provider:virtualbox do | vb |
      vb.gui = true
    終わり
  3. VMを起動し、新しい表示ウィンドウを確認します。これで、インストールして開始するだけですxfce4。使用vagrant sshして:
    sudo apt-get install xfce4
    sudo startxfce4&
    

このUbuntu環境を初めて実行する場合は、xfce4をインストールする前に次のコマンドを実行する必要があります。

sudo apt-get update

それだけですxfce4。セッションに着陸する必要があります。

更新:エクスペリエンスを向上させるために、以下の改善をお勧めします。

  1. ルートとしてGUIを起動しないでください。あなたは本当にvagrantユーザーを維持したいです。これを行うには、誰でもGUIを起動できるようにし、sudo vim /etc/X11/Xwrapper.configそれをに編集する必要がありallowed_users=anybodyます。
  2. 次に、GUIを開始する前に VirtualBoxゲストツールをインストールします。これにより、健全な画面解像度、統合マウスなどが得られます。
    $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient-all
  3. ここでのみ、vagrantユーザーとしてGUIを起動し$ startxfce4&ます。

更新2:今日これを試しましたが、VBoxClient-allスクリプトが常にインストールされるとは限りません。見つからない場合は、同等のもので置き換えることができます。

sudo VBoxClient-クリップボード
sudo VBoxClient --draganddrop
sudo VBoxClient --display
sudo VBoxClient --checkhostversion
sudo VBoxClient-シームレス

2
立ち寄って、xfceをfedora 19 vagrant boxで動作させるために約5時間試行した後の解決策は、virtualboxゲストパッケージをインストールすることでした(yum install VirtualBox-guest.x86_64)。このパッケージがないと、何らかの理由でxorgがホストマシンのモニターにアクセスできませんでした。だから…ありがとう
billmalarky 2014年

これを試したところ、ステップ3のコードをVagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... doneVagrantfileのメソッド内に含める必要があることがわかりました。
ネオタピル2014

1
Vagrantfileに以下を含めることにより、VagrantからXwindowsなどをプロビジョニングできます。#Provision X Windows、VirtualBox Guest、curlおよびその他のaptパッケージconfig.vm.provision:shell、:inline => "sudo apt-get install -y curl xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 "config.vm.provision:shell、:inline =>" sudo VBoxClient-all "</ code>
Farrukh Najmi

2
Ubuntu 16.04では、XFCEを非ルートとして次のように開始できないようです:bugs.launchpad.net/ubuntu/+source/xinit/+bug/1562219
Air

1
startxfce4インストール後、Ubuntu 16.04(xenial)で非rootとして実行できるように見えますxserver-xorg-legacy
Laurence Billingham

74

エアの優れた答えは、 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、パスワード:vagrantvirtualbox GUIのログインプロンプトからログインします。

xfceを起動

startx

これは、2つの小さな調整でうまくいきました。最初に「ubuntu / vivid64」ボックスを探しているときに404を取得したので、vagrantcloudで見つけた「larryli / vivid64」に変更しました。次に、プロキシ設定を管理するためにvagrant-proxyconfプラグインをインストールする必要があります。
Daniel Watrous 2016年

2
それは悲鳴を上げる-> startxは現在インストールされていません??
prayagupd 2016

1
インターネットがvirtualboxでをダウンロードするように構成されていませんxfce4。現在は機能していますが、ログインをスキップxfce4してデフォルトでを起動する方法はありますか?
prayagupd 2016年

@prayagupdは少し古いですが、「インターネットがvirtualboxでダウンロードするように構成されていませんでした」について詳しく説明できますxfce4か?startxを実行した後も同じエラーが発生しますvagrant ssh
Joshua Zastrow

1
仮想ボックスに「startx:コマンドが見つかりません」と表示される問題が発生しています。誰かがこれを診断するのを手伝ってくれませんか?
OOProg

11

私の2セント

  • バグを回避するために、最新のvagrant(現在は1.3.3)+ VirtualBox(4.2.18)を実行していることを確認してください。

  • シェルスクリプトまたはインラインコマンドを使用して、デスクトップ環境または軽量ウィンドウマネージャーをインストールできます。

    たとえば、vagrantbox.esからUbuntu 12.04 Preciseベースボックスの上にLXDEをインストールします

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • 独自のvagrantベースボックスを構築する場合は、必ずベースボックスのパッケージ手順に従うか、packer(またはveewee)などのツールでビルドを自動化することを検討してください。

9

ここでは、わずかにバイオニックのUbuntu 18.04 LTS /ためVagrantfileのように構成されている-のおかげでエアのとニックの回答、およびこの記事のVirtualBox(= 10ギガバイトデフォルト)を使用している場合、ディスクのサイズを大きくする方法を説明します。

VMには、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

  # /ubuntu/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

Ubuntu 16.04では、XWrapper.configファイルが存在する/使用されるようにするには、xserver-xorg-legacyをインストールする必要がありました。
MZB 2019

さらなるテストにより、リンクされたgithubリポジトリのコメントに従って、sed行は必要ない可能性があることが示唆されています。
MZB 2019

@ mh8020 githubリポジトリを作成していただきありがとうございます。非常にクリーンでフォローが簡単、必要なものだけ。ただ1つの問題:ゲストUbuntuシステムでサウンドが機能しない!現在の設定でこれを有効にできるものはありますか?
timmwagener

7

私はubuntuデスクトップイメージを使用しています。仮想ボックスプロバイダーを備えたWindowsの2つのモニターでうまく機能します。

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

3
vb.customize ["modifyvm", :id, '--audio', 'dsound', '--audiocontroller', 'ac97']vmからサウンドを取得する(必要な場合)
Igonato

ボックスカッターは、事前に構築されたイメージを提供しません。
krock

5

Packerを使用して、開発者が使用するVirtualBoxイメージを作成することも検討してください。

開発者がそれぞれVMの構築と実行に使用するVagrantfileを共有するのではなく、VMイメージの作成に使用されるパッカーテンプレート(json)を用意します。開発者はイメージをダウンロードまたはコピーして、VBでローカルに直接実行します。自分でビルドする必要はありません。

公に共有されているVagrantベースボックスの多くは、Packerで作成されています。


2

/ubuntu/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

1
...またはより軽量なxdm
geekQ

1

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

0

上記のbillmalarkyのコメントに加えて、fedora 20では、xfceを開始する前に次のことが必要でした。

  • VirtualBox-guest.rpmをインストールします(rpmfusionリポジトリから入手可能)
  • 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

0

xfce4@Airによるソリューションのように。一度は成功したが、今日はubuntu16.04で失敗した。私はこのエラーを受け取りました:

xrdb can't open display 1

しかし幸いにも、私はこれがうまくいくことを発見しました:

startx

0

「startx:コマンドが見つかりません」で問題が発生している人がいます。私にもこれがありました。それは、初回のプロビジョニングが完了する前にログインとstartxを試行していたためです。我慢して、コーヒーを飲みに行きます。元のコンソールウィンドウをチェックして、特にプロビジョニングが完了したときに何が起こっているかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.