vagrant之运维,搭建统一开发环境
特点:通过vagrant打包环境,可以跨平台使用。意思就是在windows下可以使用ubuntu系统配置的环境
使用的平台:windows+64位
需要准备的工具:
virtualbox:虚拟机 https://www.virtualbox.org/wiki/Downloads
vagrant:下载地址 http://downloads.vagrantup.com/
下载需要使用的 box
通过 http://www.vagrantbox.es/ 进行下载
*一般操作命令
vagrant box add NAME URL #添加一个box
vagrant box list #查看本地已添加的box
vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行$ vagrant box remove NAME
vagrant init NAME #初始化,实质应是创建Vagrantfile文件
vagrant up #启动虚拟机
vagrant halt #关闭虚拟机
vagrant destroy #销毁虚拟机
vagrant reload #重启虚拟机
vagrant package #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
vagrant ssh #进入虚拟环境
*vagrantfile文件的作用:
配置这个虚拟主机网络连接方式,端口转发,同步文件夹,以及怎么和puppet,chef结合的一个配置文件。执行完$ vagrant init后,在工作目录中,你会发现此文件。
NOTE:配置版本说明:
Vagrant.configure( "2" ) do |config| # ... end |
当前支持的两个版本:"1"和"2". "1":描述是Vagrant 1.0.x的配置(如看到Vagrant::Config.run do |config| 此也为Vagrant 1.0.x 的配置);"2":描述的是1.1+ leading up to 2.0.x的配置。vagrant 1.1+ 的Vagrantfiles能够与vagrant 1.0.x的Vagrantfiles保持向后兼容,也大幅引入新的功能和配置选项。
配置网络(本文将提供2种版本的常用配置,其中版本1的配置经过实践验证)
(1) 端口转发:(假设虚拟机的80端口提供web服务,此处将通过访问物理机的8080端口转发到虚拟机的80端口,来实现web的访问)
版本"2":
Vagrant.configure( "2" ) do |config| config.vm.network :forwarded_port, guest: 80, host: 8080 end |
版本"1"
Vagrant::Config.run do |config| # Forward guest port 80 to host port 8080 config.vm.forward_port 80, 8080 end |
(2)桥接网络(公共网络,局域网DHCP服务器自动分配IP)
版本"2"
Vagrant.configure( "2" ) do |config| config.vm.network :public_network end |
版本"1"
Vagrant::Config.run do |config| config.vm.network :bridged end |
$ VBoxManage list bridgedifs | grep ^Name #可通过此命令查看本机的网卡
Name: eth0
指定网卡,配置可写为如下:
Vagrant::Config.run do |config| config.vm.network :bridged, :bridge => "eth0" end |
(3) 私有网络:允许多个虚拟机通过主机通过网络互相通信,vagrant允许用户分配一个静态IP,然后使用私有网络设置。
版本"2"
Vagrant.configure( "2" ) do |config| config.vm.network :private_network, ip: "192.168.50.4" end |
版本"1"
Vagrant::Config.run do |config| config.vm.network :hostonly, "192.168.50.4" end |
同步文件夹
默认的,vagrant将共享你的工作目录(即Vagrantfile所在的目录)到虚拟机中的/vagrant,所以一般不需配置即可,如你需要可配置:
版本"2"
Vagrant.configure( "2" ) do |config| # other config here config.vm.synced_folder "src/" , "/srv/website" end |
"src/":物理机目录;"/srv/website"虚拟机目录
vagrant和shell(实现在虚拟机启动的时候自运行需要的shell命令或脚本)
版本"2"
内嵌脚本:
Vagrant.configure( "2" ) do |config| config.vm.provision :shell, :inline => "echo Hello, World" end |
复杂点的调用如下:
$script = <
|