在運維早期, 服務器體量小, 部署步驟少、操作簡單、對運維人員要求較低,而隨著互聯網行業飛速發展,服務器體量變大、部署步驟增多、操作變得繁瑣、手工操作易發生操作風險且效率低,運維人力成本變高,體量大 (1000+) 的服務器難以人工管理,以前的手工運維就已經難以招架了,這時自動化運維就開始相應響應行業的需求,開始飛速發展!
直至今日,自動化運維體系已經成熟完善,例如:
● 支持混合云的配置管理數據庫(CMDB)。CMDB 存儲與管理企業 IT 架構中設備的各種配置信息,它與所有服務支持和服務交付流程都緊密相連,支持這些流程的運轉、發揮配置信息的價值,同時依賴于相關流程保證數據的準確性。
● 完備的監控和應用性能分析系統。資源監控(如服務器、磁盤、網絡)和性能監控(如中間件、數據庫)都是較為基礎的監控,開源工具有 Zabbix、Nagios、OpenFalcon(國產)。
● 批量運維工具。開源的批量運維工具有 Ansible、SaltStack、Puppet、Chef,其中 Ansible 和 SaltStack 純由 Python 編寫,代碼質量和社區活躍程度都很高,推薦使用。
● 日志分析工具。如何快速地從成百上千臺服務中采集日志并分析出問題所在呢?日志采集方面工具有 Sentry + 日志分析有 ELK,兩者都是開源的。
● 持續集成和版本控制工具。持續集成是一種軟件實踐,團隊成員經常集成他們的工作,每次集成都通過自動化的構建來驗證,從而盡早發現集成錯誤。持續集成的工具 Jenkins+ 版本控制是軟件 Git。
● 漏洞掃描工具。借助商業的漏洞掃描工具掃描漏洞,保護服務器資源不受外界的攻擊。
python 與運維有啥關系呢?
● 大部分的開源運維工具都是由純 Python 編寫的,如 Celery、ansible、Paramiko、airflow 等,學 習 Python 后可以更加順暢地使用這些開源工具提供的 API,可以閱讀這些開源工具的源代碼,甚至可以修改源代碼以滿足個性化的運維需求;
● Python 與其他語言相比,更加優雅、明確和簡單。
示例:paramiko 使用
paramiko 模塊是基于 python 實現了 SSH2 遠程安全連接,支持認證和密鑰方式,可以實現遠程連接、命令執行、文件傳輸、中間 SSH 代理功能
安裝 paramiko
需要下載 python3,安裝方式可在網上查閱資料
pip3 install paramiko
# -*- coding: UTF-8 -*-
# This is a test about paramiko
# 實例化一個transport對象
import paramiko
ip = input("請輸入需要遠程的主機IP地址:")
uname = input("請輸入登錄用戶名:")
pword = input("請輸入登錄密碼:")
# 建立一個sshclient對象
ssh = paramiko.SSHClient()
# 允許將信任的主機自動加入到host_allow 列表,此方法必須放在connect方法的前面
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 調用connect方法連接服務器
ssh.connect(hostname=ip,port=22,username=uname,password=pword)
# 手動輸入待執行命令
mycmd = input("請輸入需要執行的命令:")
stdin,stdout,stderr = ssh.exec_command(mycmd)
# 直接執行指定命令
ssh.exec_command('cd /tmp/ && touch paramiko.txt && echo "hello 少年" > paramiko.txt')
# 結果放到stdout中,如果有錯誤將放到stderr中
print(stdout.read().decode())
print(stderr.read().decode())
# 關閉連接
ssh.close()
驗證結果: