美文网首页
Vagrant通过自定义Vagrantfile, 减少重复工作

Vagrant通过自定义Vagrantfile, 减少重复工作

作者: 一路掷骰子 | 来源:发表于2018-01-19 15:39 被阅读0次

    Windows 10确实非常不错,以至于我都不愿意再回到Linux桌面。 但有个问题,在Windows 进行后台开发很不方便,好多包甚至不支持Windows。 不过使用Vagrant这样的工具,可以大大减轻这样的问题。

    Vagrant 介绍

    Vagrant 可以很方便的管理虚拟机, 使得配置开发环境变得容易。 支持多种hypervisor, 不过我一般用virtualbox,够用而且不要钱。

    Vagrant官网有详细的介绍, 里面的文档也比较好, 推荐进行学习。 也可以参考这个中文教程

    我的Vagrantfile

    我一般有下面的需求:

    1. 配置特定的ip, 方便组织虚拟机和后面登陆.
    2. 共享磁盘.
    3. 配置cpu和内存(可选).
    4. 把我的公钥放在上面,方便后面登陆。
    5. 替换源为阿里云,并更新系统。

    下面是我的Vagrantfile模板,满足了上面的要求,后面创建虚拟机只需要对这个模板稍作修改就可以了。

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
      config.vm.box = "ubuntu/xenial64"
    
      config.vm.box_check_update = false
    
      config.vm.network "private_network", ip: "172.16.1.4"
    
      # 共享D盘和E盘
      config.vm.synced_folder 'd:/', "/d"
      config.vm.synced_folder 'e:/', "/e"
    
      # 配置虚拟机的内存,cpu
      config.vm.provider "virtualbox" do |v|
        v.memory = 2048
        v.cpus = 2
      end
    
      # 准备虚拟机
      config.vm.provision "shell" do |s|
        ssh_pub_key = File.readlines('E:\config\ssh\personal.pub').first.strip
        s.inline = <<-SHELL
          # 把自己的公钥放在上面
          if ! grep -Fxq "$ssh_pub_key" /home/vagrant/.ssh/authorized_keys; then
            echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
          fi
          # 替换默认源为阿里源
          if ! cmp --silent /etc/apt/sources.list /e/config/vagrant/ubuntu/sources.list; then
             sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
             sudo cp /e/config/vagrant/ubuntu/sources.list /etc/apt/sources.list
          fi
          # 更新软件仓库信息 && 升级
          sudo apt-get update && sudo apt-get -y upgrade
        SHELL
      end
    end
    

    其他配置: 我将公钥和阿里源文件提前放到了E盘指定的文件。

    相关文章

      网友评论

          本文标题:Vagrant通过自定义Vagrantfile, 减少重复工作

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