2016-10-08 17 views
1

私は調査目的で複数のVM環境を展開するために迷路を使用しています。しかし、今私は、特定のCPUコアに各ドッカーのコンテナをピンする必要がありますが、私はどのように迷彩を使用して行うか分からない。私はVagrantファイルの "args"句を使って、 "--cpuset"パラメータをdocker runコマンドに渡すことができますが、複数のコンテナを起動しているので、ループで使用する方法はわかりません私は別のCPUコア(例えば、node1ピンをcore0に、node2ピンをcore1に、など)に各コンテナをピン止めする必要があります。バグ:バグを使用して複数のコンテナに引数を渡します。

私の現在のVagrantfileはCPUなしで、ピン留め事を次のようになります。

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! 
VAGRANTFILE_API_VERSION = "2" 

# choose how many machines the cluster will contain 
N_VMS = 32 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.box = "tknerr/baseimage-ubuntu-14.04" 
    config.vm.network "private_network", ip: "192.168.121.2" 
    config.vm.provider "docker" do |v| 
    v.has_ssh = true 
    end 

    hosts_file = [] 
    1.upto(N_VMS) do |i| 
    config.vm.define vm_name = "node#{i}" do |config| 
     config.vm.hostname = vm_name 
    end 
    end 

    script = <<-SCRIPT 
     apt-get -y update 
     apt-get -y install libcr-dev mpich2 mpich2-doc arp-scan openssh-server nano make 
    SCRIPT 
    script.sub! 'N_VMS', N_VMS.to_s 
    config.vm.provision "shell", inline: script 

end 

答えて

0

を定義することができます。 "--cpuset-cpus"を追加する正しい場所は、config.vm.defineブロックにあります。私は私が通過しなければならない引数が「ドッキングウィンドウの実行」コマンドにあるので、この方法は、ドッキングウィンドウプロバイダのために動作しないと思います

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! 
VAGRANTFILE_API_VERSION = "2" 

# choose how many machines the cluster will contain 
N_VMS = 32 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.box = "tknerr/baseimage-ubuntu-14.04" 
    config.vm.network "private_network", ip: "192.168.121.2" 
    config.vm.provider "docker" do |v| 
    v.has_ssh = true 
    end 

    2.upto(N_VMS+1) do |i| 
    config.vm.define vm_name = "node#{i}" do |config| 

     # CPU PINNING CONFIG  
     config.vm.provider "docker" do |docker| 
     docker.create_args = ['--cpuset-cpus=' + ((i/2)-1).to_s] 
     end 

     config.vm.hostname = vm_name 
    end 
    end 

    script = <<-SCRIPT 
     apt-get -y update 
     apt-get -y install libcr-dev mpich2 mpich2-doc arp-scan openssh-server nano make 
    SCRIPT 
    script.sub! 'N_VMS', N_VMS.to_s 
    i=1 
    config.vm.provision "shell", inline: script 

end 
0

vagrantfileはRuby言語に基づいているとして、あなたが伴うことができるので、あなたは、ループ内で放浪のVMを設定へたいとvagrantfileへの利用可能な開発例を示します。ここでは、vm defineに "--cpuset"設定を追加することができます。

# -*- mode: ruby -*- 
# vi: set ft=ruby : 
# read vm and chef configurations from JSON files 
nodes_config = (JSON.parse(File.read("nodes.json")))['nodes'] 
VAGRANTFILE_API_VERSION = "2" 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    nodes_config.each do |node| 
    node_name = node[0] # name of node 
    node_values = node[1] # content of node 
      # puts node_name 
    # puts node_values['box'] 
    config.vm.define node_name do |config| 
     config.vm.box = node_values['box'] 
     config.vm.hostname = node_name 
     config.vm.network :private_network, ip: node_values['ip'] 
        config.vm.provider :virtualbox do |vb| 
      vb.customize ["modifyvm", :id, "--memory", node_values['memory']] 
      vb.customize ["modifyvm", :id, "--name", node_name] 
     end 
    end 
end 

nodes.json

はVMを定義するために、あなたは私が間違った場所で探していた、最終的にはあなたの

{ 
    "nodes": { 
    "jenkins.example.com": { 
     "info": "jenkins master server", 
     "box": "../Vgrant-boxes/centos65_virtualbox_50G.box", 
     "ip": "192.168.35.101", 
     "ports": [], 
     "memory": 512 
    }, 
    "node01.example.com": { 
     "info": "tomcat app host server", 
     "box": "../Vgrant-boxes/centos65_virtualbox_50G.box", 
     "ip": "192.168.35.121", 
     "ports": [], 
     "memory": 512 
    }, 
    "node02.example.com": { 
     "info": "jboss app host server", 
     "box": "../Vgrant-boxes/centos65_virtualbox_50G.box", 
     "ip": "192.168.35.122", 
     "ports": [], 
     "memory": 512 
    }, 
    "node03.example.com": { 
     "info": "oracle xe server", 
     "box": "../Vgrant-boxes/centos65_virtualbox_50G.box", 
     "ip": "192.168.35.123", 
     "ports": [], 
     "memory": 512 
    }, 
    "node04.example.com": { 
     "info": "artifactory server", 
     "box": "../Vgrant-boxes/centos65_virtualbox_50G.box", 
     "ip": "192.168.35.124", 
     "ports": [], 
     "memory": 512 
    } 
    } 
} 
+0

コードは次のようにされて終わりました。 Vagrantのドキュメントによると、これらの引数はconfig.vm.provisionコマンドを使って渡されますが、使用方法がわかりません。 –

+0

@LuisCarlosJersakシェフのレシピをプロビジョニングするために使用した[This](https://github.com/cloudhuang/vagrant-ci-env/blob/master/Vagrantfile)を参照することもできます。 –

関連する問題