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

【Vagrant通过自定义Vagrantfile,|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 = falseconfig.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盘指定的文件。

    推荐阅读