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

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, 减少重复工作)