本文主要介绍如何使用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
复制代码
如下命令后面均可以接虚拟机名,只对指定虚拟机做操做
启动虚拟机
暂停虚拟机
关闭虚拟机
删除虚拟机
存储快照
恢复快照