![](/img/trans.png)
[英]Ruby: Transfer text from one file to another but unintentionally converts to Chinese?
[英]Transfer a file from one VM to another VM
問題出在subconfig1.vm.provision ...上,關於我應該如何進行的任何建議? 初始化VM后,Vagrant告訴我SSH無法完成該工作,因為連接被拒絕。 我可以完成這項工作,但是只能手動地插入密碼,這里的主要問題是如何超越密碼來自動進行此工作流程。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "Machine2" do |subconfig2|
subconfig2.vm.box = "ubuntu/trusty64"
subconfig2.vm.hostname = "Machine2"
subconfig2.vm.network :private_network, ip: "172.16.10.101"
subconfig2.vm.network "forwarded_port", guest: 80, host: 4445, host_ip: "127.0.0.1"
end
#config.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant/ssh"
config.vm.define "Machine1" do |subconfig1|
subconfig1.vm.box = "ubuntu/trusty64"
subconfig1.vm.hostname = "Machine1"
subconfig1.vm.network :private_network, ip: "172.16.10.100"
# subconfig1.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant"
subconfig1.vm.provision "shell", privileged: false, inline: <<-SHELL
touch vagrantvm1-info
ifconfig | grep "HWaddr" | cut -b 32-55 >> vagrantvm1-info
# ssh -o StrictHostKeyChecking=no vagrant@127.0.0.1 uptime
cp /vagrant/.vagrant/machines/Machine2/virtualbox/private_key ~/.ssh
scp -P 2222 -i ~/.ssh/private_key vagrant@127.0.0.1:/home/vagrant/vagrantvm1-info /home/vagrant
# ssh vagrant@172.16.10.101
# scp vagrant@172.16.10.101:/home/vagrant/vagrantvm1-info /home/vagrant
SHELL
end
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
# Customize the amount of memory on the VM:
vb.memory = "1024"
end
config.vm.provision "shell", privileged: false, inline: <<-SHELL
apt-get install -y avahi-daemon libnss-mdns
apt-get update
apt-get install -y apache2
SHELL
end
您需要傳遞私鑰,這樣您才能成功登錄。
通常,該文件位於.vagrant/machines/<machine_name>/provider/private_key
您還可以運行vagrant ssh-config
來找出所有機器都使用了哪個私鑰:
fhenri@machine:/Volumes/VM/vagrant/golang (master)$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Volumes/VM/vagrant/golang/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
在這種情況下,私鑰是/Volumes/VM/vagrant/golang/.vagrant/machines/default/virtualbox/private_key
由於要將虛擬機復制到虛擬機,因此原始虛擬機需要知道私鑰,以便將其連接到目標虛擬機。
使用文件配置程序或Shell腳本中的復制文件將用於登錄到目標VM的私鑰復制到原始VM中。
scp -i ~/.ssh/private_key \\ /home/vagrant/vagrantvm1-info \\ vagrant@172.16.10.101:/home/vagrant
我用來測試的更新后的Vagrantfile如下
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "Machine2" do |subconfig2|
subconfig2.vm.box = "ubuntu/trusty64"
subconfig2.vm.hostname = "Machine2"
subconfig2.vm.network :private_network, ip: "172.16.10.101"
subconfig2.vm.network "forwarded_port", guest: 80, host: 4445, host_ip: "127.0.0.1"
end
#config.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant/ssh"
config.vm.define "Machine1" do |subconfig1|
subconfig1.vm.box = "ubuntu/trusty64"
subconfig1.vm.hostname = "Machine1"
subconfig1.vm.network :private_network, ip: "172.16.10.100"
# subconfig1.vm.provision "file", source: "~/.vagrant/machines/Machine2/virtualbox/private_key", destination: "/home/vagrant"
subconfig1.vm.provision "shell", privileged: false, inline: <<-SHELL
touch vagrantvm1-info
ifconfig | grep "HWaddr" | cut -b 32-55 >> vagrantvm1-info
# ssh -o StrictHostKeyChecking=no vagrant@127.0.0.1 uptime
cp /vagrant/.vagrant/machines/Machine2/virtualbox/private_key ~/.ssh && chmod 0644 ~/.ss/private_key
# make sure to accept the server keys
ssh-keyscan 172.16.10.101 >> ~/.ssh/known_hosts
scp -i ~/.ssh/private_key /home/vagrant/vagrantvm1-info vagrant@172.16.10.101:/home/vagrant
# ssh vagrant@172.16.10.101
# scp vagrant@172.16.10.101:/home/vagrant/vagrantvm1-info /home/vagrant
SHELL
end
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
#vb.gui = true
# Customize the amount of memory on the VM:
vb.memory = "1024"
end
config.vm.provision "shell", inline: <<-SHELL
apt-get install -y avahi-daemon libnss-mdns
apt-get update
apt-get install -y apache2
SHELL
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.