1. 程式人生 > >virtualbox+vagrant學習-4-Vagrantfile-4-Tips & Tricks

virtualbox+vagrant學習-4-Vagrantfile-4-Tips & Tricks

Tips & Tricks

Vagrantfile是一種非常靈活的配置格式。因為它只是Ruby,所以你可以用它做很多事情。然而,同樣的道理,因為它是Ruby,所以有很多方法可以朝自己的腳開槍(即傷到自己)。在使用本頁上的一些提示和技巧時,請注意正確使用它們。


1.Loop Over VM Definitions 迴圈實現虛擬機器定義

如果你想對許多多機機器應用稍微不同的配置,可以使用迴圈來實現這一點。例如,如果你想建立三個機器:

(1..3).each do |i|
  config.vm.define "node-#{i}" do |node|
    node.vm.provision 
"shell", inline: "echo hello from node #{i}" end end

⚠️多機器定義和提供程式重寫的內部部分是延遲載入的。如果更改配置中使用的變數的值,可能會導致問題。

例如,下面的迴圈不工作:

# THIS DOES NOT WORK!
for i in 1..3 do
  config.vm.define "node-#{i}" do |node|
    node.vm.provision "shell",
      inline: "echo hello from node #{i}"
  end
end

Ruby中的for i in ...結構實際上在每次迭代中都修改了i的值,而不僅僅只是複製。因此,當你執行這個時,每個節點實際上都將提供相同的文字。
這是一個很容易犯的錯誤,vagrant並不能真正保護它,所以我們能做的最好的就是在這裡提到它。

 

2.Overwrite host locale in ssh session在ssh會話中覆蓋主機區域設定

通常,宿主語言環境變數被傳遞給客戶。如果客戶軟體不支援主機區域設定,可能會導致失敗。一個可能的解決方案是覆蓋Vagrantfile中的locale:

ENV["LC_ALL"] = "en_US.UTF-8"

Vagrant.configure("2") do |config|
  # ...
end

 這個改變只在Vagrantfile檔案中可見