0%

Vagrant简单使用

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。
它使用Oracle的开源VirtualBox虚拟化系统,使用Chef创建自动化虚拟环境。

使用vagrant搭建开发环境优势:

  • 运行完全隔离;
  • 熟悉linux常用操作;
  • GUEST改时间不影响HOST时间

安装

需要软件:

  • GIT
  • VirtualBox-5.1.4-110228-Win
  • vagrant_1.8.5.msi
  • BOX文件

the git root\usr\bin加入环境变量, 确保ssh命令可用

Virtualbox安装成功后,执行:
VBoxManage.exe setextradata global "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

设置Virtualbox不同步系统时间

创建box

1
2
3
rem centos7是自定义名字
rem E:\centos_7.box是box文件路径
vagrant box add centos7 E:\centos_7.box

项目

1
2
3
4
rem 切换到项目目录(trunk或者qqjy_cn_版本号)
cd project_path
rem 创建开发环境
vagrant init centos7

在生成Vagrantfile文件中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
config.ssh.username = "root"
config.ssh.password = "vagrant"
# 端口映射
config.vm.network "forwarded_port", guest: 8101, host: 47010
# 共享文件夹
config.vm.synced_folder "./", "/data/qqjy"
# 执行脚本
# 需要--provision参数
config.vm.provision "shell", inline: <<-SHELL
touch /root/.db_status
VER=$(cat /root/.db_status)
if [[ "$VER" == "" ]]; then
echo "deal" > /root/.db_status
cd /data/qqjy/db_script && mysql -uroot -p123456 -e "create database qqjy_admin; use qqjy_admin; source admin.sql;"
fi
cd /data/qqjy/script && ./server_ctl.sh make && ./server_ctl.sh start_all
SHELL

多节点配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

(1..3).each do |i|
config.vm.define "node#{i}" do |node|
node.vm.box = "centos7"

node.ssh.username = "root"
node.ssh.password = "vagrant"

node.vm.hostname = "node#{i}"
node.vm.network :forwarded_port, guest: 22, host: "2022#{i}"

node.vm.provider "virtualbox" do |v|
v.name = "node#{i}"
if i == 1
v.memory = 512
else
v.memory = 512
end
v.cpus = 1
end
end
end
end

使用vagrant up --provision启动

其他

  1. 导出box
    打开virtualbox,查看box名称,然后使用:
    vagrant package --output centos7_64_1.box --base server_default_1472191933425_51781
    导出自己的BOX

参考文档

  1. https://wenku.baidu.com/view/a14d3fc5a1c7aa00b52acb38.html