zoukankan      html  css  js  c++  java
  • 关于多台虚拟机进行自动化部署的问题汇总(小白做笔记记录之用,大神请绕路~)

    首先贴上shell脚本代码(代码的前提条件是

    1.首先已经在各台虚拟机上都配置了repo的本地yum软链接,源服务器起名min2

    2.通过yum 下载scp软件 (用于跨机器进行文件传输拷贝) yum -y install scp

    3.各台机器的/etc/hosts与/etc/sysconfig/network中的IP地址与主机名已配好(否则会出现找不到主机的错误)

    以下是 boot.sh文件

    #!/bin/bash
    
    SERVERS="min1 min3 min4"
    PASSWORD=hadoop
    BASE_SERVER=min2
    
    auto_ssh_copy_id() {
        expect -c "set timeout -1;
            spawn ssh-copy-id $1;
            expect {
                *(yes/no)* {send -- yes
    ;exp_continue;}
                *assword:* {send -- $2
    ;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;这句代码,查资料后是因为没有生成公钥与私钥

    解决办法:

     ssh-keygen

    #以上命令等价于 ssh-keygen -t rsa

    #-t:指定密钥的类型,默认为SSH-2 的rsa类型;      这个命令,会在/etc/.ssh文件夹下生成id_rsa.pub和id_rsa两个文件

    重新运行boot.sh,问题解决!!

     

    小白做笔记记录之用,大神请绕路~

     

     

  • 相关阅读:
    2021.07.11 【ABAP随笔】采购订单Message输出打印
    项目管理43210学习笔记
    Rails跳过回调方法
    树莓派接USB温湿度传感器(python)
    Visual Studio2019安装时报错Microsoft.Net.4.7.2.FullRedist的解决方法
    微信浏览器中H5使用wx-open-launch-app打开第三方APP
    Linux系统使用qq邮箱在线发送邮件
    LRU工程实现源码(一):Redis 内存淘汰策略
    Android Studio解决Build Log出现乱码问题
    git新拉取项目
  • 原文地址:https://www.cnblogs.com/fjlcoding/p/9957976.html
Copyright © 2011-2022 走看看