环境说明:
宿主主机操作系统:linux操作系统(redhat6.5/centos7.2/debain8.5/ubuntu16.04)
虚拟机工具:VirtualBox_5.0.24 x86_64 //手动配置安装虚拟机,安装源是iso文件
虚拟机管理工具:vagrant_1.8.4_x86_64 //用命令安装虚拟机,安装源是box文件
宿主主机上安装的虚拟机操作系统:centos7.2/ubuntu16.04
box网址:
vagrantbox.es
sourceforge.net/projects/nrel-vagrant-boxes/files/
找到相应的系统的box,就可以通过vagrant快速部属。
部署打包步骤:
1.安装Virtualbox+Vagrant(略)
Virtualbox是开源的,现被Oracle收购
Vagrant支持Virtualbox,也支持VMvare虚拟机
2.添加Box源
vagrant box add <name, url, or path>
name就是将来部署的box名称;
url就是添加的准备导入的网络上的box安装包;
path就是本地服务器存放box的路径+安装包;
例如:vagrant box add centos6.7 https://sourceforge.net/projects/nrel-vagrant-boxes/files/CentOS-6.7-x86_64-v20151108.box //下载后添加到自己的box列表里;
例如:vagrant box add centos7.2 /home/box/CentOS-7.2-x86_64.box //box包可提前下载到本地;
3.查看box列表
vagrant box list //可看到上述2个虚拟机已在列表显示中
4.开始虚拟机运行
mkdir -p /home/centos7.2
cd /home/centos7.2
vagrant init centos7.2 //在当前目录下会生产Vagrantfile,可修改成自己虚拟机的配置如ip地址;
vagrant up //根据启动信息排队成功与否;
vagrant ssh //连接虚拟机,用户口令:vagrant/vagrant,本人的虚拟机开启了ssh,可直接连接;
5.制作自己的Box
虚拟机安装成功后,根据自己的需要可以选择安装数据库、app等开发应用环境,为了以后快速部属,或者团队开发,可通过vagrant打包发布给其他人使用;
vagrant package --output /home/box/CentOS-7.2-app.box --base centos7.2 //基于虚拟机centos7.2,在/home/box生成centos7.2的image包
重复上述的2和4就可以部属自己发布CentOS-7.2-app.box包;
注意:如果网络模式是 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:
rm -f /etc/udev/rule.d/70-persistent-net.rules
多台虚拟机部属:
在Vagrantfile设定文件里改成这样:
Vagrant.configure("2") do |config|
config.vm.define :openblockchain do |openblockchain|
openblockchain.vm.box = "CentOS-7.2-app"
openblockchain.vm.network :public_network, ip: "10.3.5.201"
end
config.vm.define :openchina do |openchina|
openchina.vm.box = "CentOS-7.2-app"
openchina.vm.network :public_network, ip: "10.3.5.202"
end
end
配置文件Vagrantfile说明:
Vagrant的网络有三种模式:
config.vm.network :forwarded_port, guest: 80, host: 8080 //将虚拟机中的80端口映射到宿主机对应的8080端口直接使用;
config.vm.network :private_network, ip: "192.168.1.100" //虚拟机可以访问外面,外面无法访问虚拟机;
config.vm.network :public_network //其他主机可以直接访问虚拟机;
目录映射:
config.vm.synced_folder "/wwwroot", "/www" //前面是宿主机绝对路径,后面是虚拟机路径; //默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录下;