2015-01-10 1 views
0

Vagrant를 사용하여 다중 환경 시스템을 만들려고합니다. 여기에 구성하려고하는 VagrantFile이 있습니다. 개인 네트워크를 통해 연결된 7 대의 컴퓨터를 인스턴스화하고 싶습니다. 이 모든 디스크에는 두 개의 디스크가 있어야합니다. 방글라데시 설명서에서 createhd 명령을 노출하는 VBoxManage를 발견했습니다. 이 명령을 어디에 두어야하는지 잘 모르겠습니다. 모든 머신 블록 또는 내부의 가상 공급자 블록 구성 내부에?Vagrant에서 여러 환경 컴퓨터에 대해 두 개의 디스크를 만듭니다.

Vagrant.configure(2) do |config| 

    config.vm.provision "shell", inline: "echo OpenStack" 

    config.vm.box = "ubuntu/trusty64" 

    config.vm.provider "virtualbox" do |vb| 
     vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "1"] 
    end 

    config.vm.define "machine1" do |machine1| 

     machine1.vm.hostname = "machine1" 

     machine1.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine1_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine1_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine1_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine1_disk1.vdi"] 
     end 

     machine1.vm.network "private_network", ip: "192.168.10.10" 
     machine1.vm.network "private_network", ip: "192.168.10.15" 
    end 

    config.vm.define "machine2" do |machine2| 

     machine2.vm.hostname = "machine2" 

     machine2.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine2_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine2_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine2_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine2_disk1.vdi"] 
     end 

     machine2.vm.network "private_network", ip: "192.168.10.20" 
     machine2.vm.network "private_network", ip: "192.168.10.25" 
    end 

    config.vm.define "machine3" do |machine3| 

     machine3.vm.hostname = "machine3" 

     machine3.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine3_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine3_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine3_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine3_disk1.vdi"] 
     end 

     machine3.vm.network "private_network", ip: "192.168.10.30" 
    end 

    config.vm.define "machine4" do |machine4| 

     machine4.vm.hostname = "machine4" 

     machine4.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine4_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine4_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine4_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine4_disk1.vdi"] 
     end 

     machine4.vm.network "private_network", ip: "192.168.10.40" 
    end 

    config.vm.define "machine5" do |machine5| 

     machine5.vm.hostname = "machine5" 

     machine5.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine5_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine5_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine5_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine5_disk1.vdi"] 
     end 

     machine5.vm.network "private_network", ip: "192.168.10.50" 
    end 

    config.vm.define "machine6" do |machine6| 

     machine6.vm.hostname = "machine6" 

     machine6.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine6_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine6_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine6_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine6_disk1.vdi"] 
     end 

     machine6.vm.network "private_network", ip: "192.168.10.60" 
    end 

    config.vm.define "machine7" do |machine7| 

     machine7.vm.hostname = "machine7" 

     machine7.vm.provider "virtualbox" do |vb| 
      vb.customize ["createhd", "--filename", "machine7_disk0", "--size", "4096"] 
      vb.customize ["createhd", "--filename", "machine7_disk1", "--size", "4096"] 
      vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "machine7_disk0.vdi"] 
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "2", "--type", "hdd", "--medium", "machine7_disk1.vdi"] 
     end 

     machine7.vm.network "private_network", ip: "192.168.10.70" 
    end 

끝에 모든 사용자 지정의

답변

3

먼저, createhd 같은 공급자에 추가해야합니다. 당신이 설정 공급자에 추가하는 경우

config.vm.provider "virtualbox" do |vb| 
    config.vm.customize ['createhd', '--filename', file_to_disk, '--size', some_size] 
    config.vm.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk] 
end 

그것은 전역으로 정의되며, 이러한 매개 변수는 모든 시스템에서 사용됩니다. (확실하지 않음) 결과로 디스크가 하나만 만들어지고 정의 된 컴퓨터간에 공유됩니다.

각 기계마다 제공 업체를 정의해야한다고 생각합니다. 예 :

config.vm.define "machine4" do |machine4| 
    machine4.vm.network "private_network", ip: "192.168.10.40" 
    machine4.vm.provider :virtualbox do |vb| 
     vb.customize ["createhd", "--filename", "m4_disk0", "--size", "2048"] 
     vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "hdd", "--medium", "m4_disk0.vdi"] 

    end 
end 

Vagrantfile을 참조하십시오.

+0

구성 파일을 만들려고했지만 저장소 컨트롤러에 대한 몇 가지 문제가 있습니다. 얼마나 많은 컨트롤러를 만들어야합니까? 구성 파일을 편집했습니다 – Mazzy

+0

이 오류가 발생합니다 : VBoxManage : 오류 :이 유형의 저장소 컨트롤러가 너무 많습니다. – Mazzy

4

글쎄, 정말로 여분의 저장소를 만들고 연결하기를 원할 것입니다. .VDI 파일이 이미 (이 이미 첨부되어 있기 때문에) 위의 허용 된 대답으로 인해 후속 실행시 오류가 발생할 것으로 생각됩니다.

이 작업을 수행하는 방법은 VDI 파일이 File.exist? 인 호스트 디스크에 있는지, 즉 이미 만들어져 있는지를 테스트하는 것입니다.

멀티 기계

, 이것은 당신이 원하는 것을 할 수 있습니다 '. 이것은 나를 위해 작동'

(1..3).each do |i| 
    config.vm.define "node-#{i}" do |node| 
     node.vm.network "private_network", ip: "192.168.200.#{i}" 
     file_for_disk = "./large_disk#{i}.vdi" 
     node.vm.provider "virtualbox" do |v| 
      unless File.exist?(file_for_disk) 
       v.customize ['createhd', 
          '--filename', file_for_disk, 
          '--size', 80 * 1024] 
       v.customize ['storageattach', :id, 
          '--storagectl', 'SATAController', 
          '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_for_disk] 
      end 
     end 
    end 
end 
0

'내가이 같은 방황 초보자가 나를 좋아할 수도 있기 때문에 이것을 공유한다고 생각했습니다.'

Vagrant.configure("2") do |config| 
file_to_disk = '../second_disk.vdi' 
# create CrushFTP nodes 
    (1..2).each do |i| 
    config.vm.define "cftpnode#{i}" do |node| 
     node.vm.customize ['createhd', '--filename', file_to_disk, '--size', 500 * 1024] 
     node.vm.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk] 
     node.vm.box = "bento/centos-7.2" 
     node.vm.hostname = "cftpnode#{i}" 
     node.vm.network :private_network, ip: "192.168.0.1#{i}" 
     node.vm.provider "virtualbox" do |vb| 
      vb.memory = "1024" 
        end 
     node.vm.provision :shell, path: "bootstrap-node.sh" 
    end 
    end 
end 
관련 문제