特點(diǎn):通過vagrant打包環(huán)境,可以跨平臺(tái)使用。意思就是在windows下可以使用ubuntu系統(tǒng)配置的環(huán)境
創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元獻(xiàn)縣做網(wǎng)站,已為上家服務(wù),為獻(xiàn)縣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
使用的平臺(tái):windows+64位
需要準(zhǔn)備的工具:
virtualbox:虛擬機(jī) https://www.virtualbox.org/wiki/Downloads
vagrant:下載地址 http://downloads.vagrantup.com/
下載需要使用的 box
通過 http://www.vagrantbox.es/ 進(jìn)行下載
*一般操作命令
vagrant box add NAME URL #添加一個(gè)box
vagrant box list #查看本地已添加的box
vagrant box remove NAME virtualbox #刪除本地已添加的box,如若是版本1.0.x,執(zhí)行$ vagrant box remove NAME
vagrant init NAME #初始化,實(shí)質(zhì)應(yīng)是創(chuàng)建Vagrantfile文件
vagrant up #啟動(dòng)虛擬機(jī)
vagrant halt #關(guān)閉虛擬機(jī)
vagrant destroy #銷毀虛擬機(jī)
vagrant reload #重啟虛擬機(jī)
vagrant package #當(dāng)前正在運(yùn)行的VirtualBox虛擬環(huán)境打包成一個(gè)可重復(fù)使用的box
vagrant ssh #進(jìn)入虛擬環(huán)境
*vagrantfile文件的作用:
配置這個(gè)虛擬主機(jī)網(wǎng)絡(luò)連接方式,端口轉(zhuǎn)發(fā),同步文件夾,以及怎么和puppet,chef結(jié)合的一個(gè)配置文件。執(zhí)行完$ vagrant init后,在工作目錄中,你會(huì)發(fā)現(xiàn)此文件。
NOTE:配置版本說明:
Vagrant.configure( "2" ) do |config| # ... end |
當(dāng)前支持的兩個(gè)版本:"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保持向后兼容,也大幅引入新的功能和配置選項(xiàng)。
配置網(wǎng)絡(luò)(本文將提供2種版本的常用配置,其中版本1的配置經(jīng)過實(shí)踐驗(yàn)證)
(1) 端口轉(zhuǎn)發(fā):(假設(shè)虛擬機(jī)的80端口提供web服務(wù),此處將通過訪問物理機(jī)的8080端口轉(zhuǎn)發(fā)到虛擬機(jī)的80端口,來實(shí)現(xiàn)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)橋接網(wǎng)絡(luò)(公共網(wǎng)絡(luò),局域網(wǎng)DHCP服務(wù)器自動(dòng)分配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 #可通過此命令查看本機(jī)的網(wǎng)卡
Name: eth0
指定網(wǎng)卡,配置可寫為如下:
Vagrant::Config.run do |config| config.vm.network :bridged, :bridge => "eth0" end |
(3) 私有網(wǎng)絡(luò):允許多個(gè)虛擬機(jī)通過主機(jī)通過網(wǎng)絡(luò)互相通信,vagrant允許用戶分配一個(gè)靜態(tài)IP,然后使用私有網(wǎng)絡(luò)設(shè)置。
版本"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 |
同步文件夾
默認(rèn)的,vagrant將共享你的工作目錄(即Vagrantfile所在的目錄)到虛擬機(jī)中的/vagrant,所以一般不需配置即可,如你需要可配置:
版本"2"
Vagrant.configure( "2" ) do |config| # other config here config.vm.synced_folder "src/" , "/srv/website" end |
"src/":物理機(jī)目錄;"/srv/website"虛擬機(jī)目錄
vagrant和shell(實(shí)現(xiàn)在虛擬機(jī)啟動(dòng)的時(shí)候自運(yùn)行需要的shell命令或腳本)
版本"2"
內(nèi)嵌腳本:
Vagrant.configure( "2" ) do |config| config.vm.provision :shell, :inline => "echo Hello, World" end |
復(fù)雜點(diǎn)的調(diào)用如下:
$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" #腳本的路徑相對(duì)于項(xiàng)目根,也可使用絕對(duì)路徑 end |
腳本可傳遞參數(shù):
Vagrant.configure( "2" ) do |config| config.vm.provision :shell do |s| s.inline = "echo $1" s.args = "'hello, world!'" end end |
版本"1":
內(nèi)部腳本:
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 |
腳本參數(shù):
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,請(qǐng)看這里http://xuclv.blog.51cto.com/blog/5503169/1154261)
(1) vagrant調(diào)用puppet單獨(dú)使用
Vagrant.configure( "2" ) do |config| config.vm.provision :puppet do |puppet| puppet.manifests_path = "my_manifests" #路徑相對(duì)于項(xiàng)目根,如無配置此項(xiàng),默認(rèn)為manifests puppet.manifest_file = "default.pp" #如無配置此項(xiàng),默認(rèn)為default.pp puppet.module_path = "modules" #路徑相對(duì)于根 puppet.options = "--verbose --debug" end end |
默認(rèn)配置的目錄結(jié)構(gòu):
$ 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服務(wù)器節(jié)點(diǎn)的名稱。默認(rèn)為”puppet“ puppet.options = "--verbose --debug" #選項(xiàng) end end |
NOTE:
版本1配置差別不大,不再詳述,區(qū)別:Vagrant.configure("2") do |config|改為Vagrant::Config.run do |config|
以上Vagrantfile配置完畢后,可$ vagrant reload 重啟虛擬機(jī)以來實(shí)現(xiàn)配置生效
官方給了一個(gè)例子(可嘗試玩玩):
1.進(jìn)入工作目錄
2.修改Vagrantfile
$ vim Vagrantfile #啟用或添加如下行:
Vagrant.configure( "2" ) do |config| config.vm.provision :puppet #這里沒有配置pp文件等的路徑,全部采用默認(rèn) end end |
3.創(chuàng)建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.重啟虛擬機(jī)
$ vagrant reload #重啟后可看到虛擬機(jī)中已經(jīng)安裝好了apache
后記:
總的來說vagrant還是一個(gè)簡(jiǎn)單好用的軟件,常用于和puppet或者chef結(jié)合,實(shí)現(xiàn)測(cè)試環(huán)境的自動(dòng)化部署,保證了測(cè)試環(huán)境的快速創(chuàng)建,便捷部署,一致性,同時(shí)也便于銷毀。另,這里不常用chef,所以此篇文章不對(duì)其進(jìn)行介紹,有興趣的可以自行研究.
推薦一個(gè)shell集成安裝環(huán)境,lnmp/lamp等等
https://oneinstack.com/install/
網(wǎng)站題目:vagrant之運(yùn)維,搭建統(tǒng)一開發(fā)環(huán)境
文章URL:http://muchs.cn/article36/johgsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、電子商務(wù)、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)