天天看点

vagrant使用笔记

本文档为我学习vagrant的笔记,如您有疑问或建议,请邮件至 : [email protected]

vagrant和Docker技术存在本质上的区别,具体请⾃⾏google.

vagrant是什么?能做什么?有什么优缺点?请自行google,本文只提供如何用vagrant制作自己的box文件,以及基本使用

vagrant可以解决的问题:(不排除别的技术或⼯具也可以解决)

  • 开发团队需要完全统⼀的开发环境,硬盘分区?系统版本?软件环境?
  • 开发⼈员需要快速拥有本地开发环境,⽽不是通过账号密码登录服务器开发或

    者⾃⾏安装虚拟机

  • 开发⼈员需要在⼏分钟内迅速产⽣纯净的⼀致的⽣产环境,精确到系统所安装

    的每⼀个包的版本及配置,⽤以测试程序或代码

  • 开发⼈员对不同的开发环境进⾏个性化定制
  • 等等很多,我⽬前⽤到的只有上述

vagrant⽀持的操作系统

Windows、Linux、MacOS

⽆论在哪个平台,所抽取制作的box⽂件,在所有平台通⽤

使⽤vagrant所需的环境

VirtualBox 及 VirtualBox Extension Pack : https://www.virtualbox.org/

Vagrant : https://www.vagrantup.com/

(vagrant 也⽀持vmware,需要请⾃⾏google)

vagrant box制作(以虚拟机安装CentOS 6.9为例)

  • 安装VirtualBox,安装VirtualBox Extension Pack
  • 安装vagrant
  • VirtualBox中新建虚拟机,名称为 CentOS,安装CentOS 6.9系统,假定CentOS

    6.9安装的是 Development workstation,⽤户名为fenghaojie,密码为root

  • 系统安装好后,为CentOS 6.9安装VirtualBox增强功能(设备 —> 安装增强功能

    —> 虚拟机中安装VBoxLinuxAdditions.run —> 重启虚拟机)

  • 使⽤户 fenghaojie 中的⽤户可以免密码执⾏sudo命令,在 /etc/sudoers.d/ 目录下添加⽂件mysudoers,文件内容为:

    fenghaojie ALL=(ALL) NOPASSWD: ALL

  • 重启CentOS 6.9 , 验证⽤户fenghaojie是否可以⽤sudo免密执⾏命令
  • 打开cmd或bash,进⼊存放虚拟机CentOS⽂件的⽬录下,执⾏下述命令,抽取

    ⽣成box⽂件 : (CentOS6.9.box 为抽取后的box⾃定义名称,可以包含⽬录,此处不包

    含意为放在当前⽬录,CentOS为virtualbox中已经存在的虚拟机的名称)

    vagrant package --output CentOS6.9.box --base CentOS

  • 当⽣成完后,会在当前⽬录看到⽂件 CentOS6.9.box , 将其存放到 ~/

    vagrant_box/CentOS6.9.box , 该⽬录可⾃⾏指定,我存放在这⾥

  • 进⼊⽬录 ~/vagrant_box/
  •  将CentOS6.9.box添加到vagrant的box库

    vagrant box add CentOS6.9 /home/fenghaojie/vagrant_box/CentOS6.9.box

    上述命令中的/home/… 可以为包含box⽂件的⽹络地址,⽐如 : ftp://…./

    CentOS6.9.box

创建开发环境

  • 新建⼀个⽬录 centos , 并进⼊该⽬录
  • 以vagrant的box库中的 CentOS6.9初始化该⽬录,可以看到⽬录下多了⼀个

    Vagrantfile

    vagrant init CentOS6.9

  • 修改Vagrantfile

    https://download.csdn.net/download/haojie_superstar/10504215

    从上述地址下载Vagrantfile,可以按照⾃⼰的实际情况修改其中中⽂注释的地

  • 启动虚拟机

    vagrant up

  • 登录虚拟机

    vagrant ssh

    也可以使⽤别的⼯具,地址为 127.0.0.1 端⼜默认为 2222

    如需修改映射到本机的端⼜或者通信⽅式等,可以参考下⾯地址 :

    https://blog.csdn.net/leonpengweicn/article/details/48263035

  • 关闭虚拟机

    vagrant halt

  • 彻底删除该虚拟机

    vagrant destroy

vagrant还有很多⾼级⽤法,⽐如在Vagrantfile中制定系统第⼀次启动时的操作和

每次启动时的操作等等,请⾃⾏google