ฉันจะเพิ่ม RAM และตั้งค่าเครือข่ายเฉพาะโฮสต์ใน Vagrant ได้อย่างไร


95

ฉันต้องการเพิ่ม RAM เป็นอย่างน้อย 1 GB และฉันต้องการกำหนดค่าเครือข่าย "โฮสต์เท่านั้น" ให้ใช้ "199.188.44.20"

นี่คือของฉันVagrantfile:

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

Vagrant::Config.run do |config|

    config.vm.customize ["modifyvm", :id, "--memory", 1024]

    config.vm.network :hostonly, "199.188.44.20"

    config.vm.define :web do |web_config|
        web_config.vm.box = "lucid32"
        web_config.vm.forward_port 80, 8080

        web_config.vm.provision :puppet do |puppet|
            puppet.manifests_path = "manifests"
            puppet.manifest_file = "lucid32.pp"
        end
    end

    config.vm.define :web2 do |web2_config| 
        web2_config.vm.box = "lucid32"
        web2_config.vm.forward_port 80, 8081

        web2_config.vm.provision :puppet do |puppet|
            puppet.manifests_path = "manifests"
            puppet.manifest_file = "myweb.pp"
        end
    end
end

อย่างไรก็ตามเมื่อฉันเรียกใช้vagrant upฉันได้รับ:

VM ล้มเหลวในการคงอยู่ในสถานะ "กำลังทำงาน" ขณะพยายามบูต โดยปกติเกิดจากการกำหนดค่าผิดพลาดหรือระบบโฮสต์เข้ากันไม่ได้ โปรดเปิด VirtualBox GUI และพยายามบูตเครื่องเสมือนด้วยตนเองเพื่อรับข้อความแสดงข้อผิดพลาดเพิ่มเติม

และฉันได้รับconnection refuseข้อผิดพลาดเมื่อพยายามเข้าสู่ระบบ VM


การเพิ่ม RAM อาจช่วยได้เมื่อคุณได้รับข้อความ "Killed"
wieczorek1990

คำตอบ:


64

คุณสามารถแก้ไขคุณสมบัติ VM ต่างๆได้โดยเพิ่มการกำหนดค่าต่อไปนี้ ( ดูเอกสาร Vagrant สำหรับข้อมูลเพิ่มเติมเล็กน้อย ):

  # Configure VM Ram usage
  config.vm.customize [
                        "modifyvm", :id,
                        "--name", "Test_Environment",
                        "--memory", "1024"
                      ]

คุณสามารถรับคุณสมบัติที่คุณต้องการเปลี่ยนแปลงจากเอกสารสำหรับอ็อพชันบรรทัดคำสั่ง VirtualBox:

เอกสารจรจัดมีส่วนที่เกี่ยวกับวิธีการเปลี่ยนที่อยู่ IP:

Vagrant::Config.run do |config|
  config.vm.network :hostonly, "192.168.50.4"
end

นอกจากนี้คุณสามารถปรับโครงสร้างการกำหนดค่าได้เช่นนี้การสิ้นสุดคือการสิ้นสุดโดยไม่ต้องซ้อนกัน ง่ายกว่านี้

config.vm.define :web do |web_config|
    web_config.vm.box = "lucid32"
    web_config.vm.forward_port 80, 8080
end
web_config.vm.provision :puppet do |puppet|
    puppet.manifests_path = "manifests"
    puppet.manifest_file = "lucid32.pp"
end

144

หากต้องการเพิ่มหน่วยความจำหรือจำนวน CPU เมื่อใช้ Vagrant 2 ให้เพิ่มสิ่งนี้ใน Vagrantfile ของคุณ

Vagrant.configure("2") do |config|
    # usual vagrant config here

    config.vm.provider "virtualbox" do |v|
        v.memory = 1024
        v.cpus = 2
    end
end

14
ขอบคุณ! อย่าลืมทำvagrant haltและvagrant upรีสตาร์ทเครื่องด้วยการตั้งค่าใหม่ vagrant suspendมันไม่เพียงพอที่จะทำ อาจเป็นประโยชน์สำหรับคน (* ไอ *) ที่ควรรู้ ...
larsr

41
คุณสามารถทำได้เช่นกันvagrant reload
Matt Frear

1
เพื่อวัตถุประสงค์ในการอ้างอิง: docs.vagrantup.com/v2/virtualbox/configuration.html
Adam Michalik

คุณสามารถเขียนด้วยวิธีนี้ได้เช่นกัน
config.vm.provider

96

เนื่องจากVagrant 1.1 customizeตัวเลือกได้รับเฉพาะ VirtualBox

วิธีที่ทันสมัยในการทำคือ:

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

1
คุณยังสามารถใช้vagrant up --provider=virtualboxต่อdocs.vagrantup.com/v2/providers/basic_usage.html
user456584

2
ตามวิธีที่ทันสมัยคุณหมายถึงVAGRANTFILE_API_VERSION = "2"ตามที่อธิบายไว้ในเอกสาร Vagrant
AlexT

7

ฉันไม่สามารถรับคำตอบใด ๆ เหล่านี้ในการทำงาน นี่คือสิ่งที่ฉันวางไว้ที่ด้านบนสุดของ Vagrantfile ก่อนVagrant::Config.run doบล็อก:

Vagrant.configure("2") do |config|
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
  end
end

ฉันสังเกตว่ารูปแบบการเข้าถึงทางลัด "vb.memory = 1024" ดูเหมือนจะใช้ไม่ได้


3

คุณสามารถเพิ่ม RAM ของ VM ของคุณได้อย่างง่ายดายโดยการแก้ไขคุณสมบัติหน่วยความจำของส่วน config.vm.provider ในไฟล์ vagrant ของคุณ

config.vm.provider "virtualbox" do |vb|
 vb.memory = "4096"
end

สิ่งนี้จะจัดสรร RAM ประมาณ 4GB ให้กับ VM ของคุณ คุณสามารถเปลี่ยนแปลงได้ตามความต้องการของคุณ ตัวอย่างเช่นการตั้งค่าต่อไปนี้จะจัดสรร RAM 2GB ให้กับ VM ของคุณ

config.vm.provider "virtualbox" do |vb|
 vb.memory = "2048"
end

ลองลบconfig.vm.customize ["modifyvm", :id, "--memory", 1024]ไฟล์ในไฟล์ของคุณและเพิ่มโค้ดด้านบน

สำหรับการกำหนดค่าเครือข่ายให้ลองแก้ไขconfig.vm.network :hostonly, "199.188.44.20"ในไฟล์ของคุณเป็นconfig.vm.network "private_network", ip: "199.188.44.20"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.