1. 程式人生 > >關於多臺虛擬機進行自動化部署的問題匯總(小白做筆記記錄之用,大神請繞路~)

關於多臺虛擬機進行自動化部署的問題匯總(小白做筆記記錄之用,大神請繞路~)

title ssh ide pan col 存在 timeout 文件中 boot.s

首先貼上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\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;這句代碼,查資料後是因為沒有生成公鑰與私鑰

解決辦法:

ssh-keygen

#以上命令等價於 ssh-keygen -t rsa

#-t:指定密鑰的類型,默認為SSH-2 的rsa類型; 這個命令,會在/etc/.ssh文件夾下生成id_rsa.pub和id_rsa兩個文件

重新運行boot.sh,問題解決!!

小白做筆記記錄之用,大神請繞路~

 

 

關於多臺虛擬機進行自動化部署的問題匯總(小白做筆記記錄之用,大神請繞路~)