LWRP (Chef 10) を使用して独自のデプロイ リソースを作成しようとしていますが、エラーが発生し、ドキュメントで例を見つけることができませんでした。
私のリソースファイルは次のようになります。
actions :install
attribute :package_name, :kind_of => String, :name_attribute => true
attribute :app_name, :kind_of => String
attribute :cmd_prefix, :kind_of => String, :default => ''
attribute :deploy_tag, :kind_of => String
attribute :wsgi_stat_port, :kind_of => Fixnum
このリソースを使用しようとすると、次のエラーが発生します。
NoMethodError
-------------
undefined method `deploy_tag' for nil:NilClass
Cookbook Trace:
---------------
/var/cache/chef/cookbooks/dpn_python_common/providers/app.rb:59:in `class_from_file'
/var/cache/chef/cookbooks/dpn_python_common/providers/app.rb:57:in `class_from_file'
トレースで参照されるプロバイダー ファイルのブロックは次のとおりです。
git DEPLOY_PATH do
repository repo_url
reference @new_resource.deploy_tag
user 'root'
group 'root'
end
印刷してみました@new_resource.deploy_tag
が、期待どおりの値が含まれているため、LWRP 内から git リソースが正しく機能していないだけだと思いますが、それを示すドキュメントを見つけることができませんでしたこのことをどのように呼ぶべきか。助言がありますか?
実際の答え:
次のように、リソース ブロックを使用する前にローカル変数を作成する必要があるようです。
deploy_tag = @new_resource.deploy_tag
git DEPLOY_PATH do
repository repo_url
reference deploy_tag
user 'root'
group 'root'
end