Vagrant简介
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
在Windows下,也可以方便地使用Linux环境开发程序
官方文档 http://docs.vagrantup.com/v2/getting-started/index.html
box https://vagrantcloud.com/discover/featured
准备工作
下载安装 VirtualBox https://www.virtualbox.org/wiki/Downloads
下载安装 Vagrant http://www.vagrantup.com/downloads.html
初始化Vagrant
#进入D盘 C:\Windows\system32>d: #创建一个虚拟机的主目录,这个目录会与虚拟机/vagrant保持同步 mkdir vagrant_getting_started cd vagrant_getting_started #初始化,这里需要一个centos的box,在box分享网站上可以找到chef/centos-6.5 vagrant init chef/centos-6.5 #启动虚拟机 vagrant up #登录虚拟机 vagrant ssh
配置开发环境
sudo yum update -y su root Password:vagrant #更改root密码,方便SecureCRT登录 默认虚拟机22端口映射宿主机2222端口 service sshd reload passwd root #后续的服务器安全加固措施,可以使用key登录
常用命令
box管理
vagrant box list #列出可用box vagrant box add chef/centos-6.5 #添加云box上的镜像 vagrant box add chef/centos-6.5 chef/centos-6.5.box #添加本地box
虚拟机管理命令
vagrant up #启动 vagrant reload #修改Vagrantfile快速使之快速生效 vagrant halt #关闭 vagrant suspend #暂停 vagrant resume #恢复 vagrant destroy #删除
打包box
- 创建新的文件Vagrantfile.pkg
Vagrant::Config.run do |config| #Forward apache config.vm.forward_port 80, 8080 end
- 打包Project
#打包完成后,会在工程根目录下生成package.box vagrant package --vagrantfile Vagrantfile.pkg
- private_network模式需要清除一下配置
rm -f /etc/udev/rule.d/70-persistent-net.rules
Vagrantfile 配置
Vagrantfile 工程根目录下,虚拟机的主要配置文件,提供网络配置,共享配置,环境初始化配置
(支持shell命令及脚本,chef,puppet,salt,Docker)
网络配置
#端口映射 config.vm.network :forwarded_port, guest: 80, host: 8080 #私有网络 config.vm.network :private_network, ip: "192.168.1.104" #DHCP接入实体网络 config.vm.network :public_network #网卡桥接接入实体网络 config.vm.network "public_network", bridge: ‘en1: Wi-Fi (AirPort)‘
共享
#目录共享 config.vm.synced_folder "E:/Blog", "/home/vagrant/Blog"
环境初始化provision
执行脚本
#!/usr/bin/env bash yum update yum install -y apache2 rm -rf /var/www ln -fs /vagrant /var/www
Vagrant.configure("2") do |config| config.vm.box = "chef/centos-6.5" config.vm.provision :shell, path: "bootstrap.sh" end