Trouble using knife bootstrap on RHEL 5.5


#1

Chef folks,

I have several RHEL 5.5 VMs (call them A, B, C, …) on which I would like to
use chef. I need to get A configured so that it can run knife bootstrap to set
up B, C, … as chef clients. I’m running into a problem when I try running
knife bootstrap on A. Here are the details.

A, B, C, … are part of a computing farm that is isolated from the outside
world – no access to the RedHat repos, no access to the normal gem repos.
We’ve set up a chef server inside the farm, and mirrored the repos inside
the farm. I start with A, B, C, … as unadorned RHEL 5.5 images, and get
ssh access set up from A to B, C, … . I bring A to the point where it can
run knife (install gcc, Ruby 1.8.7, RubyGems, etc.) , and try to run knife
bootstrap in A to bring up B. Here’s what I see:

knife bootstrap tn7cretapp02 -VV --run-list ‘recipe[dos]’ --distro dos-eat
–sudo --ssh-user ******

/usr/lib/ruby/gems/1.8/gems/net-ssh-2.1.4/lib/net/ssh/transport/cipher_factory.rb:52:in
padding=': padding=() function is unimplemented on this machine (NotImplementedError) from /usr/lib/ruby/gems/1.8/gems/net-ssh-multi-1.1/lib/net/ssh/multi/session_actions.rb:37:injoin’
from
/usr/lib/ruby/gems/1.8/gems/net-ssh-multi-1.1/lib/net/ssh/multi/session_actions.rb:37:in
sessions' from /usr/lib/ruby/gems/1.8/gems/net-ssh-multi-1.1/lib/net/ssh/multi/session_actions.rb:37:ineach’
from
/usr/lib/ruby/gems/1.8/gems/net-ssh-multi-1.1/lib/net/ssh/multi/session_actions.rb:37:in
sessions' from /usr/lib/ruby/gems/1.8/gems/net-ssh-multi-1.1/lib/net/ssh/multi/session_actions.rb:81:inopen_channel’
from
/usr/lib/ruby/gems/1.8/gems/chef-0.10.4/lib/chef/knife/ssh.rb:160:in
ssh_command' from /usr/lib/ruby/gems/1.8/gems/chef-0.10.4/lib/chef/knife/ssh.rb:341:inrun’
from
/usr/lib/ruby/gems/1.8/gems/chef-0.10.4/lib/chef/knife/bootstrap.rb:153:in
run' from /usr/lib/ruby/gems/1.8/gems/chef-0.10.4/lib/chef/knife.rb:391:inrun_with_pretty_exceptions’
from
/usr/lib/ruby/gems/1.8/gems/chef-0.10.4/lib/chef/knife.rb:166:in run' from /usr/lib/ruby/gems/1.8/gems/chef-0.10.4/lib/chef/application/knife.rb:128:inrun’
from /usr/lib/ruby/gems/1.8/gems/chef-0.10.4/bin/knife:25
from /usr/bin/knife:19:in `load’
from /usr/bin/knife:19

Any idea what’s wrong? If it’s a help, the script I use to configure A is
below.

Thanks for the help,

Jeff


export WORK_DIR=/tmp/chef-installer
mkdir -p {WORK_DIR} cd {WORK_DIR}

export CHEFSERVER=http://*******

download a yum config file that configures yum to use EATs rpm repo

wget ${CHEFSERVER}/files/repos/disney_eat.repo

move the yum repo config that points at the internal EAT repo into place

if [ ! -f /etc/yum.repos.d/disney_eat.repo ]; then
mv disney_eat.repo /etc/yum.repos.d
fi

make sure all previous traces of ruby are uninstalled

yum -y erase ruby
yum -y erase ruby-1.8.5
yum -y erase ruby-1.8.7
yum -y clean all
rm -rf /usr/lib/ruby

install Ruby 1.8.7-p352

yum -y install gdbm ruby-libs ruby rubygems ruby-devel

patch openssl library

wget
${CHEFSERVER}/files/tarballs/ruby-1.8.7/ruby-1.8.7-p352-ext-openssl-lib-patch.tgz
tar xzf ruby-1.8.7-p352-ext-openssl-lib-patch.tgz
cd /tmp/chef-installer/ruby-openssl-patch
./install.sh

install chef-solo, chef-client, and knife using the Rubygem method

yum -y install rubygem-chef

cd {WORK_DIR} wget {CHEFSERVER}/files/repos/DISNEY-EAT-BASE/kernel-headers-2.6.18-194.3.1.el5.x86_64.rpm
rpm -ih kernel-headers-2.6.18-194.3.1.el5.x86_64.rpm

yum -y install gcc44 gcc44-c++ automake autoconf make

ln -nsf /usr/bin/gcc44 /usr/bin/gcc
ln -nsf /usr/bin/g++44 /usr/bin/g++

yum -y install libxml2-devel libxslt-devel

wget ${CHEFSERVER}/files/tarballs/chef-client/chef-client-gems.zip
unzip -o chef-client-gems.zip
cd chef-client-gems
gem install netaddr --local
gem install chef --local