本文主要介紹如何使用vagrant
配合virtualbox
快速搭建實驗環境。 virtualbox
是一個開源跨平臺虛擬機管理軟件,功能相似收費的vmware
vagrant
是一個開源的虛擬機配置編排軟件,能夠在命令行快速啓動管理虛擬機。node
相關資源的百度雲下載連接 連接:https://pan.baidu.com/s/1nt_b96SEOIIWl2gIrabPpg 密碼:6c3dweb
1.安裝virtualbox
docker
官方下載
virtualbox
對應平臺的軟件包安裝shell
2.安裝vagrant
windows
官方下載
vagrant
對應平臺的軟件包安裝,因爲官方網站在國外,可能下載比較慢。centos
3.設置virtualbox
虛擬機存方目錄ruby
# 默認狀況下 virtualbox 啓動虛擬機會存放在用戶的家目錄裏
# windows 下C盤可能太小,須要設置特定目錄存儲虛擬機
VBoxManage setproperty machinefolder D:\virtualbox
VBoxManage list systemproperties | grep machine
複製代碼
1.下載導入相關box網絡
# 因爲須要從國外拉取box,可能會很慢。推薦使用我存儲在百度雲的box
# 導入box
vagrant box add centos-7.4-base centos-7.4-base.box
vagrant box list
複製代碼
2.啓動單機ssh
mkdir single && cd single
cat >Vagrantfile<<EOF
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |config|
config.vm.box = "centos-7.4-base"
config.vm.hostname = "will"
config.ssh.insert_key = false
# 指定CPU和內存大小
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
v.customize ["modifyvm", :id, "--name", "will"]
end
# 配置網絡
config.vm.network "private_network", ip: "11.11.11.111"
# config.vm.network "private_network", ip: "192.168.22.10"
# 配置啓動後的操做
config.vm.provision "shell", inline: <<-SHELL
hostname
SHELL
end
EOF
# 啓動
vagrant up
複製代碼
3.啓動多主機ide
mkdir double && cd double
cat >Vagrantfile<<EOF
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |config|
config.vm.define "web" do |web|
web.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
end
web.vm.box = "centos-6.9"
web.vm.hostname = "web"
web.vm.network "private_network", ip: "11.11.11.11"
end
config.vm.define "db" do |db|
db.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
end
db.vm.box = "centos-6.9"
db.vm.hostname = "db"
db.vm.network "private_network", ip: "11.11.11.22"
end
end
EOF
# 啓動
vagrant up
複製代碼
3.啓動集羣
mkdir cluster && cd cluster
cat >Vagrantfile<<EOF
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |config|
(1..6).each do |i|
config.vm.define "lab#{i}" do |node|
node.vm.box = "centos-7.4-docker-17"
node.ssh.insert_key = false
node.vm.hostname = "lab#{i}"
node.vm.network "private_network", ip: "11.11.11.11#{i}"
node.vm.network "private_network", ip: "11.11.12.11#{i}"
node.vm.provision "shell",
inline: "echo hello from node #{i}"
node.vm.provider "virtualbox" do |v|
v.cpus = 4
v.customize ["modifyvm", :id, "--name", "lab#{i}", "--memory", "2048"]
end
end
end
end
EOF
# 啓動
vagrant up
複製代碼
4.鏈接虛擬機
# 通常狀況下虛擬機ssh鏈接用戶名爲 vagrant
# 通常狀況下都不支持 密碼登陸, 能夠登陸以後自行配置支持密碼登陸
# 鏈接的sshkey存儲在用戶家目錄下 .vagrant.d 目錄下
# C:\Users\will\.vagrant.d\insecure_private_key
複製代碼
如下命令後面均可以接虛擬機名,只對指定虛擬機做操做
啓動虛擬機
暫停虛擬機
關閉虛擬機
刪除虛擬機
存儲快照
恢復快照