当有多台机器要做相同的部署工作时,为了避免重复劳作,就需要用到自动化部署。自动化部署——简单来说就是批量的在目标机器上安装程序。下面我们以安装JDK来看一下自动化部署是怎么执行的。
准备:sdk的安装包我们放在一个httpd的服务器下面,提供sdk的下载服务。
- 首先要做的就是机器间的ssh免密通信的操作。
- 上传执行脚本到目标机器
- 在执行脚本中先安装wget
- 通过wget下载安装包
- 安装、配置环境变量
下面看具体的操作:
#!/bin/bash
SERVERS="node-1.cn node-2.cn" #目标机器 需要部署sdk的机器
PASSWORD=123456#在集群机器系统安装的时候root用户的密码统一为123456,
auto_ssh_copy_id() {#模拟人机交互
expect -c "set timeout -1;#
spawn ssh-copy-id $1;#spawn 开始执行命令 $1:函数调用的时候传递的第一个参数
expect {
*(yes/no)* {send -- yes\r;exp_continue;}#当系统提示含有yes/no的时候 输入yes 并回车,继续执行
*password:* {send -- $2\r;exp_continue;}#当系统提示中含有password时 输入参数2即$PASSWORD 并回车 继续执行
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 #拷贝install.sh文件到目标机器的root目录下
ssh root@$SERVER /root/install.sh#登陆到目标机器并执行安装脚本
done
下面我们看一下 install.sh 文件
#!/bin/bash
BASE_SERVER=node-3#提供sdk下载的机器
yum install -y wget#安装wget
wget $BASE_SERVER/soft/jdk-7u45-linux-x64.tar.gz#通过wget下载sdk安装包
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local#解压安装包到/usr/local 目录
cat >> /etc/profile << EOF#使用cat 将export..这两行输入到/etc/profile 文件
export JAVA_HOME=/usr/local/jdk1.7.0_45
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
这样sdk就自动安装到了node-1、mode-2这两台机器上了