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 会重启并重新执行初始化。官方配置说明