git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@15733 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
 | 
						|
 | 
						|
 | 
						|
#-------------------------------------------------------------------------------
 | 
						|
#=head1  install_puppet_client
 | 
						|
#=head2  This command installs the puppet client on a xCAT node. It is used as 
 | 
						|
# a postscript on Ubuntu only. 
 | 
						|
#    usage:  
 | 
						|
#      1. use $PUPPETSERVER or $MASTER as the puppet server
 | 
						|
#            updatenode <noderange> -P "install_puppet_client"
 | 
						|
#      2. explicitly specify the puppet server
 | 
						|
#            updatenode <noderange> -P "install_puppet_client -s puppetservername"
 | 
						|
#=cut
 | 
						|
#-------------------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
#Figure out what os this node has
 | 
						|
if [ "$(uname -s)" = "Linux" ]; then
 | 
						|
    result=`cat /etc/*release* 2>&1`
 | 
						|
    echo $result|grep "Ubuntu" > /dev/null
 | 
						|
    if [ $? -eq 0 ]; then
 | 
						|
        os="Ubuntu"
 | 
						|
    else
 | 
						|
        echo $result | grep  "Red Hat" > /dev/null
 | 
						|
        if [ $? -eq 0 ]; then
 | 
						|
            os="RedHat"
 | 
						|
	else
 | 
						|
	    echo $result | grep  "SUSE" > /dev/null
 | 
						|
            if [ $? -eq 0 ]; then
 | 
						|
		os="Sles"
 | 
						|
	    fi
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$os" == "Ubuntu" ]; then
 | 
						|
    #cleanup the old installations
 | 
						|
    echo "Removing old puppet packages....."
 | 
						|
    apt-get -y autoremove puppet --purge
 | 
						|
 | 
						|
    #check if the current node is also a puppet master
 | 
						|
    ismaster=0
 | 
						|
    if [ -f /etc/puppet/fileserver.conf ]; then
 | 
						|
	ismaster=1 
 | 
						|
    fi
 | 
						|
 | 
						|
    #clean the all the configuration files if it is not a master
 | 
						|
    if [ $ismaster -ne 1 ]; then
 | 
						|
	rm -Rf /etc/puppet/*
 | 
						|
	rm -Rf /var/lib/puppet/*
 | 
						|
    fi
 | 
						|
       
 | 
						|
    echo "Adding new repositories....."
 | 
						|
    #get os release name
 | 
						|
    urelease="precise" #default release name
 | 
						|
    urelease=`cat /etc/lsb-release |grep DISTRIB_CODENAME |cut -d= -f2`
 | 
						|
    
 | 
						|
    #add ubuntu repositories from the net.
 | 
						|
    #We use us mirror, what about for the customers of other contires? 
 | 
						|
    echo "deb http://us.archive.ubuntu.com/ubuntu/ $urelease main" > /etc/apt/sources.list.d/os_remote.list
 | 
						|
    echo "deb http://us.archive.ubuntu.com/ubuntu/ ${urelease}-updates main" >> /etc/apt/sources.list.d/os_remote.list
 | 
						|
    echo "deb http://us.archive.ubuntu.com/ubuntu/ $urelease universe" >> /etc/apt/sources.list.d/os_remote.list
 | 
						|
    echo "deb http://us.archive.ubuntu.com/ubuntu/ ${urelease}-updates universe" >> /etc/apt/sources.list.d/os_remote.list
 | 
						|
    
 | 
						|
    #add the puppet lab repositories 
 | 
						|
    repname=puppetlabs-release-${urelease}.deb
 | 
						|
    wget -N --waitretry=10 --random-wait -T 60  http://apt.puppetlabs.com/$repname   -P /tmp 2>> /tmp/wget.log
 | 
						|
    rc=$?
 | 
						|
    if [ $rc -eq 0 ] && [ -f /tmp/$repname ]; then
 | 
						|
	dpkg -i /tmp/$repname
 | 
						|
	apt-get update
 | 
						|
    else 
 | 
						|
	echo "Cannot download  http://apt.puppetlabs.com/$repname"
 | 
						|
	exit 1
 | 
						|
    fi
 | 
						|
    rm /tmp/$repname 
 | 
						|
    
 | 
						|
    #refresh the repository
 | 
						|
    apt-get -y update
 | 
						|
 | 
						|
    echo "Installing puppet client....."
 | 
						|
    #install puppet client
 | 
						|
    apt-get -y install puppet
 | 
						|
    
 | 
						|
    #configure the puppet agent configuration files
 | 
						|
    result=`dirname $0`
 | 
						|
    ${result}/config_puppet_client "$@" 
 | 
						|
    
 | 
						|
    #puppet agent -t --waitforcert 60&
 | 
						|
 | 
						|
elif [ "$os" == "RedHat" ]; then
 | 
						|
    echo "Puppet client installation with xCAT on RedHat is through a kit. Please refer to ... for details.".
 | 
						|
else
 | 
						|
    echo "Puppet client by xCAT is not supported yet on this plateform."
 | 
						|
fi
 | 
						|
 | 
						|
exit 0
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |