2016-04-20 2 views
1

Ich habe eine VM mit Vagrant am lokalen arbeiten, aber ich muss es auf dem Server der Firma, die mir den Zugang zu einer VM gab. Ich kann dank SSH auf diese VM zugreifen, aber wie kann ich stattdessen meine lokale Vagrant-VM übertragen?Wie kann ich meine vagabundierende lokale VM auf eine VM exportieren, die sich auf meinem Unternehmensserver befindet?

ich an Fenstern und der VM arbeite sind auf Ubuntu

Dank

Vagrant Datei:

# -*- 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 

Antwort

0

Vagrant sich die VM vorbereiten lokal (Netzwerk, IP-Adressen, etc. und so on), aber dies ist bereits in der von Ihrem Unternehmen bereitgestellten VM konfiguriert. Normalerweise führe ich die Skripte (zum Beispiel sh) direkt in der externen (oder realen) VM aus. Sie können auch ein Bereitstellungstool (beispielsweise eine Puppe) in der VM installieren und die Skripts ausführen, die in Ihrer Vagrant-Datei enthalten sind. Wenn Sie hier die Vagrant-Datei posten können, würde das viel helfen.

+0

danke, Also muss ich meine VagranFile auf der realen VM importieren? – glemoulant

+0

Ich bin mir nicht sicher, ob ich verstehe, mein Projekt ist in Taiga-Vagrant-Datei meiner lokalen VM. Denkst du, es wird funktionieren, diese Datei + die Vagrant-Datei auf der realen VM zu importieren? – glemoulant

+0

Nein, die Vagrant-Datei wird verwendet, um die lokale VM in VirtualBox zu erstellen. Wie bereits erwähnt, müssen Sie die Shell-Befehle in der erstellten externen VM direkt ausführen. Dies ist der Schlüsselteil in der Vagrandatei -> File.join (ROOT_PATH, "scripts"), "provision.sh", der vermutlich die Schritte zur Installation von taiga beinhaltet. Kopieren Sie die Datei scripts/provision.sh auf die neue VM und führen Sie sie aus (vielleicht muss sie vorher konfiguriert werden) –

Verwandte Themen