deploy.conf
node01,all,other,datanode,journalnode,zookeeper,node02,all,other,datanode,journalnode,zookeeper,node03,all,other,datanode,journalnode,zookeeper,node04,all,other,namenode,node05,all,other,namenode,
文件分发:deploy.sh
#!/bin/bash#set -xif [ $# -lt 3 ]then echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag" echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile" exit fisrc=$1dest=$2tag=$3if [ 'a'$4'a' == 'aa' ]then confFile=~/bin/deploy.confelse confFile=$4fiif [ -f $confFile ]then if [ -f $src ] then for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` do scp $src $server":"${dest} done elif [ -d $src ] then for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` do scp -r $src $server":"${dest} done else echo "Error: No source file exist" fielse echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"fi
远程执行命令:runRemoteCmd.sh
#!/bin/bash#set -xif [ $# -lt 2 ]then echo "Usage: ./runRemoteCmd.sh Command MachineTag" echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile" exit ficmd=$1tag=$2if [ 'a'$3'a' == 'aa' ]then confFile=~/bin/deploy.confelse confFile=$3fiif [ -f $confFile ]then for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` do echo "*******************$server***************************" ssh $server "source ~/.bash_profile; $cmd" done else echo "Error: Please assign config file or run runRemoteCmd.sh command with deploy.conf in same directory"fi
使用示例
将~/.bashrc 分发到所有主机
deploy.sh ~/.bashrc ~/ all
runRemoteCmd.sh "source ~/.bashrc" all
在zookeeper主机上执行cp -rf /home/hadoop/zkdata/* /home/hadoop/zkdata_upgrade命令
runRemoteCmd.sh "cp –rf /home/hadoop/zkdata/* /home/hadoop/zkdata_upgrade" zookeeper