How do I associate a Vagrant project directory with an existing VirtualBox VM?

后端 未结 10 1795
梦如初夏
梦如初夏 2020-12-02 03:57

Somehow my Vagrant project has disassociated itself from its VirtualBox VM, so that when I vagrant up Vagrant will import the base-box and create a new virtual

相关标签:
10条回答
  • 2020-12-02 04:24

    For multi-VM setups, it would look like this:

    {
       "active":{
            "web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
            "db":"13503bc5-76b8-4c26-95c4-32435b372212"
       }
    }
    

    You can get the vm names from the Vagrantfile used to create those VMs. Look for this line:

    config.vm.define :web do |web_config|
    

    "web" is the name of the vm in this case.

    0 讨论(0)
  • 2020-12-02 04:25

    In Vagrant 1.9.1:

    I had a VM in Virtual Box named 'Ubuntu 16.04.1' so I packaged it as a vagrant box with:

    vagrant package --base "Ubuntu 16.04.1"
    

    responds with...

    ==> Ubuntu 16.04.1: Exporting VM...
    ==> Ubuntu 16.04.1: Compressing package to: blah blah/package.box
    
    0 讨论(0)
  • The solution with upper version is quite the same.

    But first you need to launch the .vbox file by hand so that it appear in VBoxManage list vms

    Then you can check the .vagrant/machines/default/virtualbox/id to check that the uuid is the right one.

    0 讨论(0)
  • 2020-12-02 04:32

    This is modified from @Petecoop's answer.

    Run vagrant halt if you haven't shut down the box yet.

    Then list your virtualboxes: VBoxManage list vms

    It'll list all of your virtualboxes. Identify the box you want to revert to and grab the id between the curly brackets: {}.

    Then edit the project id file: sudo nano .vagrant/machines/default/virtualbox/id (from the project directory)

    Replace it with the id you copied from the list of VBs.

    Try vagrant reload.

    If that doesn't work and gets hung on SSH authorization (where I stumbled), copy the insecure public key from the vagrant git. Replace the content of /.vagrant/machines/default/virtualbox/private_key. Backup the original of course: cp private_key private_key-bak.

    Then run vagrant reload. It'll say it's identified the insecure key and create a new one.

    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
    ==> default: Machine booted and ready!
    

    You should be all set.

    0 讨论(0)
提交回复
热议问题