跳转至

Vagrant

通过一个可提交到 Git 的 Vagrantfile 声明并重复创建本地开发虚拟机。Vagrant 负责环境生命周期;VirtualBox、libvirt、Hyper-V 等 Provider 负责实际创建虚拟机。

最小 Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2204"
  config.vm.hostname = "devbox"

  # 访问 Guest 的 8080 服务:主机 http://127.0.0.1:8080
  config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"

  # 与 Guest 共享项目目录
  config.vm.synced_folder "./src", "/workspace", create: true

  config.vm.provider "virtualbox" do |vb|
    vb.memory = 4096
    vb.cpus = 2
  end

  config.vm.provision "shell", path: "bootstrap.sh"
end

日常命令

vagrant init generic/ubuntu2204
vagrant up
vagrant status
vagrant ssh
vagrant reload --provision
vagrant halt
vagrant destroy

使用建议

  • Box 与 Provider 绑定:同名 Box 的 VirtualBox 与 VMware 版本不能互换。
  • Vagrantfile、Provision 脚本和非敏感配置提交 Git;密钥与本地私密变量不提交。
  • 开发环境需要可重复创建:把软件安装和配置放进 Shell/Ansible Provision,不依赖手工 SSH 修改。
  • 端口转发默认仅绑定本机更安全;需要局域网访问时再明确调整监听地址与防火墙。

Vagrantfile 可声明网络、同步目录、Provider 与 Provision;vagrant reload --provision 会重启并重新执行初始化。官方配置说明