虚拟机打包重新部署全过程详细说明

来源:互联网 发布:手机淘宝如何打造爆款 编辑:程序博客网 时间:2024/06/07 01:10
环境说明:
宿主主机操作系统: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 目录下;

下面以ibm的openchain为例说明如何手动挂载

主机上要共享的文件目录                                                 对外共享的名称

/home/workspace                                                              openchain

/home/go/src/github.com/openblockchain/obc-peer   opt_gopath_src_github.com_openblockchain_obc-peer

/home/workspace/obc-dev-env                                       vagrant


虚拟机上创建3个挂载点可以和主机上的共享名称不一致

sudo mkdir -p /openchain 

sudo mkdir -p /vagrant

sudo mkdir -p /opt/gopath/src/github.com/openblockchain/obc-peer

在虚拟机上mount共享名称

mount  -t   vboxsf    openchain  /openchain

 mount .vboxsf    vagrant     /vagrant

mount.vboxsf opt_gopath_src_github.com_openblockchain_obc-peer /opt/gopath/src/github.com/openblockchain/obc-peer

mount  mount.vboxsf 2种命令都可以.

0 0