11、ssh自動化腳本編寫



11.1、如何一鍵自動化安裝50台規模集群網站搭建:

1、自動化思路:

kickstart無人值守安裝linux系統(自動創建用戶、密碼、優化);

分發機上創建秘鑰對、批量發走公鑰(expect);

寫部署及優化腳本、批量發到各個服務器上,遠程執行安裝;

2、高級架構師:

cobbler無人值守安裝linux系統(自動創建用戶、密碼、優化,saltstack客戶端)

服務端satl上創建認證,寫配置來批量安裝管理各個節點服務器應用

kvm虛擬化、根據不同的業務提前做好鏡像,linux基礎優化,saltstack客戶端

通過雲計算工具openstack管理鏡像,批量生成虛擬機

3、自動化運維:

需求分析 cdn;

機房設備上下架;

虛擬機:彈性、擴展性、充分利用資源;

系統初始化;

應用環境初始化;

應用的部署 調試 配置;

代碼發布;

服務監控 應用 (系統cpu、硬盤、內存);

數據備份;

4、自動化發展的階段:

環境的統一;

標准化:比如軟件/usr/local/xxx/opt;

文檔化;

工具化;

web化;

平台化;

11.2、ssh key + expect:

1、前期准備:

各個服務器的ssh配置文件已經優化,禁用root用戶ssh登錄,更改服務器監聽的端口號和監聽的端口;

[root@m01 ~]# useradd lc(所有的服務器都要建立相同的用戶,lc)

[root@m01 ~]# echo '123456' | passwd --stdin lc(所有的服務器lc用戶都要建立相同的密碼)

[root@m01 ~]# echo ‘lc ALL=(ALL) NOPASSWD:ALL(所有的服務器都lc用戶都要sudo權限)

[lc@m01 .ssh]$ ssh-keygen -t dsa -P ' ' -f ~/.ssh/id_dsa >/dev/null 2>&1

[root@m01 ~]# yum install expect -y

[lc@m01 ~]$ mkdir -p /server/scripts

2、創建秘鑰對、批量發送公鑰(expect),批量發到各個服務器上,遠程執行安裝服務(一次):

(1)[root@m01 ~]$ vim /server/scripts/fenfa_sshkey.exp

#!/usr/bin/expect

if { $argc != 2 } {

send_user "usage: expect fenfa_sshkey.exp file host dir\n"

exit 1

}

set file [ lindex $argv 0 ]

set host [ lindex $argv 1 ]

#set dir [ lindex $argv 2 ]

set password "123456"

spawn ssh-copy-id -i $file "-p 52113 lc@$host"

expect {

"yes/no" {send "yes\n";exp_continue}

"*password" {send "$password\n"}

}

expect eof

exit -onexit {

send_user "success!\n"

}

#expect fenfa_sshkey.exp ~/.ssh/id_das.pub 172.168.1.31

(2)[root@m01 ~]$ vim /server/scripts/fenfa_sshkey.sh

#!/bin/sh

. /etc/init.d/functions

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#1 create dsa key

ssh-keygen -t dsa -P ' ' -f ~/.ssh/id_dsa >/dev/null 2>&1

if [ $? -eq 0 ];then

action "create dsa 172.16.1.61" /bin/true

else

action "create dsa 172.16.1.61" /bin/false

exit 1

fi


#2 sed id_dsa.pub

for n in 8 31 41;do

expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$n >/dev/null 2>&1

if [ $? -eq 0 ];then

action "sed id_dsa.pub 172.16.1.$n" /bin/true

else

action "sed id_dsa.pub 172.16.1.$n" /bin/false

fi

done


#3 install service

for n in 8 31 41;do

ssh -t -p 52113 lc@172.16.1.$n sudo yum install httpd -y >/dev/null 2>&1

if [ $? -eq 0 ];then

action "install httpd 172.16.1.$n" /bin/true

else

action "install httpd 172.16.1.$n" /bin/false

fi

done

[lc@m01 ~]$ sh /server/scripts/fenfa_sshkey.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM