【问题标题】:How to export my vagrant local VM to a VM which is on my company server?如何将我的流浪本地虚拟机导出到我公司服务器上的虚拟机?
【发布时间】:2016-04-20 10:11:08
【问题描述】:

我有一个 vagrant 在本地工作的虚拟机,但我必须把它放在公司的服务器上,这样我才能访问虚拟机。我可以通过 SSH 访问这个虚拟机,但是如何转移我的本地 vagrant 虚拟机呢?

我在 windows 上工作,虚拟机在 Ubuntu 上

谢谢

流浪文件:

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    require "./source.rb"

    ROOT_PATH = File.dirname(__FILE__)

VAGRANTFILE_API_VERSION = "2"

def configure_extra(config)
end

def configure(config)
  config.vm.box = "trusty64"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  config.vm.network :forwarded_port, host: 8000, guest: 8000
  config.vm.network :forwarded_port, host: 9001, guest: 9001

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # If true, then any SSH connections made will enable agent forwarding.
  # Default value: false
  config.ssh.forward_agent = true

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  config.vm.synced_folder "./data", "/home/vagrant/data"

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  config.vm.provider "virtualbox" do |vb|
    # Boot with headless mode
    vb.gui = false

    host = RbConfig::CONFIG['host_os']

    # Giving a quarter of system memory to VM and access to all available cpu cores
    if host =~ /darwin/
      cpus = `sysctl -n hw.ncpu`.to_i
      # sysctl returns Bytes, converting to MB...
      mem = `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 4
    elsif host =~ /linux/
      cpus = `nproc`.to_i
      # meminfo returns KB, converting to MB...
      mem = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 4
    else
      # hardcoding values for windows...
      cpus = 2
      mem = 1024
    end

    vb.customize ["modifyvm", :id, "--memory", mem]
    vb.customize ["modifyvm", :id, "--cpus", cpus]
  end

  # Provisioning
  config.vm.provision "shell" do |shell|
    vagrant_shell_scripts_configure(
      shell,
      File.join(ROOT_PATH, "scripts"),
      "provision.sh",
      {}
    )
  end
end

# Look for a Vagrantfile.local to load
local_vagrantfile = "#{__FILE__}.local"
if File.exists?(local_vagrantfile)
  eval File.read(local_vagrantfile)
end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  configure config
  configure_extra config
end

【问题讨论】:

    标签: windows vagrant ubuntu-14.04 virtualbox


    【解决方案1】:

    Vagrant 自己在本地准备 VM(网络、IP 等),但这已经在您公司提供的 VM 中进行了配置。我通常做的是直接在外部(或真实)VM 中运行脚本(例如 sh)。您还可以在 VM 中安装一些配置工具(例如 puppet)并运行 Vagrantfile 中包含的脚本。如果您可以在此处发布 Vagrantfile,这将有很大帮助。

    【讨论】:

    • 谢谢,所以我必须在真正的 VM 上导入我的 vagranFile ?
    • 我不确定我是否理解,我的项目位于本地 VM 的 taiga-vagrant 文件中。您认为在真实 VM 上导入此文件 + vagrant 文件会起作用吗?
    • 不,Vagrantfile 用于在 VirtualBox 中创建本地 VM。正如我之前提到的,您需要在创建的外部 VM 中直接执行 shell 命令。这是 Vagranfile -> File.join(ROOT_PATH, "scripts"), "provision.sh" 中的关键部分,我想它包括安装 taiga 的步骤。将 scripts/provision.sh 文件复制到新的 VM 并执行(可能需要一些预配置)
    猜你喜欢
    • 2020-07-25
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多