Python在CentOS上的自动化运维实践
在CentOS上使用Python进行自动化运维前,需先搭建基础环境:
sudo yum install python3安装Python 3.x(推荐3.6+),并通过sudo yum install python3-pip安装pip(Python包管理工具)。python3 -m venv myenv创建虚拟环境,激活后(source myenv/bin/activate)再安装所需库,避免全局依赖冲突。使用Paramiko库实现SSH连接、命令执行及文件传输,适用于批量管理服务器。
paramiko.SSHClient()建立连接,执行远程命令(如ls -l、df -h),获取输出结果。ssh.open_sftp()打开SFTP通道,实现本地与远程服务器的文件上传(put)/下载(get)。ls -l命令,输出结果。使用psutil库获取系统资源状态(CPU、内存、磁盘、网络),结合邮件通知实现告警。
psutil.cpu_percent(interval=1)获取CPU使用率,psutil.virtual_memory()获取内存使用率,psutil.disk_usage('/')获取磁盘使用率。smtplib库发送邮件(需配置SMTP服务器、发件人/收件人信息)。使用Fabric库(轻量级)或Ansible框架(成熟配置管理)实现应用部署与服务管理。
fabric.Connection连接远程服务器,执行git pull拉取最新代码、pip install -r requirements.txt安装依赖、systemctl restart myapp重启服务,完成应用更新。nginx.yml),定义“安装Nginx”的任务(更新apt缓存、安装Nginx),通过ansible-playbook nginx.yml执行,实现批量服务器配置。使用crontab设置周期性任务,让Python脚本定期运行(如每分钟监控一次系统状态)。
crontab -e编辑定时任务,添加类似* * * * * /usr/bin/python3 /path/to/script.py的行(* * * * *表示每分钟执行),保存后cron会自动加载任务。chmod +x script.py),并使用绝对路径(如/usr/bin/python3而非python3)。使用Ansible实现多台服务器的配置统一管理,避免手动重复操作。
- name定义任务名称,hosts指定目标服务器组(如webservers),tasks包含具体操作(如copy复制文件、pip安装Python包、systemd管理服务)。ansible-playbook命令快速应用配置到多台服务器。logging库记录脚本运行日志(如logging.basicConfig(filename='/var/log/script.log', level=logging.INFO)),便于排查问题。PyInstaller将Python脚本打包成可执行文件(pyinstaller --onefile script.py),无需在目标服务器安装Python环境,简化部署流程。