2013-10-06 120 views
0

我遇到了一個問題,我的Vagrant文​​件中的chef.json屬性似乎被忽略/覆蓋。廚師Solo Jetty食譜屬性

環境:Mac OS X 10.8主機,在VirtualBox 4.18中虛擬化的Ubuntu 12.04 guest虛擬機。使用Berkshelf進行食譜依賴關係以及所有食譜的Opscode食譜。

這個盒子旋轉起來很好,但我試圖配置更多的樣子,如果我下載了Jetty並取消了tar歸檔文件,而不是從/usr/share/jetty到所有文件系統的一系列符號鏈接,似乎是默認的。

這裏是我的Vagrantfile的廚師部分:

config.vm.provision :chef_solo do |chef| 

    chef.json = { :java => { 
       :install_flavor => "oracle", 
       :jdk_version => '7', 
       :oracle => { 
        :accept_oracle_license_terms => true 
       } 
       }, 
       :jetty => { 
       :port => '8080', 
       :home => '/opt/jetty', 
       :config_dir => '/opt/jetty/conf', 
       :log_dir => '/opt/jetty/log', 
       :context_dir => '/opt/jetty/context', 
       :webapp_dir => '/opt/jetty/webapp' 
       } 
      } 

chef.add_recipe "apt" 
chef.add_recipe "mongodb::default" 
chef.add_recipe "java" 
chef.add_recipe "jetty" 
end 

廚師似乎讀chef.json因爲我可以改變Jetty的在Vagrantfile端口。

我試圖在Jetty食譜的attributes/default.rb中更改這些屬性,但那也沒有幫助。

我錯過了什麼?

回答

0

如果採取jetty/recipes/default.rb

jetty_pkgs = value_for_platform(
    ["debian","ubuntu"] => { 
    "default" => ["jetty","libjetty-extra"] 
    }, 
    ["centos","redhat","fedora"] => { 
    "default" => ["jetty6","jetty6-jsp-2.1","jetty6-management"] 
    }, 
    "default" => ["jetty"] 
) 
jetty_pkgs.each do |pkg| 
    package pkg do 
    action :install 
    end 
end 

對於Debian/Ubuntu的看看下面的框,默認的配方使用的官方倉庫,而不是你想要的東西(從官方網站下載的二進制DEB包,解壓縮它進入您的首選位置)。

由於DEB包有自己的規格(運行dpkg -L jetty來查看他們的文件/目錄結構),我認爲這就是爲什麼你的屬性在chef.json中覆蓋不起作用的原因。

您可以啓用調試輸出看到更多的信息,當您再次運行提供

VAGRANT_LOG=debug vagrant up

注意:它可能會更好編寫自己的食譜下載二進制壓縮和解壓設置權限和做其他如果你想要按照你喜歡的方式安裝Jetty的東西;-)