自动化软件部署的shell脚本
在实际项目中,我们经常用到需要自动化部署软件的情况,这种情况下,我们就不能人为地在命令行下敲击命令了,一切都需要通过shell脚本自动化完成。所谓自动化完成,其实也就是通过写shell程序,模拟人为敲击linux指令,这样一来,所有的指令一气呵成,方便自动化部署。
我们以一个简单的例子进行说明:
需求:通过一台服务器向其他多台服务器安装jdk,期间自动配置ssh免登录,并且其他多台服务器下载该台服务器上面的jdk,下载完成后,解压并进行环境变量的配置。
代码:
boot.sh:
#!/bin/bash SERVERS="weekend02 weekend03" PASSWORD=hadoop BASE_SERVER=weekend01 auto_ssh_copy_id() { expect -c "set timeout -1; spawn ssh-copy-id $1; expect { *(yes/no)* {send -- yes\r;exp_continue;} *assword:* {send -- $2\r;exp_continue;} eof {exit 0;} }"; } ssh_copy_id_to_all() { for SERVER in $SERVERS do auto_ssh_copy_id $SERVER $PASSWORD done } ssh_copy_id_to_all for SERVER in $SERVERS do scp install.sh root@$SERVER:/root ssh root@$SERVER /root/install.sh done
以上这段shell脚本,首先在weekend01上向weekend02和weekend03进行ssh免登录,然后将install.sh文件发送过去,并且运行该文件进行安装。
install.sh:
#!/bin/bash BASE_SERVER=weekend01 yum install -y wget wget $BASE_SERVER/soft/jdk-7u45-linux-x64.tar.gz tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local cat >> /etc/profile << EOF export JAVA_HOME=/usr/local/jdk1.7.0_45 export PATH=\$PATH:\$JAVA_HOME/bin EOF
以上这段脚本,进行下载、解压并且配置环境变量的功能。