Vagrant+Packer制作VirtualBox虚拟机镜像

 1. 安装vagrant

下载地址: https://www.vagrantup.com/downloads.html

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。

拿VirtualBox举例,VirtualBox会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。

 

 2. 安装VirtualBox 

VirtualBox 是一款开源虚拟机软件。

类似VMware。

3. 下载安装packer
下载地址: https://www.packer.io/downloads.html
 解压得到packer文件(Windows版的是一个EXE文件)

packer用于从单一配置来源为多平台创建相同的机器映像。


4. 下载packer 虚拟机模板文件并解压

下载地址:https://github.com/boxcutter    该路径下有很多不同系统的虚拟机模板文件

 比如下载centos : https://github.com/boxcutter/centos

 这里下载的是一个名为packer_centos-master的文件夹。

 

 


 5. 将packer和操作系统镜像iso文件复制到centos-master目录下

 

 

 还有操作系统的镜像文件ISO文件。复制到centos-master目录下

 

 6.配置centos7.json文件

  "iso_url": 这个路径也可以写服务上的路径。类似“http://192.168.0.123/xxxx.iso”

 iso_checksum:这个在镜像文件(ISO文件)下载的页面下载相关的TXT文件,将sha256复制过来即可。

 

7.利用packer制作vagrant镜像文件

通过packer创建vagrant镜像文件。(可以通过很多方法创建vagrant镜像文件,也就是vagrant box文件)

$ packer build -only=virtualbox-iso -var-file=centos75.json centos.json

在packer目录下打开cmd。

命令执行成功后会生成一个box文件

 

 

 

指明类型为virtualbox:
$ packer build -only=virtualbox-iso -var-file=centos7.json centos.json

# 注意,在此命令启动后,会调用virtualBox的启动虚机。
# 此时一定不要去点击该虚机。它会自动向下执行!!!
# 如果人工干预了,实测系统会中断在那里。而且进入的是图形模式
# 你只有中断了重来一遍

# 如果你没有指定virtualbox,则会生成多个虚机平台的box

 

vagrant box文件可以不自己创建,在官网下载。地址如下:

https://app.vagrantup.com/boxes/search

 

8. vagrant添加镜像并启动

添加镜像(vagrant box add 镜像名称 镜像文件路径)

$ vagrant box add centos7 centos7.box

 

 

 将box文件复制到vagrant.exe同一目录下,不然有时候可能找不到box文件。(不需要,写好详细路径即可。)

 

新建实例目录并初始化

$ mkdir centos7

$ cd centos7

$ vagrant init

 

 

 初始化后会自动生成Vagrantfile文件

 配置该vagrantfile文件后再启动镜像。

 

启动镜像

$ vagrant up 

 

 

 

暂停镜像

$ vagrant suspend

 

 

 

完全停止镜像(会从VirtualBox中清除该虚拟机实例)

$ vagrant destroy 

 

 

 

删除镜像(从box列表移除box)

$ vagrant box remove centos7(box文件名)

 

 

 

9. VagrantFile配

 

 

#指定虚拟机类型

config.vm.provider "virtualbox" do |vb|

#启动机器时是否启动virtual box GUI

vb.gui = true

 #指定虚拟机内存

vb.memory = "1024"

 

10.在不支持Packer的情况下可以通过VirtualBox创建实例再打包成Vagrant镜像

说明: 以下的操作步骤是在RedHat系列的操作系统上录制的,其他操作系统操作步骤类似,具体执行的命令可能不同 *

irtualBox安装虚拟机实例

安装过程中创建用户vagrant,密码vagrant

VirtualBox虚拟机配置

 

  • 右击虚拟机实例->设置->USB设备->不勾选启用USB控制器

  • 右击虚拟机实例->设置->网络->高级->端口转发,新增转发规则 名称:ssh,协议:TCP,主机IP:127.0.0.1,主机端口:22,子系统IP:10.0.2.15,子系统端口:22

  • 设置网络onboot=YES: $ vi /etc/sysconfig/network-script/ifcfg-eth0

  • 重启网络服务:$ service network restart

  • 设置sudo免密: $ echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers

  • 配置SSH免密登录:<pre>$ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys{VAGRANT_INSECURE_KEY}" > $SSH_USER_HOME/.ssh/authorized_keys$ chown -R vagrant:vagrant /home/vagrant/.ssh$ echo "UseDNS no" >> /etc/ssh/sshd_config$ echo "GSSAPIAuthentication no" >> /etc/ssh/sshd_config$ service sshd restart</pre>

  • 虚拟机安装VirtualBox增强功能<pre>$ wget http://download.virtualbox.org/virtualbox/5.2.30/VBoxGuestAdditions_5.2.30.iso$ sudo mkdir /media/VBoxGuestAdditions$ sudo mount -o loop,ro,exec VBoxGuestAdditions_5.2.30.iso /media/VBoxGuestAdditions$ sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run<!-- 如果以上步骤执行完成仍报错的话执行以下步骤 -->$ yum clean all$ yum update$ yum install kernel kernel-devel kernel-headers gcc make$ reboot$ cd /opt/VBoxGuestAdditions-*/init $ ./vboxadd setup$ reboot

$ rm VBoxGuestAdditions_5.2.30.iso$ sudo umount /media/VBoxGuestAdditions$ sudo rmdir /media/VBoxGuestAdditions

 

 

将虚拟机实例打包成vagrant box文件

 

vagrant package --base centos600x86 --output centos600x86.box

 

4. vagrant添加镜像并启动

$ vagrant box add rhel6 rhel6.box

$ mkdir rhel6

$ cd rhel6

$ vagrant init rhel6

$ vagrant up

 

posted on 2019-10-18 10:19  yanmay  阅读(538)  评论(0编辑  收藏  举报

导航