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
将box文件复制到vagrant.exe同一目录下,不然有时候可能找不到box文件。(不需要,写好详细路径即可。)
新建实例目录并初始化
$ mkdir centos7
$ cd centos7
$ vagrant init
初始化后会自动生成Vagrantfile文件
配置该vagrantfile文件后再启动镜像。
启动镜像
暂停镜像
$ vagrant suspend
完全停止镜像(会从VirtualBox中清除该虚拟机实例)
删除镜像(从box列表移除box)
#指定虚拟机类型
config.vm.provider "virtualbox" do |vb|
#启动机器时是否启动virtual box GUI
vb.gui = true
#指定虚拟机内存
vb.memory = "1024"
-
-
右击虚拟机实例->设置->网络->高级->端口转发,新增转发规则 名称: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 package --base centos600x86 --output centos600x86.box
$ vagrant box add rhel6 rhel6.box
$ mkdir rhel6
$ cd rhel6
$ vagrant init rhel6
$ vagrant up