2012-12-06 16 views
6

Yeni bir CentOS 6.3 VM'si kurdum ve SELinux'u devre dışı bıraktım.Chef-Solo "undefined method" [] 'nil için: NilClass "

#!/bin/bash 
# 
# Install Chef-Solo if it doesn't exist, then provision the server. 
# 
CHEF_FILE="https://dl.dropbox.com/u/4204671/LiquidCompass/lc-chef.tar.gz" 

if [ "$#" -eq 0 ]; then 
    echo "You must provide the type of server this is. (Eg: production-api, qa-api, development)" 
    exit 1 
fi 

if [ ! -x "/usr/bin/chef-solo" ]; then 
    rpm -Uvh http://rbel.frameos.org/rbel6 
    yum install -y ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode 

    cd /tmp 
    curl -O http://production.cf.rubygems.org/rubygems/rubygems-1.8.10.tgz 
    tar zxf rubygems-1.8.10.tgz 
    cd rubygems-1.8.10 
    ruby setup.rb --no-format-executable 

    gem install chef --no-ri --no-rdoc 
fi 

if [ -d "/etc/chef" ]; then 
    rm -rf /etc/chef 
fi 

if [ -d "/tmp/lc-chef" ]; then 
    rm -rf /tmp/lc-chef* 
fi 

mkdir /etc/chef 

echo "file_cache_path \"/tmp/lc-chef/chef-solo\" 
cookbook_path \"/tmp/lc-chef/cookbooks\" 
role_path \"/tmp/lc-chef/roles\" 
json_attribs \"/etc/chef/node.json\"" > /etc/chef/solo.rb 

echo "{ 
    \"name\": \"$1\", 
    \"normal\": { 
     \"company\": \"Liquid Compass LLC\", 
     \"tags\": [] 
    }, 
    \"chef_environment\": \"_default\", 
    \"run_list\": [ 
     \"role[$1]\" 
    ] 
}" > /etc/chef/node.json 

cd /tmp 
curl -O $CHEF_FILE 
tar zxf lc-chef.tar.gz 

chef-solo -c /etc/chef/solo.rb 

Maalesef komut çalıştırır sağ elime ulaştıktan:

[2012-12-05T17:39:27-07:00] INFO: Start handlers complete. 

================================================================================ 
Recipe Compile Error in /tmp/lc-chef/cookbooks/liquidcompass/recipes/php.rb 
================================================================================ 

NoMethodError 
------------- 
undefined method `[]' for nil:NilClass 

Cookbook Trace: 
--------------- 
    /tmp/lc-chef/cookbooks/liquidcompass/recipes/php.rb:20:in `from_file' 

Relevant File Content: 
---------------------- 
/tmp/lc-chef/cookbooks/liquidcompass/recipes/php.rb: 

13: # Unless required by applicable law or agreed to in writing, software 
14: # distributed under the License is distributed on an "AS IS" BASIS, 
15: # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
16: # See the License for the specific language governing permissions and 
17: # limitations under the License. 
18: # 
19: 
20>> php_url      = "http://us.php.net/distributions/php-#{node['php']['version']}.tar.gz" 
21: node.set['php']['prefix'] = "/opt/php-#{node['php']['version']}" 
22: node.set['php']['conf_path'] = "#{node['php']['dir']}/php.ini" 
23: node.set['php']['configure_flags'] = [ 
24:  "--prefix=#{node['php']['prefix']}", 
25:  "--with-config-file-path=#{node['php']['dir']}", 
26:  "--with-config-file-scan-dir=#{node['php']['dir']}/conf.d", 
27:  "--with-curl", 
28:  "--with-pear", 
29:  "--with-gd", 

Yani benziyor Aşağıda ben VM Ruby, şef Solo yüklemeye koştu ve hüküm teşebbüs tam script node['php']['version']'u yüklemeye çalışırken boğuluyor. Bu benim /tmp/lc-chef/cookbooks/liquidcompass/attributes/default.rb ile tanımlanır:

default['php']['version']    = "5.4.9" 

Yani şef nitelikler dosyası yüklenirken ya değil olduğunu, ya da başka bir şey yanlış anlaşılıyor. Bunu nasıl bulacağından tam olarak emin değilsin.

Koşu:

  • RubyGems 1.8.10
  • Chef 10.16.2

Saygılarımızla,
Andrew arada

, bu Yığın izleme:

Generated at Wed Dec 05 17:39:27 -0700 2012 
NoMethodError: undefined method `[]' for nil:NilClass 
/tmp/lc-chef/cookbooks/liquidcompass/recipes/php.rb:20:in `from_file' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/cookbook_version.rb:558:in `load_recipe' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/mixin/language_include_recipe.rb:46:in `load_recipe' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/mixin/language_include_recipe.rb:33:in `include_recipe' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/mixin/language_include_recipe.rb:27:in `each' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/mixin/language_include_recipe.rb:27:in `include_recipe' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/run_context.rb:79:in `load' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/run_context.rb:75:in `each' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/run_context.rb:75:in `load' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/client.rb:198:in `setup_run_context' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/client.rb:418:in `do_run' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/client.rb:176:in `run' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/application.rb:140:in `run_chef_client' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/application/solo.rb:224:in `run_application' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/application/solo.rb:216:in `loop' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/application/solo.rb:216:in `run_application' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/../lib/chef/application.rb:72:in `run' 
/usr/lib64/ruby/gems/1.8/gems/chef-10.16.2/bin/chef-solo:25 
/usr/bin/chef-solo:19:in `load' 
/usr/bin/chef-solo:19 

cevap

3

chef solo varsayılan özellikleri desteklemiyor.

Düğümler dizininin altında .json biçimindeki öznitelikleri listeleyen bir node.json öğesi oluşturmanız gerekir. Yani sizin durumda

:

{ 
    "php": { 
     "version": "5.4.9" 
    } 
} 

varsayılan özelliklerini kullanmak istiyorsanız

/.rb formatta, özelliklerin, sen şef-sunucu/şef-istemci kullanmaya ihtiyacımız olacak.

+0

Bu çok garip ... Ama sadece VM uzakta patladı ve onu yeniden: Basit bir örnek olarak, şuna bak. Ardından OP'de sağladığım senaryoyu çalıştırdım ve gayet iyi çalıştı. İlk VM ile ne olduğu hakkında hiçbir fikrim yok. –

+0

Bu gerçekten garip: http://wiki.opscode.com/display/chef/Chef+Solo#ChefSolo-JSON%2CAttributesandRecipes –

5

Standart nitelikleri Chef Solo

Ben senin yemek kitabı içinde neler emin değilim iyi çalışır - ama öyle değil şef ile Kodunuzla ilgili bir konudur.

https://gist.github.com/adamhjk/6141718

+0

Şef-solo sürümünüz nedir? –

+0

Bunun benim için çalıştığımı onaylayabilirim 'şef-solo --version Şef: 11.10.4' – devalias

İlgili konular