2017-02-21 2 views
2

私はBerkShelf documentationを見ました。私はそれが料理本の依存関係を管理することを表していることが分かりました。だから、私はjavaとマシンを構築したいと思います。そう、その後は、ベルシェルフ、シェフ、気まぐれと混同しています。

name 'custom-java' 
... 
version '0.1.0' 

、私は単にberks installを実行しました:

chef generate cookbook custom-java 

マイBerksfile次のとおりです:

source 'https://supermarket.chef.io' 
metadata 

cookbook 'java' 

と私のmetadata.rbがある私が最初に私のカスタム料理を生成しましたすべての依存関係が解決され、~\.berkshelf\cookbooksの下にあります。

しかし、custom-javaを迷惑メールの設定に使用する方法はわかりません。私は迷惑な人にこの料理本を自分のマシンに供給するために何をする必要がありますか?

私の放浪構造は次のとおりです。

VagrantFile 
├───chef 
│ ├───cookbooks 
│ │ ├───(((1))) <<<<<<<<<<<<<<<<<<<<<< 
│ ├───roles 
│ │ ├───java-dev-workstation.rb 

Vagrantfile内容は次のとおりです。

Vagrant.configure("2") do |config| 
    config.vm.box = "centos/7" 
    config.vm.provision "chef_solo" do |chef| 
    chef.roles_path = "chef/roles" 
    chef.cookbooks_path = "chef/cookbooks" 
    chef.add_role "java-dev-workstation" 
    end 
end 

そしてjava-dev-workstation.rb

name "java-dev-workstation" 

default_attributes( 
    # Because it's Oracle, we need to agree to the terms and conditions. 
    :custom-java => { >>>>>>>>> (((2))) 
    :install_flavor => 'oracle', 
    :jdk_version => '8', 
    :accept_license_agreement => true, 
    :oracle => { "accept_oracle_download_terms" => true } 
    } 

) 

run_list(
    "recipe[java]" 
) 

私はシェフ12.18.31を使用しています。 (((1)))

  1. :私はどのように "輸入" 私のcustom-java料理、する必要がありますか?それはどこにありますか?
  2. オン(((2)))javaをどのように設定する必要がありますか?

EDIT は私がchef.cookbooks_path設定しました:

config.vm.provision "chef_solo" do |chef| 
    chef.roles_path = "chef/roles" 
    chef.cookbooks_path = 'D:\projects\living\vagrant\production\berk\custom-java' 
    chef.add_role "java-dev-workstation" 
end 

EDIT2

それにも関わらず、custom-java依存関係は解決されていません。

================================================================================ 
Error Resolving Cookbooks for Run List: 
================================================================================ 

Missing Cookbooks: 
------------------ 
No such cookbook: yum 

Expanded Run List: 
------------------ 
* custom-java 

Platform: 
--------- 
x86_64-linux 

metadata.rb内容は次のとおりです。

name 'berk' 
... 
version '0.1.0' 

supports 'centos' 

depends 'yum' 

現在、すべての依存関係が~/.berkshelf/cookbooksに位置しています。それはshef-soloあなたはラッパー料理パターンのために後方にそれを取るんでした...それで用

+0

'java-dev-workstation.rb'ロールのrun_listに' custom-java'を追加することができます。 –

+0

私はどこにでもアップロードしていない場合、どのようにして 'custom-java'料理ブックを解決しようとしていますか? – Jordi

+0

あなたは 'chef_solo'をプロビジョニングして' cookbooks_path'を提供しています - それで十分です。 –

答えて

0

を見ていないようで、あなたのcustom_javajavaに依存し、(ノード属性をオーバーライド)のデフォルトの動作を変更する必要があります。

カスタムJavaメタデータ。rbにはこのような行が含まれているはずですが、berksfileにあるものはシェフクライアントの実行によって決して解釈されません。それは、一貫したバンドルを作成するための外部依存リゾルバです。

depends 'java', '~> 1.47' 

そしてdefault.rbライン

include_recipe 'java' 

(あなたが一番上に別の場所でソースよりもバージョンを引っ張っている場合を除き)次に、あなたのBerksfileは料理のラインを省略することができます

次のあなた役割はcustom-javaをレシピとして使用し、javaではなく、シェフクライアントの実行(編集前の不気味な部分はOKとなり、両方の料理ブックを引っ張るはずです)は、java coobooks、overwri custom-javaで定義されているものであり、目的の動作に終わるはずです。

また、実行リストをcustom-javaに設定するだけで、役割が完全に回避されても動作します。

さらに詳しい概要を知りたい場合は、https://learn.chef.ioのすべてのチュートリアルを読むことを強くお勧めします。

関連する問題