2016-04-20 43 views
1

我有一个流浪汉在本地工作,但我必须把它放在公司的服务器上,让我可以访问虚拟机。我可以通过SSH访问此虚拟机,但是如何转移我的本地流浪虚拟机?如何将我的流浪本地虚拟机导出到公司服务器上的虚拟机上?

我在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 

回答

0

流浪本身准备在本地的VM(网络,IP地址,等等等等on),但已经在贵公司提供的VM中配置。我通常做的是直接在外部(或真实)虚拟机中运行脚本(例如sh)。您还可以在VM中安装一些供应工具(例如puppet)并运行Vagrantfile中包含的脚本。如果你可以在这里发布Vagrantfile,这会有很大的帮助。

+0

谢谢, 所以我必须导入我的vagranFile在真正的虚拟机? – glemoulant

+0

我不确定我是否理解,我的项目位于本地虚拟机的taiga-vagrant文​​件中。你认为这将导致这个文件+真正的虚拟机上的流浪文件? – glemoulant

+0

不,Vagrantfile用于在VirtualBox中创建本地虚拟机。正如我之前提到的,您需要直接在创建的外部VM中执行shell命令。这是Vagranfile - > File.join(ROOT_PATH,“scripts”),“provision.sh”中的关键部分,我想包括安装taiga的步骤。将scripts/provision.sh文件复制到新VM并执行它(可能需要一些预配置) –