简介
vagrant 是一个基于业界成熟的虚拟化技术打造可配置,可重新生成和可移植的工作环境的工具,一个配置文件完成所有状态定义。
特性
- 简单,一个配置文件搞定
- 可通过多种方式自定义虚拟机配置,如 shell 脚本,ansible 等
- 网络配置,支持私有,共有网络配置
- 目录同步,保持 guest 和 host 文件同步,默认将当前目录映射到虚拟机的/vagrant 下
- 多虚拟机支持,构建自己的集群测试环境
- 多中虚拟技术支持,如 virtualbox,vmware,AWS 和 docker
- 插件机制,扩展灵活
概念
- box 就是已经制作好的虚拟机,倒入后保存在~/vagrang.d 目录下,和标准的虚拟机区别就是加入了一些为支持 vagrant 管理的配置,如公钥
- Vagrantfile 描述和配置要创建的虚拟机的配置
安装
sudo apt-get install vagrant
注意 最新的版本要到其官网下载
配置
添加 box
vagrant box add name url
其中,name 为 box 的名字,url 为 box 的路径可远程可本地
初始化环境
vagrant init
生成默认的 Vagrantfile
修改配置文件 Vagrantfile
详细的配置参考官方文档
单机配置
Vagrant.configure("2") do |config|
config.vm.box = "base" #定义此虚拟机是从哪个box生成
config.vm.provision :shell, :path => "bootstrap.sh" #通过shell配置
config.vm.network :forwarded_port, host: 8080, guest: 80 #端口映射
config.vm.network "private_network", ip: "192.168.110.100" #私有网络配置
#awesome configuration goes here...
end
多机配置
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: "echo Hello"
config.vm.define "web" do |web|
web.vm.box = "apache"
#awesome configuration goes here...
end
config.vm.define "db" do |db|
db.vm.box = "mysql"
#awesome configuration goes here...
end
end
使用
- 开/关机 vagrant up/halt
- 重启 vagrant reload
- 状态 vagrant status
- 登录 vagrant ssh
- 销毁 vagrant destroy