2

動作中の Vagrant インスタンスがあり、Chef/Vagrant で「アプリケーション」クックブックを使用して、git からデプロイし、次のエラー メッセージを取得できるようにしようとしています。

FATAL: NoMethodError: undefined method `path' for
 Chef::Resource::Application

当然、「パス」は「アプリケーション」レシピの不可欠な部分です。コメントアウトすると、次の属性に対して同じメッセージが表示されます。

metadata.rb に次の行が含まれていることを確認しました。

depends 'application'

また、vagrant インスタンスをリロードして、すべての変更が反映され、「berks update」が実行されたことを確認しました。このエラーの原因をどの方向に探せばよいでしょうか?

Vagrantfile は非常に標準的で、主に次のもので構成されています。

config.vm.provision :chef_solo do |chef|
    chef.json = {
      :mysql => {
        :server_root_password => 'rootpass',
        :server_debian_password => 'debpass',
        :server_repl_password => 'replpass'
      },
      :postgresql => {
        :password => {
          :postgres => "rootpass"
        }
      },
    }

    chef.run_list = [
      "recipe[iw-app::default]",
      "recipe[iw-app::db]",
      "recipe[iw-app::deploy]"
    ]
  end

デプロイレシピが含まれている間

user "#{node[:ii][:user]}" do
  system true
end

application node[:ii][:app_name] do
  path        node[:ii][:deploy_to]
  owner       node[:ii][:user]
  group       node[:ii][:group]
  repository  node[:ii][:repo][:url]
  revision    node[:ii][:repo][:branch]
  deploy_key  node[:ii][:repo][:deploy_key]
  packages    ["git"]
end

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

depends 'apt'
depends 'python'
depends 'application'
depends 'application_python'
depends 'postgresql'
4

3 に答える 3

1

私は非常によく似た問題を抱えていました。私の場合、それを解決したのは、例外をスローしていたブロック内で使用していた誤った変数を削除することでした。

たとえば、次のようにスローしていました。

ark "apachesolr-drupal" do
  url node['solri']['drupal']['url']
  version node['solr']['drupal']['version']
  path "/tmp"  
  action :put
end

と...

NoMethodError
-------------
No resource or method named `ark' for `Chef::Recipe "drupal"'

node['solri']['drupal']['url']次の作品が設定されていません。

ark "apachesolr-drupal" do
  url node['solr']['drupal']['url']
  version node['solr']['drupal']['version']
  path "/tmp"
  action :put
end
于 2014-02-12T04:58:50.343 に答える
0

私は非常によく似た問題を抱えていました。私の場合、それを解決したのは、例外をスローしていたブロック内で使用していた誤った変数を削除することでした。

シェフのリソース構文をチェックしてください!

git "#{node['customscripts']['dir']}" do
  repository node['customscripts']['url']
  reference node['customscripts']['ref']
  action :sync
  user root
  group root
end

ユーザーとグループに引用符を追加して修正します。

git "#{node['customscripts']['dir']}" do
  ... 
  user "root"
  group "root"
end

シェフのバージョンは次のとおりです。

chef-client --version
Chef: 11.10.0
于 2014-04-15T12:45:45.823 に答える