关于多台虚拟机进行自动化部署的问题汇总(小白做笔记记录之用,大神请绕路~)
首先贴上shell脚本代码(代码的前提条件是
1.首先已经在各台虚拟机上都配置了repo的本地yum软链接,源服务器起名min2
2.通过yum 下载scp软件 (用于跨机器进行文件传输拷贝) yum -y install scp
3.各台机器的/etc/hosts与/etc/sysconfig/network中的IP地址与主机名已配好(否则会出现找不到主机的错误)
)
以下是 boot.sh文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # !/bin/bash SERVERS = "min1 min3 min4" PASSWORD = hadoop BASE _ SERVER = min 2 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 |
以下是install.sh文件
#!/bin/bash BASE_SERVER=min2 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
运行boot.sh文件 ./boot.sh
我出现了两个问题:
首先,expect(shell脚本中的嵌套命令)命令不存在,下载expect包 yum -y install expect(本地服务器下载即可,其他虚拟机无需下载)
其次,出现
ssh-copy-id:/usr/bin/ssh-copy-id: ERROR: No identities found
这个问题,问题来源是boot.sh文件中的
spawn ssh-copy-id $1;这句代码,查资料后是因为没有生成公钥与私钥
1 | < em > 解决办法: < /em > |
ssh-keygen
#以上命令等价于 ssh-keygen -t rsa
#-t:指定密钥的类型,默认为SSH-2 的rsa类型; 这个命令,会在/etc/.ssh文件夹下生成id_rsa.pub和id_rsa两个文件
重新运行boot.sh,问题解决!!
小白做笔记记录之用,大神请绕路~
1 | < em id = "__mceDel" > < /em > |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步