데스크톱 환경에서 가상 컴퓨터를 실행하기 위해 vagrant 사용


148

우리 회사의 개발 환경은 VirtualBox에서 실행되는 가상 머신을 기반으로합니다. 한 단계 더 나아가서 Vagrant의 기능을 사용하여 컴퓨터에 대한 설명을 텍스트 파일로 만든 다음 해당 텍스트 파일을 기반으로 해당 시스템을 "일으킬"수 있습니다. 꼭두각시와 결합하면 모든 사람이 VM에 다른 소프트웨어 버전이 설치되어 있다는 문제를 해결할 수 있습니다.

그러나 Vagrant는 호스트를 개발하는 데 매우 집중하여 백그라운드에서 기계를 사용할 수있게합니다. 우리는 기계 내에 개발 환경이 필요하므로 완전한 GUI가 필요합니다. 따라서 "유기"를 입력하면 완전한 데스크탑 환경 (XFCE, KDE ...)이있는 기계가 나타납니다.

지금까지 Xubuntu 배포판에서 "기본"상자를 만들었습니다. 그러나 "vagrant up"을 입력하면 바탕 화면이 나타나고 제대로 로그인 할 수 있지만 Vagrant는 "컴퓨터 부팅 대기 중입니다. 몇 분 정도 걸릴 수 있습니다 ..."메시지가 표시됩니다. 잠시 후 Vagrant가 시간 초과로 인해 충돌합니다. 따라서 공유 폴더가 생성되지 않거나 패키지 프로 비저 -puppet-이 실행되지 않습니다.

방랑자를 사용하여 완전한 GUI로 가상 머신을 작성하는 방법은 무엇입니까?


1
상자를 사용하는 데 문제가 없었습니다 . 베이스 박스를 포장 할 때 문제가 발생했을 수 있습니다.
bfitzpatrick

1
순진한 관점에서 볼 때 VM이 아닌 호스트에서 개발할 수 있다면 Vagrant VM에 GUI 기능을 설치하는 것이 왜 귀찮습니까? 왜 호스트에서 개발하지 않습니까?
Alexander Mills

VM에서 개발하면 개발 팀이 VM / Vagrant 사양을 유지 관리하여 응용 프로그램의 대상 환경과 동기화 할 때 문제가 줄어 듭니다. 개발자에게 고유 한 크리핑 종속성 및 동작이 줄어 듭니다. 대상 환경 / 설치에 존재하지 않거나 동일하지 않은 환경.
Jim Dennis

실제로 당신의 결론은 완전히 맞지 않습니다. 방랑자는 상자 밖에서 개발 환경을 갖는 것이 아닙니다. 리눅스의 많은 사람들이 터미널에서 개발합니다. 그리고 당신은 ssh 전용 vagrant box로 그것을 잘 할 수 있습니다.
erikbwork

답변:


150

방금 기본적으로 세 단계로 작업했습니다. 의 조언 askubuntu.com이 나에게 효과적이지 않았 으므로이 단순화 된 버전을 사용해보십시오.

  1. 기본 우분투 이미지 작업을하십시오. 부팅 할 수 있어야합니다 vagrant ssh.
  2. 그런 다음 VirtualBox 디스플레이를 활성화합니다 (기본적으로 꺼져 있음). VM을 중지하고 다음 행을 주석 해제하십시오 Vagrantfile.
    config.vm.provider : virtualbox do | vb |
      vb.gui = true
    종료
  3. VM을 부팅하고 새 디스플레이 창을 관찰하십시오. 이제 설치하고 시작하면 xfce4됩니다. 사용 vagrant ssh및 :
    sudo apt-get 설치 xfce4
    sudo startxfce4 &
    

이 Ubuntu 환경을 처음 실행하는 경우 xfce4를 설치하기 전에 다음 명령을 실행해야합니다.

sudo apt-get 업데이트

그게 다야, 당신은 xfce4세션에 착륙해야합니다 .

업데이트 : 더 나은 경험을 위해 다음 개선 사항을 권장합니다.

  1. 루트로 GUI를 시작하지 마십시오. 당신은 정말로 vagrant사용자 를 유지하고 싶습니다 . 이렇게하려면 누구나 GUI를 시작 sudo vim /etc/X11/Xwrapper.config하고 편집 할 수 있도록해야합니다 allowed_users=anybody.
  2. 다음으로 GUI 시작 하기 전에 VirtualBox 게스트 도구 설치하십시오 . 이것은 건강한 화면 해상도, 통합 마우스 등을 제공합니다.
    $ sudo apt-get 설치 -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient-all
  3. 을 사용하여 GUI를 vagrant사용자 로 시작해야합니다 $ startxfce4&.

업데이트 2 : 오늘 이것을 시도하고 VBoxClient-all스크립트가 항상 설치되는 것은 아닙니다. 누락 된 경우 해당 항목으로 바꿀 수 있습니다.

sudo VBoxClient-클립 보드
sudo VBoxClient-드래그 앤 드롭
sudo VBoxClient-디스플레이
sudo VBoxClient --checkhostversion
sudo VBoxClient-완벽한

2
페도라 19 이방인 상자에서 xfce를 사용하려고 시도한 후 약 5 시간이 지나면 해결책은 virtualbox 게스트 패키지를 설치하는 것이 었습니다 (yum install VirtualBox-guest.x86_64). 해당 패키지가 없으면 xorg에서 어떤 이유로 호스트 시스템 모니터에 액세스 할 수 없습니다. 그래서 ... 고마워!
billmalarky

