I just installed the new CentOS 6.3 VM and disabled SELinux. Below is the exact script that I ran to install Ruby, Chef Solo and tried to provide VM:
#!/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
Unfortunately, immediately after running the script, I get:
[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",
So it looks like it is choking on trying to load node['php']['version'] . This is defined in my /tmp/lc-chef/cookbooks/liquidcompass/attributes/default.rb with:
default['php']['version'] = "5.4.9"
So, it looks like the chef is not loading the attribute file, or something else is wrong. Not quite sure how to find out or not.
Duration:
- RubyGems 1.8.10
- Chef 10.16.2
Respectfully,
Andrew
By the way, this is a stack trace:
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