2013-04-08 06:31:35 +00:00
|
|
|
#!/bin/sh
|
2013-04-08 06:27:25 +00:00
|
|
|
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
#####################################################
|
|
|
|
#=head1 install_chef_client
|
|
|
|
#=head2 This command installs the chef client on a xCAT node(only for Ubuntu). It is used as
|
|
|
|
# a postscript on Ubuntu only.
|
|
|
|
# usage:
|
|
|
|
# 1. Setup the chef client using updatenode
|
|
|
|
# updatenode <noderange> -P "install_chef_client"
|
|
|
|
# 2. Setup chef client during os provisioning
|
|
|
|
# chef <noderange> -p postscripts=install_chef_client
|
|
|
|
# 3. Download chef deb from non-default repository
|
|
|
|
# updatenode <noderange> -P "install_chef_workstation -r http://mn/install/chef/chef_11.4.0-1.ubuntu.11.04_amd64.deb -s chefservername"
|
|
|
|
#=cut
|
|
|
|
#####################################################
|
|
|
|
|
|
|
|
cat /etc/*release | grep "Ubuntu" > /dev/null
|
|
|
|
if [ $? != 0 ]; then
|
|
|
|
echo "chef script only runs on ubuntu currently."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
os="ubuntu"
|
|
|
|
|
|
|
|
#if [ $ARCH != "x86_64" ]; then
|
|
|
|
# echo "chef script only runs on x86_64 currently."
|
|
|
|
# exit -1;
|
|
|
|
#fi
|
|
|
|
|
|
|
|
# For the URL to download chef:
|
|
|
|
# -r flag takes precedence
|
|
|
|
# then the environment variable CHEF_URL
|
|
|
|
# then the default internet location
|
|
|
|
ARGNUM=$#;
|
|
|
|
|
|
|
|
if [ $ARGNUM -gt 1 ]; then
|
|
|
|
if [ $1 = "-r" ]; then
|
|
|
|
chefurl=$2
|
|
|
|
fi
|
|
|
|
if [ $1 = "-s" ]; then
|
|
|
|
chefserver=$2
|
|
|
|
fi
|
|
|
|
if [ $ARGNUM -gt 3 ]; then
|
|
|
|
if [ $3 = "-r" ]; then
|
|
|
|
chefurl=$4
|
|
|
|
fi
|
|
|
|
if [ $3 = "-s" ]; then
|
|
|
|
chefserver=$4
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$chefserver" ]
|
|
|
|
then
|
|
|
|
if [ -n "$CHEFSERVER" ]
|
|
|
|
then
|
|
|
|
chefserver=$CHEFSERVER
|
|
|
|
fi
|
|
|
|
if [ -z "$chefserver" ]
|
|
|
|
then
|
|
|
|
chefserver=$SITEMASTER
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$chefserver" ]; then
|
|
|
|
if [ -f /etc/chef-server/admin.pem -a -f /etc/chef-server/chef-validator.pem ]; then
|
|
|
|
echo "the current node is also a chef server"
|
|
|
|
if [ -f /opt/chef-server/embedded/bin/knife ]; then
|
|
|
|
if [ ! -f /usr/bin/knife ]; then
|
|
|
|
ln -s /opt/chef-server/embedded/bin/knife /usr/bin/knife
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f /usr/bin/knife ]; then
|
|
|
|
#configure the chef configuration file
|
|
|
|
result=`dirname $0`
|
|
|
|
${result}/config_chef_workstation
|
|
|
|
exit 0;
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $chefurl != "" ]; then
|
|
|
|
if [ "$CHEF_URL" != "" ]; then
|
|
|
|
chefurl=$CHEF_URL
|
|
|
|
else
|
|
|
|
arch=`uname -i`
|
|
|
|
osmv=`cat /etc/*release | grep DISTRIB_RELEASE |cut -d= -f2`
|
|
|
|
#https://www.opscode.com/chef/download?v=latest&prerelease=false&p=ubuntu&pv=12.04&m=x86_64
|
|
|
|
chefurl="https://www.opscode.com/chef/download?v=latest&prerelease=false&p=$os&pv=$osmv&m=$arch";
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $os == "ubuntu" ]; then
|
|
|
|
#remove the old chef-server and the configuration files
|
|
|
|
apt-get -y autoremove --purge chef
|
|
|
|
rm -rf /etc/chef
|
|
|
|
rm -rf /root/.chef
|
|
|
|
|
|
|
|
#add the internet Ubuntu repositories
|
|
|
|
#urelease="precise" #default release name
|
|
|
|
urelease=`cat /etc/lsb-release |grep DISTRIB_CODENAME |cut -d= -f2`
|
|
|
|
|
|
|
|
|
|
|
|
hostname=`hostname -f`
|
|
|
|
##hostname="10.1.0.82"
|
|
|
|
|
|
|
|
#add the public source
|
|
|
|
ubuntusource="deb http://us.archive.ubuntu.com/ubuntu/ $urelease main\n
|
|
|
|
deb http://us.archive.ubuntu.com/ubuntu/ ${urelease}-updates main\n
|
|
|
|
deb http://us.archive.ubuntu.com/ubuntu/ $urelease universe\n
|
|
|
|
deb http://us.archive.ubuntu.com/ubuntu/ ${urelease}-updates universe\n
|
|
|
|
"
|
|
|
|
echo -e $ubuntusource >> /etc/apt/sources.list
|
|
|
|
|
|
|
|
# download the chef-server deb packages
|
|
|
|
#wget https://opscode-omnitruck-release.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.6-1.ubuntu.12.04_amd64.deb
|
|
|
|
rm -rf /tmp/chef.deb
|
|
|
|
wget -N --waitretry=10 --random-wait -T 60 $chefurl -O /tmp/chef.deb
|
|
|
|
rc=$?
|
|
|
|
if [ $rc -eq 0 ] && [ -f /tmp/chef.deb ]; then
|
|
|
|
# install it
|
|
|
|
dpkg -i /tmp/chef.deb
|
|
|
|
else
|
|
|
|
echo "Cannot download $chefurl"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
apt-get -y update
|
|
|
|
|
|
|
|
# install rake git
|
|
|
|
apt-get install -y rake git
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
#configure the knife configuration file
|
|
|
|
result=`dirname $0`
|
|
|
|
${result}/config_chef_workstation -s $chefserver
|
|
|
|
|
|
|
|
|
|
|
|
|