vagrant之運(yùn)維,搭建統(tǒng)一開發(fā)環(huán)境

      特點(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)

綿陽服務(wù)器托管