配置文件里都寫了些啥梧税?
我們先打開Vagrantfile :
Vagrant 就是使用 Ruby 寫成的, 所以在這里的配置文件也需要滿足 Ruby 語法凳谦。
config.vm.box = "ubuntu/trusty64"
可以看到家凯,這兩行就是我們在vagrant init中后面所指定的參數(shù)褪贵。由此可以看出,vagrant init只是幫我們生成了配置文件而已,換句話說,如果我們寫好了Vagrantfile喷好,就不需要vagrant init,只需將準(zhǔn)備好的配置文件放入到所需目錄中读跷,然后直接執(zhí)行vagrant up即可梗搅。
還有很多注釋掉的配置,那些都是一些常用的配置效览,包括網(wǎng)卡設(shè)置无切、IP地址、綁定目錄丐枉,甚至可以指定內(nèi)存大小哆键、CPU個數(shù)、是否啟動界面等等瘦锹。如果需要籍嘹,可以根據(jù)注釋文本進行配置闪盔。
下面列出一些常用的配置:
config.vm.hostname:配置虛擬機主機名
config.vm.network:這是配置虛擬機網(wǎng)絡(luò),由于比較復(fù)雜辱士,我們其后單獨討論
config.vm.synced_folder:除了默認(rèn)的目錄綁定外锭沟,還可以手動指定綁定
config.ssh.username:默認(rèn)的用戶是vagrant,從官方下載的box往往使用的是這個用戶名识补。如果是自定制的box族淮,所使用的用戶名可能會有所不同,通過這個配置設(shè)定所用的用戶名凭涂。
config.vm.provision:我們可以通過這個配置在虛擬機第一次啟動的時候進行一些安裝配置祝辣,后面我們將專門介紹。
需要注意的是切油,Vagrantfile文件只會在第一次執(zhí)行vagrant up時調(diào)用執(zhí)行蝙斜,其后如果不明確使用vagrant reload,則不會被強制重新加載澎胡。
config.vm.network"forwarded_port",guest:80,host:8080
這將讓物理機的8080端口映射到虛擬機的80端口孕荠。因此,可以在物理機上直接訪問虛擬機所建立的網(wǎng)站攻谁。這在虛擬機使用不是橋接的時候尤為重要稚伍,因為很多時候默認(rèn)會禁止物理機通過網(wǎng)絡(luò)直接訪問虛擬機,通過端口映射可以依舊能夠訪問所需端口戚宦。
我們還可以通過config.vm.network來指定所在網(wǎng)絡(luò)以及IP地址个曙。一般來說,分為private_network還是public_network受楼。
private_network: 私有網(wǎng)絡(luò)
位于私有網(wǎng)絡(luò)的主機之間可以互相訪問垦搬,但是外界無法訪問私有網(wǎng)絡(luò)的主機,對于某些虛擬機而言艳汽,連物理機都無法通過網(wǎng)絡(luò)直接訪問虛擬機猴贰,此時如果需要使用物理機訪問虛擬機,就需要前面所提及的端口映射河狐。例如:
config.vm.network"private_network",ip:"192.168.33.10"
public_network:公有網(wǎng)絡(luò)
在絕大多數(shù)虛擬機上米绕,這等同于橋接網(wǎng)絡(luò)。如果虛擬機選擇了橋接方式連接甚牲,也就是相當(dāng)于虛擬機和物理機在網(wǎng)絡(luò)上處于平等的位置义郑,同樣的接在了網(wǎng)卡所在的網(wǎng)絡(luò)蝶柿。因此從外界看來丈钙,會感覺這是兩臺獨立的計算機。
配置方式和私有網(wǎng)絡(luò)接近交汤,只需將其中的private_network換成public_network雏赦。如要使用 DHCP:
config.vm.network"public_network"
如果物理機存在多塊網(wǎng)卡劫笙,需要指定某一塊作為橋接用,那么可以參考如下配置:
config.vm.network"public_network",:bridge=>'en1: Wi-Fi (AirPort)'
如果是在啟動了虛擬機之后星岗,需要重新加載配置填大,只需要執(zhí)行:
vagrant reload