Vagrant共享

Vagrant共享

vagrant共享可以讓自己的配置環境,和世界上的的任何一個人共享。只需要一個命令vagrant share 就可以直接和有網絡環境的人協同工作。Vagrant共享主要有三種工作模式。這三個種工作模式不是互斥的,也就說說這個三個模式可以在任何條件下,同時使用。

  • HTTP 共享模式:這種模式將會創建一個URL,可以把這個URL給想共享的你環境的人。這個URL將會直接連接到你的Vagrant環境。用這個URL的人不需要安裝Vagrant,所以這個URL可以給任何人。這種模式主要用在測試網站、給客戶、團隊人員或者領導展示工作成果的時候用。
  • SSH共享:這種模式可以讓那些在客戶端運行vagrant connect --ssh命令的人立刻SSH連接到你的vagrant環境。這種模式主要用於一起編程或者解決問題的時候用。
  • 通用共享:這種模式可以讓在客戶端運行vagrant connect命令的人直接連接你Vagrant中開開放的端口。這種模式主要用於在局域網的情況下,想連接你的vagrant環境。

這三種模式的具體細節,將在下面部分介紹。同時有一部分詳細介紹這些模式的安全含義。

Vagrant共享還需要一個HashiCorp的賬戶。

HTTP共享

Vagrant共享創建了一個共用的URL,通過這個URL就可以訪問Vagrant環境下的一個HTTP服務器。HTTP共享是當運行vagrant share命令時候的默認模式。

因爲這種模式創建了一個可以公共訪問的URL,所以需要連接的人即使不安裝vagrant也能訪問。

這種模式有很多可以用於的場景:比如想測試網絡可以把你的Vagrant環境放到Internet。也可以給客戶、同事或領導展示。

用法:

想要HTTP 共享的,只需要運行vagrant share

 

$ vagrant share
==> default: Detecting network information for machine...
    default: Local machine address: 192.168.163.152
    default: Local HTTP port: 4567
    default: Local HTTPS port: disabled
==> default: Checking authentication and authorization...
==> default: Creating Vagrant Share session...
    default: Share will be at: ghastly-wombat-4051
==> default: Your Vagrant Share is running!
    default: Name: ghastly-wombat-4051
==> default: URL: http://ghastly-wombat-4051.vagrantshare.com

vagrant就會檢測你的正在運行的HTTP服務,然後把可以使用的顯示出來。只要把這個URL給需要訪問的人,他就可以訪問。如果vagrant在檢測的時候發現http 服務有問題,可以用--http或者--https標識符,獲取更準確的信息。在vagrant share命令運行期間,這種共享會一直運行。可以按Ctrl-C來終止這個會話。

禁用HTTP共享

如果不想把自己創建的vagrant環境共享,則可以用vagrant share命令加上--disable-http標識符就可以了。運行這個命令將不會創建URL共享方式,但是可以採用別的共享模式共享。

無法找到資源

共享web應用必須用相對路徑來獲取本地的圖片、樣表或者javascript腳本等等。開發模式下的web應用將會被遠程獲取。這也就是說如果程序中有直接獲取資源的編碼,比如說<img src="http://127.0.0.1/header.png">,這麼寫的話,其他人就獲取不到。

大多數的web應用框架或者工具包都有生成相對路徑的設置或者幫助。通常情況下相對路徑是一個很好的編程習慣,所以建議大家都這麼做。

HTTPS(SSL)

vagrant共享也可以開放一個SSL端口來,進行SSL訪問。例如,不是用http://foo.vagrantshare.com,而是通過https://foo.vagrantshare.com來獲取。默認情況下,vagrantshare在你的開發環境中,尋找任何在443端口上的SSL,如果找不到,則SSL將會被禁用。你也可以強制設置SSL通過--https標誌符,來執行SSL的端口

SSH 共享

vagrant 只需要運行vagrant share命令加上--ssh標誌符,就可以讓遠程的客戶端通過SSH方式訪問到你的vagrant環境。這種簡單的SSH共享的方式,對於你想幫助同事進行問題解決是非常有用的。這樣也可以進行結對編程。默認的情況下SSH共享是禁用的。如果想開啓只需要運行vagrant share的時候加上--ssh標識符就可以了。

用法:

只需要運行vagrant share --ssh.當ssh服務被啓用的時候,vagrant就會生成一個新的密鑰對,用來進行SSH訪問。共用部分自動的插入到vagrant的機器中,私鑰部分被上傳到服務器用來管理共享人員。私鑰部分是用一個密碼進行加密的,當然也可以不設置密碼。這個密碼是不被vagrant傳輸的,他的作用主要是防止那些知道機器名字,可以任意訪問你的電腦的人訪問。

運行完vagrant share --ssh後,將會把共享的內容顯示出來。

 

