web-dev-qa-db-ja.com

VMWare内でVagrantを実行するVM

これは基本的にOSCeption(Operating System Inception)であることがわかりますが、私にとって最も意味があると思います(より良いオプションがあるかどうか教えてください、これは本当にひどいようです)。

状況は次のとおりです: Windows 8マシンがあります。私はそれが好きです-それは開発以外のすべてに最適です。開発では、Ubuntuを実行しているVMWare仮想マシンを使用しています。私はCygwinを使用することに手を出しましたが、それは正しくないと感じました。

Vagrantを使用して開発環境を管理しているプロジェクトに参加しているため、Vagrantを使用できるようにする必要があります。しかし、私が見たところから、Vagrantは主に一貫した環境内でコードを実行するために使用されますが、必ずしもそれを書くためではありません。また、VagrantボックスにSSHでコードを記述したい場合は、.vimrcファイルなどの設定をすべてのマシンに合わせて再構成する必要があります。

Ubuntu VirtualMachineにVagrantをインストールするのは理にかなっていますか?ある時点で、VM内のVMが手に負えなくなり、問題を引き起こすと感じています。これを行うより良い方法はありますか?

編集:それで試してみました-予想どおり、いくつかのエラーが発生しました。マシンを起動しようとすると、次のエラーメッセージが表示されます。

Failed to open a session for the virtual machine vagranttest_1371583212.

VT-x is not available. (VERR_VMX_NO_VMX).

Result Code: NS_ERROR_FAILURE (0x80004005)
Component: Console
Interface: IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}

私のvmware仮想マシンは別の仮想マシンを実行できないようです。これを行うための最善の方法に関するアイデアはありますか?

44
Josh

今日も同じ問題に遭遇しました。解決策は非常に簡単です。

  1. VMware仮想マシンをパワーオフします。
  2. 「仮想マシン設定の編集」に進みます
  3. プロセッサに移動します。そこには3つのチェックボックスがあります。
  4. 2番目のチェックボックスをオンにします(VT-x/AMD-Vを有効にします)
  5. マシンの電源を入れます。

このvirtualboxはvmware内で動作するはずです。

53
Andrew Orsich

元の質問と@blongのVagrantフォーラムの投稿に回答するために、これがこの作業を行うために行ったことです。

私は似たようなこと(実際にはVagrant/VMwareがVagrant/Vboxをホストしている)をしようとしていましたが、考えられるすべての最適化を実行し、「ホスト」VMに大量のRAM(24GB)および6コア、「Fit allVMmemory to reserved Host memory」を設定し、VMページファイル(それ以外の場合、システムページファイルに存在するため、一度に実行できるVMの数が制限されます)。

私がやっていることは完璧に機能しており、私が抱えていたネットワークの問題は、私が背後にいる企業のプロキシによるものでした。私のVMがインターネットにアクセスできるように設定したら、すべてが正しく機能しました。

私の例(Virtualbox)Vagrantfileで既に設定されているnatdnsproxy1とnaddnshostresolver1に加えて、Vagrantfileを介して--natbindip1と--natnet1を手動で設定する必要がありました。これらの設定は、正しい使用法についてVirtualboxのドキュメントに記載されています。

まとめると、VMCPU設定でVT-x passthrough/"virtualize"オプションを使用し、VM適切なメモリを指定し、そのメモリのスワップを許可しないでください。 「ルート」ホストマシンを使用して、ネットワーク範囲が重複しないようにしてください。そうしないと、ルーティングに問題が発生します。

ここに私が作業していたVagrantfileがあります。これはほぼ完全にandreptbのmodern.ie vagrantセットアップの要点に基づいています。 https://Gist.github.com/andreptb/57e388df5e881937e62a

# -*- mode: Ruby -*-
# vi: set ft=Ruby :

# box name into env var, same script can be used with different boxes. Defaults to win7-ie11.
box_name = box_name = ENV['box_name'] != nil ? ENV['box_name'].strip : 'win7-ie11'
# box repo into env var, so private repos/cache can be used. Defaults to http://aka.ms
box_repo = ENV['box_repo'] != nil ? ENV['box_repo'].strip : 'http://aka.ms'

Vagrant.configure("2") do |config|
  # If the box is win7-ie11, the convention for the box name is modern.ie/win7-ie11
  config.vm.box = "modern.ie/" + box_name
  # If the box is win7-ie11, the convention for the box url is http://aka.ms/vagrant-win7-ie11
  config.vm.box_url = box_repo + "/vagrant-" + box_name
  # big timeout since windows boot is very slow
  config.vm.boot_timeout = 500

  # rdp forward
  config.vm.network "forwarded_port", guest: 3389, Host: 3389, id: "rdp", auto_correct: true

  # winrm config, uses modern.ie default user/password. If other credentials are used must be changed here
  config.vm.communicator = "winrm"
  config.winrm.username = "IEUser"
  config.winrm.password = "Passw0rd!"

  config.vm.provider "virtualbox" do |vb|
    # first setup requires gui to be enabled so scripts can be executed in virtualbox guest screen
    #vb.gui = true
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--vram", "128"]
    vb.customize ["modifyvm", :id,  "--cpus", "2"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
  end
end

私の追加の変更:

# Need the WinRM gem for managing from Linux
$ Sudo gem install winrm

    config.vm.communicator = "winrm"
+  config.winrm.Host = "localhost"
    config.winrm.username = "IEUser"
    config.winrm.password = "Passw0rd!"
# This one may not be necessary, I added it for completeness
+  config.vm.guest = :windows

# In order to USE the two CPUs you need the ioapic
# Virtualbox gives an error in the GUI and only shows 1 CPU in the VM otherwise
      vb.customize ["modifyvm", :id, "--cpus", "2"]
+    vb.customize ["modifyvm", :id, "--ioapic", "on"]
# We had to modify the network range because we are running Virtualbox inside VMware
+    vb.customize ["modifyvm", :id, "--natnet1", "192.168.199.0/24"]

+記号を削除し、これらの行を上記のVagrantfileに追加すると、これまで使用していたものと同等の動作システムが必要になります。

4
dragon788

VsphereでVMでvirualboxを実行している場合、構成を更新するにはESXiにsshする必要があります。

手順:

  1. eSXiサーバーへのssh。
  2. VM find / -name *.vmx
  3. vMの電源をオフにします(非常に重要、または変更が上書きされます)
  4. そのvmxを編集し、ファイルの下部に新しい構成を追加します:vhv.enable = "TRUE"
  5. vMの電源を入れます
  6. vagrantをお楽しみください。 :)
2
Matthewgao

2つのVMware製品でこれを試しました。 VMを右クリックします。

  • VCloud Director 5.5 VM [ハードウェア]タブのプロパティには、[ゲストOSにハードウェア支援CPU仮想化を公開する]チェックボックスがありますが、グレー表示されています。YMMV。
  • VSphereバージョン5.5.0の[設定の編集]> [仮想ハードウェア]> [CPU]で、チェックボックスは「ゲストOSにハードウェア支援仮想化を公開する」と呼ばれます。
1
tbc0