关键词:
特点:通过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 = <<SCRIPT echo I am provisioning... date > /etc/vagrant_provisioned_at SCRIPT Vagrant.configure( "2" ) do |config| config.vm.provision :shell, :inline => $script end |
外部脚本:
Vagrant.configure( "2" ) do |config| config.vm.provision :shell, :path => "script.sh" #脚本的路径相对于项目根,也可使用绝对路径 end |
脚本可传递参数:
Vagrant.configure( "2" ) do |config| config.vm.provision :shell do |s| s.inline = "echo $1" s.args = "‘hello, world!‘" end end |
版本"1":
内部脚本:
Vagrant::Config.run do |config| config.vm.provision :shell, :inline => "echo abc > /tmp/test" end |
外部脚本:
Vagrant::Config.run do |config| config.vm.provision :shell, :path => "test.sh" end |
脚本参数:
Vagrant::Config.run do |config| config.vm.provision :shell do |shell| shell.inline = "echo $1 > /tmp/test" shell.args = "‘this is test‘" end end |
vagrant和puppet(如果不知道puppet,请看这里http://xuclv.blog.51cto.com/blog/5503169/1154261)
(1) vagrant调用puppet单独使用
Vagrant.configure( "2" ) do |config| config.vm.provision :puppet do |puppet| puppet.manifests_path = "my_manifests" #路径相对于项目根,如无配置此项,默认为manifests puppet.manifest_file = "default.pp" #如无配置此项,默认为default.pp puppet.module_path = "modules" #路径相对于根 puppet.options = "--verbose --debug" end end |
默认配置的目录结构:
$ tree
.
|-- Vagrantfile
|-- manifests
| |-- default.pp
(2) vagrant让puppet作为代理,连接Puppet master
Vagrant.configure( "2" ) do |config| config.vm.provision :puppet_server do |puppet| puppet.puppet_server = "puppet.example.com" #master域名 puppet.puppet_node = "node.example.com" #传递给puppet服务器节点的名称。默认为”puppet“ puppet.options = "--verbose --debug" #选项 end end |
NOTE:
版本1配置差别不大,不再详述,区别:Vagrant.configure("2") do |config|改为Vagrant::Config.run do |config|
以上Vagrantfile配置完毕后,可$ vagrant reload 重启虚拟机以来实现配置生效
官方给了一个例子(可尝试玩玩):
1.进入工作目录
2.修改Vagrantfile
$ vim Vagrantfile #启用或添加如下行:
Vagrant.configure( "2" ) do |config| config.vm.provision :puppet #这里没有配置pp文件等的路径,全部采用默认 end end |
3.创建puppet的主目录
$ mkdir manifests
4.配置pp文件
$ vim manifests/default.pp
# Basic Puppet Apache manifest
class
apache {
exec {
‘apt-get update‘
:
command =>
‘/usr/bin/apt-get update‘
}
package
{
"apache2"
:
ensure => present,
}
service {
"apache2"
:
ensure => running,
require => Package[
"apache2"
],
}
file {
‘/var/www‘
:
ensure => link,
target =>
"/vagrant"
,
notify => Service[
‘apache2‘
],
force =>
true
}
}
include
apache
5.重启虚拟机
$ vagrant reload #重启后可看到虚拟机中已经安装好了apache
后记:
总的来说vagrant还是一个简单好用的软件,常用于和puppet或者chef结合,实现测试环境的自动化部署,保证了测试环境的快速创建,便捷部署,一致性,同时也便于销毁。另,这里不常用chef,所以此篇文章不对其进行介绍,有兴趣的可以自行研究.
推荐一个shell集成安装环境,lnmp/lamp等等
https://oneinstack.com/install/
vagrant搭建虚拟化开发环境初识(代码片段)
Vagrant简介 Vagrant是一款用来构建虚拟开发环境的工具,它是用来管理虚拟机的,同时也非常适合php/python/ruby/java这类语言开发web应用,“代码在我机子上运行没有问题”这种说辞将成为历史。我们可以通过Vagrant封装一个Linux... 查看详情
vagrant在win7/win10系统下搭建使用(代码片段)
vagrant是什么???vagrant是一个操作虚拟机的工具.??通过命令和配置文件来管理虚拟机,很快就能完成一套开发环境的部署,并可以打包传播,统一了开发环境,也解决了重复配置环境的麻烦.Vargant的好处1.统一开发环境。??一次配置打包... 查看详情
使用vagrant打造跨平台开发环境
Vagrant 是一款用来构建虚拟开发环境的工具,非常适合php/python/ruby/java这类语言开发web应用我们可以通过Vagrant封装一个Linux的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却... 查看详情
ubuntu环境利用vagrant搭建一个虚拟开发环境
Vagrant是一个搭建完整的虚拟开发环境的工具,通常简写为VDE(VirtualDevelopmentEnvironment)。Vagrant节省大量重建操作系统环境的时间,它也是一个配置中心,允许你使用一个相同的配置管理和部署多个VDE。安装Vagrant的同时,你也需... 查看详情
golang开发:开发环境搭建vagrant+virtualbox(代码片段)
...不管何种开发语言,目前用的比较多的开发环境基本就是Vagrant+VirtualBox搭建的虚拟开发环境,这种开发环境的好处就是一次搭建处处可用,各个平台和系统都可以使用。开发团队中,可以自己制作一个box,让团队的成员方便安装... 查看详情
用vagrant构建统一的golang开发环境
开发环境是我们日常工作的一个环境,不论你现在的公司是否会强制你使用统一的开发环境,对于希望通过阅读本书,跟着本书一起写项目的同学来说,我希望大家有统一的环境,这不仅有利于代码的一致性... 查看详情
使用virtualbox+vagrant打造统一的开发环境(代码片段)
...支持多个平台,请根据自己的情况选择对应的版本。安装VagrantV 查看详情
it运维人员追女友必备神器之运维开发实战程序案例
本内容选自《跟老男孩学linux运维:Shell高级编程实战》一书之浪漫美妙Shell工具程序案例。首发于“我是老男孩”,顶尖运维专家公众号,可到文末扫码关注更多文章。(一)功能简介 作为IT人员,给... 查看详情
vagrant+docker:开发环境快速搭建(代码片段)
快速搭建以下的环境:目录VirtualBoxVagrantdockerMySQLredisVirtualBoxVM环境Vagrant成品镜像$vagrantboxaddcentos-7./centos-7.0-x86_64.box$vagrantinitcentos-7$vagrantup$vagrantssh修改端口管理员$suroot#密码vagrant$whoami入门案例:https://www.cnblogs.com/lawsssscat/p/1267647... 查看详情
vagrant使用小结
vagrant使用小结最近公司用了vagrant的虚拟镜像服务,感觉挺不错的.在此仅记录使用方法.优点:我们可以通过Vagrant封装一个Linux的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却... 查看详情
vagrant初识(代码片段)
vagrant是部署虚拟开发环境的工具,他可以简化虚拟机配置,为我们搭建和配置轻量级可重用,可移植的开发环境。他能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境。 vagrant支持VirtualBox,VMware,AWS... 查看详情
大数据集群环境搭建(代码片段)
...简单2.3.三种工具的部署方式3.自动创建虚拟机3.1.什么是Vagrant3.2.安装Vagrant和概念介绍3.3.使用Vagrant构建一个虚拟机集群4.自动化部署服务(了解,运维领域)4.1.痛点和Ansible4 查看详情
监控体系之运维
确定服务类型: IO密集型 数据库 CPU密集型 webmail 确定性能基准线: 运行队列: 1-3线程经验值,在正常情况下找一个异常值CPU监控& 查看详情
vagrant搭建虚拟化开发环境lamp和lnmp环境配置(代码片段)
跟着上一篇来,本篇开始配置php开发环境上一篇地址:https://www.cnblogs.com/phperpxy/p/10337848.html安装相应的软件这里有坑,一定要按步骤来第一步替换源(默认的源是国外的,下载速度惊人)sudocp/etc/apt/sources.list/etc/apt/sources.list.bak#备份sudovi/... 查看详情
cdn初学搭建(ats)
CDN初学搭建(ats)atstrafficserversquid一、CDN初学搭建准备vagrantvirtualbox内部环境测试所需包一、vagrant创建启动虚拟机1mkdir/cdn创建cdn目录,将开发环境所需包拷贝到此目录2初始化开发环境,vagrantinitXXX.base,将会生成Vagrantfile,此文件可... 查看详情
cdn初学搭建(ats)
CDN初学搭建(ats)atstrafficserversquid一、CDN初学搭建准备vagrantvirtualbox内部环境测试所需包一、vagrant创建启动虚拟机1mkdir/cdn创建cdn目录,将开发环境所需包拷贝到此目录2初始化开发环境,vagrantinitXXX.base,将会生成Vagrantfile,此文件可... 查看详情
详细图文教学:java开发环境搭建
...sp; 对于大公司来说,软件开发环境搭建工作一般是由运维来做,然而,对于小公司来说,这个工作就交给开发人员来做了,如开发经理。不管这个工作是交给运维人员做,还是 查看详情
用vagrant搭建一个自己的lnmp环境
用vagrant搭建自己的lnmp环境1、工具:a、vagrantb、virtualboxc、linux服务器box(此处我使用centos7.0)2、安装完vagrant和virtualbox后,打开命令行,运行以下命运,添加box:vagrant box addBOXNAME box路径(上面下载的服务器box路径)3... 查看详情