$ vagrant share --ssh
==> default: Detecting network information for machine...
    default: Local machine address: 192.168.163.152
    default: Local HTTP port: 4567
    default: Local HTTPS port: disabled
    default: SSH Port: 22
==> default: Generating new SSH key...
    default: Please enter a password to encrypt the key:
    default: Repeat the password to confirm:
    default: Inserting generated SSH key into machine...
==> default: Checking authentication and authorization...
==> default: Creating Vagrant Share session...
    default: Share will be at: itty-bitty-polar-8667
==> default: Your Vagrant Share is running!
    default: Name: itty-bitty-polar-8667
...

任何人都可以直接通過SSH訪問到你的vagrant環境,通過運行vagrant connect --ssh NAME,這裏的名字是之前顯示的共享的名字。

 

$ vagrant connect --ssh itty-bitty-polar-8667
Loading share 'itty-bitty-polar-8667'...
The SSH key to connect to this share is encrypted. You will
require the password entered when creating the share to
decrypt it. Verify you have access to this password before
continuing.

Press enter to continue, or Ctrl-C to exit now.
Password for the private key:
Executing SSH...
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Fri Mar  7 17:44:50 2014 from 192.168.163.1
vagrant@vagrant:~$

 如果私鑰被設置了密碼加密,那麼連接的時候也會被提示輸入密碼解密。還有一個--ssh-once標誌付可以用來使用,當使用了這個標識符,只有一次可以通過vagrant connect --ssh訪問的機會。這樣就防止了以後的繼續訪問。

 VAGRANT CONNECT

vagrant可以共享任何端口到你的vagrant環境中,而不僅僅是通過SSH和HTTP。vagrantconnect 命令給正在連接的人一個靜態的IP,他們可以被用來進行同共享vagrant環境的交互。任何對這個IP地址的交互都會發送到Vagrant的環境中。

用法:

只需要運行Vagrant share。就會自動共享儘可能多的端口給需要連接的機器。如果vagrant環境有個靜態ip或者DNS地址。那麼所有的端口將會可用。否則,vagrant將會直接向後開放機器的端口。注意運行vagrant share獲得的共享名字,把這個名字給那些想要連接你機器的人。他們只需要簡單運行 vagrant connect NAME.這將會給他們一個靜態IP地址,來訪問你的Vagrant環境。

他是如何工作:

Vagrant connect是通過他最善於做的管理虛擬機來實現的。vagrant connect創建了一個很小的虛擬機,這個虛擬機只需要佔用大約20M的內存。任何發送到這個虛擬機的交互都被代理到vagrant虛擬機環境,就好像直接連接他一樣。

 注意:vagrant 不安全的因素

如果vagrant環境或者箱子,被vagrant的不安全密鑰保護。那麼任何人都可以通過SSH訪問。當你想和你信任的人共享,在一定程度你可能只想共享一個類或者一個參數。你不想他們可以通過SSH連接進來。這種情況下,我們建議把不安全的密鑰,刪除掉。

安全

共享你的vagrant環境將會影響一定的安全問題。vagrant共享的安全機制通過SSH的一個密鑰。同時,還有幾個標誌可以控制訪問和管理安全。

--disable-http 這個標誌不會允許創建一個公共的可訪問的HTTP URL。當這個標誌設置了,只有通過vagrant connect的方式訪問。

--ssh-once 這個標誌僅僅允許一個人SSH到你的共享環境一次。當第一個通過SSH訪問後,密鑰就會被刪除掉,SSH也就沒法再次連接了。

除了這些標誌選項,我們還創建了其他特性:

  • vagrant共享用端到端的TLS連接。所以即使是非加密的TCP流在通過各種代理的時候也會被加密。只有在本地代理和vagrant環境之間本地通信的時候,纔不會加密。
  • 共享的名字,比如‘happy-panda-1234’是從4000萬個名字池中隨機選取的。我們還在繼續增加這個名字池的個數。不可能有人可以猜到你的共享名字。
  • 默認情況下,SSH密鑰是通過密碼加密的。這個名字是不傳輸到服務器上,也不通過網絡。
  • 默認情況下,SSH是不共享的,他必須通過--SSH標誌來指定。
  • 一個Web接口,將會顯示共享歷史。未來將會添加展示的基本日誌
  • 共享進程將會一個小時後過期。或者可以通過CTRL-C來終止

更重要的是,你必須理解通過運行vagrant share,就會被所有知道你共享名字的人訪問。如果沒有共享,就不會訪問。

自定義提供程序

如果你開發了一個自定義的提供程序,需要再做一點別的小工作,爲了程序能夠更好的運行。

到現在爲止,只有一步需要做:

public_address 提供者能力-你必須實施這個能力來獲取一個可以連接客戶機的地址字符串。這不是一個全局路由的地址,只有運行vagrant程序的機器才需要。如果沒有發現一個地址,將會返回nil

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章