2012-08-10 88 views
1

我目前正在將大量EC2實例轉換爲一系列puppet腳本,然後使用Vagrant虛擬化本地開發的鑽井平臺。如何在流浪者和傀儡之間共享hosts文件

我已經陷入了管理流浪者的網絡並將其映射到生產上。

首先,我有這樣的事情:

# Main Web Server 
config.vm.define :app do |app_config| 
    app_config.vm.host_name = "web1" 
    app_config.vm.network :hostonly, "10.0.0.2" 
    app_config.vm.box = "precise64" 

    ...etc 
     puppet.manifest_file = "persist/web.pp" 
end 

# First DB server 
config.vm.define :db1 do |db1_config| 
    db1_config.vm.host_name = "db1" 
    db1_config.vm.network :hostonly, "10.0.0.3" 
    db1_config.vm.box = "precise64" 
    ...etc 
     puppet.manifest_file = "persist/db.pp" 
end 

etc. 
在這種情況下web.pp和db.pp

然後是相當簡單的,他們只是建立蟒蛇,uwsgi,nginx的時,MySQL等

所以問題:我需要裏面例如puppet/modules/hosts/files/hosts必須指定類似:

10.0.0.3 db1.X.com 
10.0.0.4 db2.X.com 
etc. 

在生產中我們使用我們網站的DNS和EC2實例的DNS記錄組合(我不能放入主機)。通常,我們的haproxy主機具有公共DNS記錄,並且它們在其配置中保存EC2名稱(這使得不能使用主機文件)。

那麼,如何可以建立兩個傀儡,流浪漢可以導入和使用全局映射,如文件:

hosts = { 
     web => 10.0.0.2, 
     db1 => 10.0.0.3, 
     db2 => 10.0.0.4, 
} 

,我可以從例如haproxy.cfg木偶模板中訪問,但也從內流浪訪問文件,所以我可以設置vm.network

限制:

  • 不能是IP而已,一定是象徵性的名稱或者IP或者DNS
  • 不能用一個木偶大師(不幸的是在這一個不靈活)。
  • 將DNS服務器虛擬化似乎也很麻煩,所以id不是。

而且我真的紅寶石,如果你提供的例子(這將是巨大的),請形容它足以讓我能夠通過紅寶石文檔找到我的路。

回答

0

2個選項:

1) 您可以閱讀流浪者,你從一個文件中(放在它的目錄,DB,等等),然後使用這些內容產生Vagrantfile所示的哈希值。流浪的配置只是運行一些紅寶石代碼(我認爲)如果不是

2) 有一個shell腳本生成Vagrantfile和/或puppet config/static文件。

實現細節很簡單。

相關問題