vagrant系列教程(二):vagrant的配置文件vagrantfile详解(转)
原文:http://blog.csdn.net/hel12he/article/details/51089774
上一篇文章完整的講敘了如何安裝一個vagrant的環境。這里主要說一說vagrant的配置文件Vagrantfile。我在嘗試各種技術的時候,常??鄲烙诤芏鄷r候沒有教程把相關的配置信息說明完整。所以在我的博客里,我一定會完整的把這塊給補上。
一 配置詳解
在我們的開發目錄下有一個文件Vagrantfile,里面包含有大量的配置信息,主要包括三個方面的配置,虛擬機的配置、SSH配置、Vagrant的一些基礎配置。Vagrant是使用Ruby開發的,所以它的配置語法也是Ruby的,但是我們沒有學過Ruby的人還是可以跟著它的注釋知道怎么配置一些基本項的配置。
box設置
config.vm.box = "CentOs7"該名稱是再使用 vagrant init 中后面跟的名字。
hostname設置
config.vm.hostname = "for_work"設置hostname非常重要,因為當我們有很多臺虛擬服務器的時候,都是依靠hostname來做識別的。比如,我安裝了php7 php56兩臺虛擬機,再啟動時,我可以通過vagrant up php7來指定只啟動哪一臺。
虛擬機網絡設置
config.vm.network "private_network", ip: "192.168.33.10" #config.vm.network "public_network"?
Vagrant有兩種方式來進行網絡連接,一種是host-only(主機模式),意思是主機和虛擬機之間的網絡互訪,而不是虛擬機訪問internet的技術,也就是只有你一個人自High,其他人訪問不到你的虛擬機。另一種是Bridge(橋接模式),該模式下的VM就像是局域網中的一臺獨立的主機,也就是說需要VM到你的路由器要IP,這樣的話局域網里面其他機器就可以訪問它了。我一般設置為host-only模式。?
當然該模式,再指定ip的時候注意不要跟主機所在網段發生沖突。
同步目錄設置
config.vm.synced_folder "/Users/helei/www", "/vagrant"我們上面介紹過/vagrant目錄默認就是當前的開發目錄,這是在虛擬機開啟的時候默認掛載同步的。我們還可以通過配置來設置額外的同步目錄。
端口轉發設置
config.vm.network :forwarded_port, guest: 80, host: 80上面這句配置可厲害了,這一行的意思是把對host機器上8080端口的訪問請求forward到虛擬機的80端口的服務上,例如你在你的虛擬機上使用nginx跑了一個PHP應用,那么你在host機器上的瀏覽器中打開http://localhost時,Vagrant就會把這個請求轉發到VM里面跑在80端口的nginx服務上,因此我們可以通過這個設置來幫助我們去設定host和VM之間,或是VM和VM之間的信息交互。?
個人不建議使用該方法,經常因為兩臺機子端口占用的問題,導致不能正常通信。還是使用上面說的兩種網絡方式進行設置吧。
上面說的配置方式,均是單機模式,下面說說如何進行集群機器的部署與配置,這是vagrant讓我正真激動與興奮的地方。
看完下面,你會覺得超級簡單
現在我們來建立多臺VM跑起來,並且讓他們之間能夠相通信,假設一臺是應用服務器、一臺是Redis服務器,那么這個結構在Vagrant中非常簡單,其實和單臺的配置差不多,你只需要通過config.vm.define來定義不同的角色就可以了,現在我們打開配置文件進行如下設置:
Vagrant.configure("2") do |config|config.vm.define :web do |web|web.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]endweb.vm.box = "CentOs7"web.vm.hostname = "web"web.vm.network :private_network, ip: "192.168.33.10"endconfig.vm.define :redis do |redis|redis.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"]endredis.vm.box = "CentOs7"redis.vm.hostname = "redis"redis.vm.network :private_network, ip: "192.168.33.11"end end?
這里的的設置與設置單臺機器非常的類似,如果還需要機器,只需要再配置文件中拷貝一下,然后重新加載一下這個配置文件就ok啦。是不是非常容易?后面我打算學Hadoop的時候,就用這種方式來試試。?
現在只需要重新啟動一下vagrant up機器,你就會在虛擬機中看到兩臺虛擬機歡快的跑起來了。?
然后這個時候,在使用vagrant ssh登錄時,需要指明一下登錄的是哪一臺機器就ok啦。
比如,我要登錄到redis中去。
vagrant ssh redis這么簡單就完成登錄了。登錄成功后,可以使用ping命令,檢查一下機器之間是否能夠互相通信。
好吧,本地有了如此利器,你想模擬那樣的服務器架構,都可以完成了,只有你的單機足夠強大,你可以開20臺虛擬機,請隨意。
?
轉載于:https://www.cnblogs.com/rxbook/p/7122821.html
總結
以上是生活随笔為你收集整理的vagrant系列教程(二):vagrant的配置文件vagrantfile详解(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【翻译自mos文章】OGG replic
- 下一篇: 目前的计算机还没有实现真正的智能