美文网首页
VirtualBox+Vagrant

VirtualBox+Vagrant

作者: idioitcbear | 来源:发表于2017-10-15 23:22 被阅读73次

    Vagrant可以想象成一个VM的仓库工具,我们可以使用别人做好的VM,或者我们可以自己做一个VM,配置好一些安装包。设置好统一环境。减少开发和测试环境导致的bug。

    1. 首先给出下载地址
      Vagrant: https://www.vagrantup.com/downloads.html
      VirtualBox: https://www.virtualbox.org/wiki/Downloads
      本文环境为Mac,所以安装只需要双击.pkg+next完成安装
    2. 初始化vagrant项目
      $ mkdir vagrant_getting_started
      $ cd vagrant_getting_started
      $ vagrant init
      
      首先我们需要生成VagrantFile,作为vagrant的配置文件。这个文件夹可以是空的,也可以是一个已经存在的vagrant工程
    3. 添加box
      可以通过如下命令进行添加
        vagrant box add hashicorp/precise64
      
      Note: 这种方式是从官方的仓库进行下载的。我们也可以指定本地文件或者自已的一个 url下面会有介绍。box加载是全局性的,这就是说,如果你有两个project用了同一个远程仓库中的镜像,两两之间是不会有影响的。
      在VagrantFile中配置上我们刚刚加入的box:
        Vagrant.configure("2") do |config|
        config.vm.box = "hashicorp/precise64"
        end
      
      Note: 如果这个box没有通过上面的命令进行添加,则在运行这个项目的时候会被进行下载
      你可以类似下面指定镜像的使用版本:
        Vagrant.configure("2") do |config|
        config.vm.box = "hashicorp/precise64"
        config.vm.box_version = "1.1.0"
        end
      
      直接指定box的位置:
        Vagrant.configure("2") do |config|
        config.vm.box = "hashicorp/precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        end
      
      我们可以在这里搜索别人上传的镜像:vagrant repository
    4. 启动box
      $ vagrant up进行启动
      $ vagrant ssh 通过ssh进行虚拟机的连接
      $ vagrant destroy 销毁该虚拟机。这个操作并不会在本地删除之前下载的box file,只是销毁当前的虚拟机,如果要删除之前那个box文件,需要执行vagrant box remove
    5. 共享文件夹
      vagrant会自动挂载当前文件夹至虚拟机的/vagrant目录下,所以在对虚拟机的/vagrant目录进行操作是也会影响到宿主机的文件 ,列如:
        vagrant@precise64:~$ touch /vagrant/foo
        vagrant@precise64:~$ exit
        $ ls
        foo Vagrantfile
      
    6. 设置启动脚本
      • 在当前文件夹下新建bootstrap.sh文件
          #!/usr/bin/env bash
        
          apt-get update
          apt-get install -y apache2
          if ! [ -L /var/www ]; then
          rm -rf /var/www
          ln -fs /vagrant /var/www
          fi
        
      • 配置VagrantFile文件
          Vagrant.configure("2") do |config|
          config.vm.box = "hashicorp/precise64"
          config.vm.provision :shell, path: "bootstrap.sh"
          end
        
      • 使配置生效
        vagrant up即启动虚拟机时会生效,如果虚拟机已经在运行可以通过以下命令进行加载 vagrant reload --provision

    未完待续~~~~

    相关文章

      网友评论

          本文标题:VirtualBox+Vagrant

          本文链接:https://www.haomeiwen.com/subject/kpleyxtx.html