• 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

     

  • 相关阅读:
    python3+request接口自动化框架
    类型转换函数
    操作符重载(三)
    操作符重载(二)
    操作符重载(一)
    时间获取函数
    文件和目录
    Linux五种IO模型
    类中的函数重载
    系统调用IO和标准IO
  • 原文地址:https://www.cnblogs.com/mayyan/p/11696814.html
Copyright © 2020-2023  润新知