2016-12-08 12 views
0

VMでローカル作業環境を作成するために開発者が使用するバゲットベースの開発環境を作成しました。これには、UIを使用したコード編集ツールとデバッグツールが含まれています。すべての画面を使用して、VMを排他的に使用したいと考えています。しかし、私たちの開発者はすべて同じ量の画面を持っているわけではなく、たいてい1つの画面で別の場所から作業をしています。 VagrantFileに添付された画面の数を取得し、その数のVM画面を作成することは可能ですか?可変数の物理画面でバゲントを設定する

2つのスクリーンのため、現時点で我々が持っている私たちのVagrantFile構成(抜粋):

config.vm.provider "virtualbox" do |vb| vb.gui = true vb.customize ["modifyvm", :id, "--vram", "128"] vb.customize ["modifyvm", :id, "--monitorcount", "2"] end

理想的には私は、自動的に画面数を拾うのいずれかで2のモニタ数を交換したいと思いますかデベロッパーがvagrant upに余分なパラメーターを渡して画面数を設定できるようにします。

答えて

1

Vagrantfileはルビスクリプトですが、残念ながらルビーはこれについて知りません(少なくとも私は知っていません)。そしてあなたはもっと知る必要がありますすべてのシステムをチェックするのは簡単ではありません。

$ system_profiler SPDisplaysDataType | grep Resolution | wc -l 
    2 
:ので、あなたが持っているどのように多くの解像度チェックすることができるモニターの数をカウントする

Mac上

、あなたはsystem_profiler SPDisplaysDataTypeのコマンドを実行して持っているどのように多くのモニターを見つけることができ、例えば

$ system_profiler SPDisplaysDataType 
Graphics/Displays: 

Intel HD Graphics 4000: 

    Chipset Model: Intel HD Graphics 4000 
    Type: GPU 
    Bus: Built-In 
    VRAM (Dynamic, Max): 1536 MB 
    Vendor: Intel (0x8086) 
    Device ID: 0x0166 
    Revision ID: 0x0009 
    Automatic Graphics Switching: Supported 
    gMux Version: 3.2.19 [3.2.8] 
    Metal: Supported 

NVIDIA GeForce GT 650M: 

    Chipset Model: NVIDIA GeForce GT 650M 
    Type: GPU 
    Bus: PCIe 
    PCIe Lane Width: x8 
    VRAM (Total): 1024 MB 
    Vendor: NVIDIA (0x10de) 
    Device ID: 0x0fd5 
    Revision ID: 0x00a2 
    ROM Revision: 3688 
    Automatic Graphics Switching: Supported 
    gMux Version: 3.2.19 [3.2.8] 
    Metal: Supported 
    Displays: 
    Color LCD: 
     Display Type: Retina LCD 
     Resolution: 2880 x 1800 Retina 
     Retina: Yes 
     Pixel Depth: 32-Bit Color (ARGB8888) 
     Main Display: Yes 
     Mirror: Off 
     Online: Yes 
     Automatically Adjust Brightness: Yes 
     Built-In: Yes 
    PA279: 
     Resolution: 1920 x 1080 @ 60Hz (1080p) 
     Pixel Depth: 32-Bit Color (ARGB8888) 
     Display Serial Number: E2LMQS044803 
     Mirror: Off 
     Online: Yes 
     Rotation: Supported 
     Automatically Adjust Brightness: No 
     Connection Type: DisplayPort 
     Television: Yes 

これはあなたのVagrantfileでそれを置くことができるように動作します:

monitor = 1 
host = RbConfig::CONFIG['host_os'] 
if host =~ /darwin/ 
    monitor = `system_profiler SPDisplaysDataType | grep Resolution | wc -l`.to_i 
#elseif host =~ /linux/ 
#maybe there's a command for linux 
#elseif host =~ /mswin|mingw|cygwin/ 
#maybe there's a command for windows 
end 

config.vm.provider "virtualbox" do |vb| 
    vb.gui = true 
    vb.customize ["modifyvm", :id, "--vram", "128"] 
    vb.customize ["modifyvm", :id, "--monitorcount", "#{monitor}"] 
end 

私はLinuxの世界に相当するコマンドがあると確信しています。

関連する問題