2017-02-08 10 views
0

私は最初のシェフカスタムリソースを作成しようとしています。しかし、私はその他の埋め込みリソースのプロパティにアクセスすることはできません。組み込みリソースはカスタムリソースのシェフプロパティにアクセスできません。

私はこれを実行するときしかし、私は取得するには、次のリソース

property :template_shortname, String 

action :setup do 
    node.set['apache']['version'] = '2.4' 
    node.set['apache']['package'] = 'apache2' 

    include_recipe "apache2::default" 

    print "the shortname is " + template_shortname 

    web_app "sample_app" do 
    server_name "server.com" 
    server_aliases [] 
    docroot "/www-data" 
    template "prefix " + template_shortname 
    end 
end 

を作成しました:デバッグログから

The shortname is: server 

しかしtemplate_shortnameのパラメータは、空の配列が含まれています。 1.1.16 シェフ・クライアントバージョン:12.17.44 配信版:マスター(83358fb62c0f711c70ad5a81030a6cae4017f103) バークスバージョン:5.2私はシェフ-DK シェフ開発キットのバージョンを使用しています

 TypeError 
     --------- 
     no implicit conversion of Array into String 

     Cookbook Trace: 
     --------------- 
     /tmp/kitchen/cache/cookbooks/phpapp/resources/setup.rb:21:in `+' 
     /tmp/kitchen/cache/cookbooks/phpapp/resources/setup.rb:21:in `block (2 levels) in class_from_file' 
     /tmp/kitchen/cache/cookbooks/phpapp/resources/setup.rb:17:in `block in class_from_file' 

:だから、で終了します。 0 キッチンバージョン:1.14.2

+0

'template"接頭辞#{template_shortname} "'文字列補間を使用します(追加ではありません) – Tensibai

+0

おそらく、[doc](https://docs.chef.io/custom_resources.html#new-resource)の 'new_resource.template_shortname'プロパティ)。全体として、そのような属性を設定し、アクションを伴うinclude_recipeを呼び出すと、脆弱になり、すぐにあなたを噛み砕く可能性があります。 Thosはあなたのphpappの料理本の属性ファイルとレシピに入っていなければなりません。私はあなたがここで何をしようとしているのか分かりません。 – Tensibai

+0

Sry私はnew_resourceも空であると述べたはずです。私はこのブログの投稿http://blog.backslasher.net/chef-custom-resources.htmlを理解しているので、もはや必要ありません。私がシェフの文書を正しく読んでいるのであれば、名前の衝突の場合にのみ必要となるはずです。 – crasu

答えて

1

問題がweb_appがリソースそのものではないということです、それが定義です。だから魔法の範囲のものはそこで動作しません。とにかく融合モードの魔法は非常に脆弱であるため、new_resource.whateverを使用することをお勧めします。

0

はポイズリソースが似た何かをやっていることが判明:

https://github.com/poise/application_php/blob/master/providers/mod_php_apache2.rb

これは動作します:

new_resource = @new_resource 

    web_app "sample_app" do 
    server_name "server.com" 
    server_aliases [] 
    docroot "/www-data" 
    template "prefix " + new_resource.template_shortname 
    end 

私はまだ、この作業の理由を知っていただければ幸いです....

関連する問題