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