이것을 시도 할 때 3 단계 코드가 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... doneVagrantfile 의 메소드 내에 포함되어야한다는 것을 발견 했습니다.
neontapir

1
Vagrantfile에 다음을 포함시켜 Vagrant에서 Xwindows 등을 프로비저닝 할 수 있습니다. #Provision X Windows, VirtualBox Guest, curl 및 기타 적절한 패키지 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
우분투 16.04는 다음과 같은 방식으로 루트가 아닌 것으로 XFCE를 시작할 수없는 것으로 보입니다. bugs.launchpad.net/ubuntu/+source/xinit/+bug/1562219
Air

1
과 같은 startxfce4설치 후 우분투 16.04 (주객 관계의)에 비 루트로 실행 할 수 있습니다xserver-xorg-legacy
로렌스 빌링햄을

74

다음은 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

vm을 시작하려면

vagrant up

virtualbox GUI의 로그인 프롬프트를 통해 username : vagrant, password : vagrant로 로그인하십시오.

xfce 시작

startx

이것은 두 가지 작은 조정으로 나를 위해 일했습니다. 먼저 "ubuntu / vivid64"상자를 찾을 때 404를 얻었으므로 vagrantcloud에서 찾은 "larryli / vivid64"로 변경했습니다. 두 번째로 프록시 설정을 관리하기 위해 vagrant-proxyconf 플러그인 설치를 추가해야했습니다.
Daniel Watrous

2
그것은 비명-> startx는 현재 설치되어 있지 않습니다 ??
prayagupd

1
내 나쁜 인터넷은 virtualbox에서를 다운로드하도록 구성되지 않았습니다 xfce4. 그것은 지금 작동하지만 로그인을 건너 뛰고 xfce4기본적으로 시작할 수있는 방법이 있습니까?
prayagupd

@prayagupd 조금 낡았지만 "인터넷을 다운로드하도록 가상 상자에 인터넷이 구성되어 있지 xfce4않습니까?" 다음에 startx를 실행할 때도 같은 오류가 발생합니다.vagrant ssh
Joshua Zastrow가

1
가상 상자에 "startx : command not found"라고 표시되는 데 문제가 있습니다. 누군가 내가 이것을 진단하는 데 도움을 줄 수 있습니까?
OOProg

11

내 2 센트

  • 버그를 피하려면 최신 방랑자 (1.3.3) + VirtualBox (4.2.18)를 실행해야합니다.

  • 쉘 스크립트 또는 인라인 명령을 사용하여 데스크탑 환경 또는 경량 창 관리자를 설치할 수 있습니다

    예를 들어 vagrantbox.es 의 Ubuntu 12.04 Precise base box 위에 LXDE를 설치 하십시오.

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

  config.vm.provision "shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • 고유 한 기본베이스 박스를 빌드하는 경우 베이스 박스 패키징 지침을 따르거나 패커 (또는 veewee)와 같은 도구를 사용하여 빌드를 자동화하십시오.

9

AirNik 의 답변 덕분에 Ubuntu 18.04 LTS / bionic에 맞게 약간 조정 된 Vagrantfile 이 있습니다.이 게시물 은 VirtualBox를 사용할 때 디스크 크기를 늘리는 방법을 설명합니다 (기본값 = 10GB).

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

추가 테스트에 따르면 연결된 github 저장소의 주석에 따라 sed 라인이 필요하지 않을 수 있습니다.
MZB

@ mh8020 github 저장소를 생성 해 주셔서 감사합니다. 매우 깨끗하고 따르기 쉬우 며 단지 필요한 것입니다. 단 하나의 문제 : 게스트 우분투 시스템에서 소리가 나지 않습니다! 현재 설정에서 이것을 가능하게 할 수있는 아이디어가 있습니까?
timmwagener

7

우분투 데스크탑 이미지를 사용하고 있으며 가상 상자 공급자가있는 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

3
vb.customize ["modifyvm", :id, '--audio', 'dsound', '--audiocontroller', 'ac97']VM에서 소리를
들으려면

상자 절단기는 더 이상 사전 제작 된 이미지를 제공하지 않습니다.
krock

5

당신은 또한 고려할 수 있습니다 패커를 개발자가 사용하는 버추얼 이미지를 만들 수 있습니다.

개발자가 각각 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의 의견에 페도라 20에서 xfce를 시작하기 전에 다음이 필요했습니다.

  • VirtualBox-guest.rpm 설치 (rpmfusion 저장소에서 사용 가능)
  • yum 그룹 마크 설치 'graphical_environment'
  • yum groupinstall "Xfce"
  • m 설치 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 의 솔루션 처럼 . 일단 성공했지만 오늘 우분투 16.04로 실패했습니다. 이 오류가 발생했습니다.

xrdb can't open display 1

그러나 운 좋게도 나는 이것이 효과가 있음을 발견했다.

startx

0

몇몇 사람들이 "startx : command not found"에 문제가있는 것을 본다. 나도 이것을 가지고 있었고 처음 프로비저닝이 완료되기 전에 로그인과 startx를 시도했기 때문이었습니다. 인내심을 갖고 커피를 마시십시오. 원래 콘솔 창을 확인하여 특히 프로비저닝이 완료되었을 때 발생하는 상황을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.