요리법에 필요한 일련의 보석을 설치하려고합니다. 그러나 개발 도구 (gcc, gcc-C++, ruby-devel 등)를 설치하지 않을 것입니다. 자세한 내용은 this을 참조하십시오.)를 대신 사용하여 관련 보석 파일을 내 요리 책에 리소스로 포함 시켰습니다.요리사가 미리 포장 한 보석 세트를 설치합니다
나는 현재이 두 요리사가 필요
- 에 실행하고 문제점이 코드
node["chef_gems"].each do |pkg, attrs| gem_file = "#{pkg}-#{attrs["version"]}.gem" dest_gem_file = "#{Chef::Config['file_cache_path']}/#{gem_file}" cookbook_file "#{dest_gem_file}" do source "gems/#{gem_file}" end if File.exist?("#{dest_gem_file}") chef_gem pkg do source "#{dest_gem_file}" action :install end end end
을 사용하고 있습니다 때문에 File.exist의 실행? 컴파일 단계에서 파일이 존재하지 않기 때문에 컴파일되지 않습니다. 이 작업을 수행하는 간단한 방법이 있습니까?
- 이러한 보석 중 일부는 종속성을 가지므로 기본적으로 알파벳순으로 보이는 항목을 주문합니다. 나는 (더 못생긴) 정렬 순서 키를 통해 명령 시행의 길을 내려 가고 있으며, 더 좋은 방법이 있는지 궁금해하고있다.
- 뒤로 물러서서, 이것은 지나치게 복잡해 보입니다. 프로덕션 서버에 개발 도구를 설치하지 않고도 보석 및 그 종속성을 설치한다는 목표를 달성하기위한보다 간단한 전략이 있습니까?
File.exist가없는 원래 오류가 있습니까? 이전 자원이 항상 파일을 만들거나 예외를 발생하므로
Starting Chef Client, version 11.4.0
resolving cookbooks for run list: ["cis-rhel", "ec2-hostname-rhel", "chef-client", "cassandra"]
Synchronizing Cookbooks:
<REDACTED>
Compiling Cookbooks...
[2013-10-16T18:45:01-04:00] WARN: Cloning resource attributes for user[<REDACTED>] from prior resource (CHEF-3694)
<REDACTED>
[2013-10-16T18:45:01-04:00] WARN: Current user[cassandra]: /var/chef/cache/cookbooks/cassandra/recipes/user.rb:23:in `from_file'
Recipe: cassandra::packages
* chef_gem[cassandra-cql] action install
================================================================================
Error executing action `install` on resource 'chef_gem[cassandra-cql]'
================================================================================
Gem::Exception
--------------
Cannot load gem at [/var/chef/cache/cassandra-cql-1.1.4.gem] in/
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:36:in `block in from_file'
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `each'
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `from_file'
/var/chef/cache/cookbooks/cassandra/recipes/default.rb:23:in `from_file'
Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/cassandra/recipes/packages.rb
36: chef_gem pkg do
37: source "#{dest_gem_file}"
38: action :install
39: end
40: # end
Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:36:in `block in from_file'
chef_gem("cassandra-cql") do
provider Chef::Provider::Package::Rubygems
action [:install]
retries 0
retry_delay 2
package_name "cassandra-cql"
source "/var/chef/cache/cassandra-cql-1.1.4.gem"
cookbook_name "cassandra"
recipe_name "packages"
end
================================================================================
Recipe Compile Error in /var/chef/cache/cookbooks/cassandra/recipes/default.rb
================================================================================
Gem::Exception
--------------
chef_gem[cassandra-cql] (cassandra::packages line 36) had an error: Gem::Exception: Cannot load gem at [/var/chef/cache/cassandra-cql-1.1.4.gem] in/
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:36:in `block in from_file'
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `each'
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `from_file'
/var/chef/cache/cookbooks/cassandra/recipes/default.rb:23:in `from_file'
Relevant File Content:
----------------------
/var/chef/cache/cookbooks/cassandra/recipes/packages.rb:
29: node["cassandra"]["chef_gems"].each do |pkg, attrs|
30: gem_file = "#{pkg}-#{attrs["version"]}.gem"
31: dest_gem_file = "#{Chef::Config['file_cache_path']}/#{gem_file}"
32: cookbook_file "#{dest_gem_file}" do
33: source "gems/#{gem_file}"
34: end
35: # if File.exist?("#{dest_gem_file}")
36>> chef_gem pkg do
37: source "#{dest_gem_file}"
38: action :install
39: end
40: # end
41: end
42:
43: # Some distributed packages of Cassandra start the service in their
44: # postinstall; keep them all equal and a restart can be done after the configs
45: # are written on the first run. Added difficulty: they also come with init
[2013-10-16T18:45:01-04:00] ERROR: Running exception handlers
[2013-10-16T18:45:02-04:00] FATAL: Saving node information to /var/chef/cache/failed-run-data.json
[2013-10-16T18:45:02-04:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated
[2013-10-16T18:45:02-04:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-10-16T18:45:02-04:00] FATAL: Gem::Exception: chef_gem[cassandra-cql] (cassandra::packages line 36) had an error: Gem::Exception: Cannot load gem at [/var/chef/cache/cassandra-cql-1.1.4.gem] in/
정확한 답을 표시하는 것을 잊지 마십시오! :) – sethvargo