一、自动化部署jdk思路
a、可以使用一台Linux机器充当http服务器,jdk版本资源可以放在http服务器上,这样就可以统一使用wget下载jdk。
官方的jdk直接使用wget下载,因为没有点击确认接受协议,所以下载的jdk不能正常安装。
二、安装http服务器,准备初始环境
# 安装httpd yum -y install httpd # 启动httd服务器( centos7使用: systemctl start httpd.service) service httpd start # 关闭防火墙 sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service # 切换目录 cd /var/www # 创建存放app目录 (将jdk版本远程上传到该目录下) mkdir soft # 可以使用http://[ip]/soft/访问http服务器是否成功 # 生成免密key ssh-keygen #其他机器如果没有expect命令,每一个机器需要安装 yum -y install expect
三、编写自动化脚本
vi boot.sh
#!/bin/bash SERVERS="node2 node3 node4 node5" PASSWORD=xxx BASE_SERVER=192.168.182.xxx 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_jdk.sh [email protected]$SERVER:/root ssh [email protected]$SERVER "/root/install_jdk.sh $BASE_SERVER" done
vi install_jdk.sh
#!/bin/bash yum install -y wget wget $1/soft/jdk-8u161-linux-x64.tar.gz tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local rm -rf jdk-8u161-linux-x64.tar.gz sed -i ‘/export JAVA_HOME=\/usr\/local\/jdk1.8.0_161/‘d /etc/profile sed -i ‘/export PATH=\$PATH:\$JAVA_HOME\/bin/‘d /etc/profile cat >> /etc/profile << EOF export JAVA_HOME=/usr/local/jdk1.8.0_161 export PATH=\$PATH:\$JAVA_HOME/bin EOF source /etc/profile
a、赋予执行权限
chmod +x boot.sh install_jdk.sh
b、只需要修改SERVERS,PASSWORD,BASE_SERVER三个属于值即可,
1、SERVERS代表需要安装机器的ip,多个ip用空格隔开
2、PASSWORD所有机器密码,规定所有机器的密码一样
3、BASE_SERVER是代表充当http服务器ip
4、根据下载的jdk版本,需要修改install_jdk.sh脚本
三、测试
a、执行./boot.sh则自动化完成部署
yexiangyang