Ansible實現批量管理服務器
Ansible介紹:
a. ansible是一個基於Python開發的自動化運維工具
b. ansible是一個基於ssh協議實現遠程管理的工具
c. ansible軟件可以實現多種批量管理操作(批量系統配置、批量軟件部署、批量文件拷貝、批量運行命令)
saltstack puppet (都是類似軟件)
批量管理服務特征介紹.
客戶端不需要啟動任何服務,服務端不需要任何的配置.
Server端安裝(管理端): yum -y install ansible.
ansible客戶端(受控端):沒有客戶端軟件安裝.
部署安裝流程(ansible自動化批量管理服務器部署流程)CentOS6.9環境:
a.管理主機: 10.0.0.61 m01
受控主機:
10.0.0.41 backup(備份主機)
10.0.0.31 nfs01(nfs服務器)
Ansible軟件自動化部署條件:
b.建議基於ssh密鑰方式建立遠程連接.
@1.ssh-keygen 創建密鑰對(管理主機上) ssh-keygen -t dsa
@2.分發公鑰文件(管理主機進行分發)
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.41
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.51
@3.檢查是否可以進行基於密鑰遠程管理;
ssh ip uptime (ssh [email protected])
免交互進行創建密鑰對和 免交互進行密鑰分發.
>/root/.ssh/known_hosts 追加輸出重定向, 清空 known_hosts 已連接主機列表.
ssh-keygen -t dsa (創建密鑰,需要進行人為幹預)
ssh-keygen -t dsa -f /root/.ssh/id_rsa
-N/-P -N ""/-P""
免交互實現密鑰的創建到指定的目錄下: ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
man ssh ssh-keygen
ssh-keygen - authentication key generation, management and conversion
需要安裝sshpass 軟件 yum -y install sshpass
免交互進行密鑰分發.
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.31"
批量創建密鑰對和批量分發密鑰腳本:
#!/bin/bash
rm -f /root/.ssh/id*
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
for ip in 31 41 51 8
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no $ip"
done
重新分發之前 cd /root/.ssh .
[root@nfs01 .ssh]# rm -f authorized_keys
刪除之後再在管理主機上執行免密鑰分發文件.
ssh -o StrictHostKeyChecking 參數,實現免交互認證
基於ssh口令方式建立遠程連接(也可以)
通過對vim /usr/bin/ssh-copy-id 修改這個文件的端口,可以更改遠程SSH的端口
{ eval "$GET_ID" ; } | ssh -p 52113 $1 "exec sh -c ‘cd; umask 077; test -d .ssh || mkdir .ssh ; cat >> .s
sh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon .ssh .ssh/authorized_keys >/
dev/null 2>&1 || true)‘" || exit 1
c. ansible 軟件下載安裝
yum -y install ansible 服務端安裝軟件(ansible)
yum -y install libselinux-python 受控主機需要安裝這個軟件
需要修改ansible.cfg 文件
d.ansible軟件應用過程.
ansible-doc -l 查看ansible的模塊
Ansible實現批量管理服務器