如何在Debian上使用Python进行自动化运维
导读:在 Debian 上使用 Python 进行自动化运维 一 环境准备与基础配置 安装 Python 3 与 pip:执行命令:sudo apt update && sudo apt install -y python3 p...
在 Debian 上使用 Python 进行自动化运维
一 环境准备与基础配置
- 安装 Python 3 与 pip:执行命令:
sudo apt update & & sudo apt install -y python3 python3-pip。 - 使用虚拟环境隔离依赖:
- 创建:
python3 -m venv venv - 激活:
source venv/bin/activate - 安装依赖:
pip install -r requirements.txt
- 创建:
- 建议将脚本放在专用目录(如 /opt/ops/),并统一使用 /usr/bin/python3 作为解释器路径,便于 systemd/cron 调用。
- 安全建议:优先使用 SSH 密钥 与 sudo,避免将密码硬编码在脚本中;必要时通过 SSH Agent 或 密钥口令管理凭据。
二 远程执行与批量运维
- 使用 Fabric(基于 Paramiko 的高级封装)进行 SSH 批量执行与文件分发:
- 安装:
pip install fabric - 示例:
- 单机执行:
from fabric import Connection; conn = Connection('user@host'); conn.run('whoami') - 批量任务:
- 定义任务:
@task def update_system(c): c.run('sudo apt update & & sudo apt upgrade -y & & sudo apt autoremove -y') - 执行:
fab -H host1,host2 update_system
- 定义任务:
- 单机执行:
- 安装:
- 直接使用 Paramiko 进行更细粒度控制(命令执行、SFTP 传输等):
- 安装:
pip install paramiko - 示例:
- 连接与执行:
ssh = paramiko.SSHClient(); ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()); ssh.connect('host', username='user', password='pass'); stdin, stdout, stderr = ssh.exec_command('ls -l') - SFTP:
sftp = ssh.open_sftp(); sftp.put('local', '/remote'); sftp.get('/remote', 'local'); sftp.close(); ssh.close()
- 连接与执行:
- 安装:
- 适用场景:批量变更、滚动发布、远程巡检、配置分发等。
三 定时与常驻任务管理
- 使用 Cron 定时运行脚本:
- 编辑:
crontab -e - 示例(每天 02:00 执行):
0 2 * * * /usr/bin/python3 /opt/ops/backup.py
- 编辑:
- 使用 systemd 管理常驻服务:
- 创建服务文件 /etc/systemd/system/my-python-script.service:
[Unit] Description=My Python Script After=network.target [Service] ExecStart=/usr/bin/python3 /opt/ops/monitor.py Restart=always User=ops StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target - 启用与启动:
sudo systemctl daemon-reload & & sudo systemctl enable --now my-python-script.service
- 创建服务文件 /etc/systemd/system/my-python-script.service:
- 使用 Supervisor 管理进程(适合多进程/易崩溃任务):
- 安装:
sudo apt install -y supervisor - 配置 /etc/supervisor/conf.d/my-python-script.conf:
[program:my-python-script] command=/usr/bin/python3 /opt/ops/worker.py autostart=true autorestart=true stderr_logfile=/var/log/my-python-script.err.log stdout_logfile=/var/log/my-python-script.out.log - 生效:
sudo supervisorctl reread & & sudo supervisorctl update & & sudo supervisorctl start my-python-script
- 安装:
- 选型建议:Cron 适合定时任务;systemd 适合长期运行且需系统级集成的服务;Supervisor 适合多进程与快速自恢复。
四 监控告警与日志实践
- 系统资源监控与阈值告警(使用 psutil):
- 安装:
pip install psutil - 示例:
import psutil, smtplib from email.mime.text import MIMEText cpu = psutil.cpu_percent(interval=1) mem = psutil.virtual_memory().percent if cpu > 80 or mem > 80: msg = MIMEText(f"CPU: { cpu} %, Memory: { mem} %") msg['Subject'] = '服务器资源告警' msg['From'] = 'ops@example.com' msg['To'] = 'admin@example.com' with smtplib.SMTP('smtp.example.com') as s: s.send_message(msg)
- 安装:
- 服务健康探测(使用 requests):
import requests def check(url): try: r = requests.get(url, timeout=5) print('UP' if r.status_code == 200 else 'DOWN') except requests.RequestException as e: print('DOWN', e) check('http://localhost/health') - 日志规范:使用 logging 模块统一记录时间与级别,便于 journald/Supervisor 收集与轮转。
- 安全加固:生产环境建议启用 APT 自动安全更新:
sudo apt install -y unattended-upgrades & & sudo dpkg-reconfigure unattended-upgrades,降低漏洞暴露时间。
五 配置管理与 CI/CD 集成
- 使用 Ansible 进行无代理配置管理与编排:
- 安装:
sudo apt install -y ansible - 示例 Playbook(安装并启动 Nginx):
- hosts: webservers become: yes tasks: - name: Install Nginx apt: name: nginx state: present - name: Ensure service is running service: name: nginx state: started enabled: yes - 执行:
ansible-playbook -i inventory.ini web.yml
- 安装:
- 与 Jenkins/GitLab CI 集成:在 Jenkinsfile 或 .gitlab-ci.yml 中执行
pip install -r requirements.txt、pytest、ansible-playbook等步骤,实现构建、测试、部署一体化流水线。 - 适用场景:Ansible 负责声明式配置与批量变更;Jenkins/GitLab CI 负责持续集成与持续交付。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Debian上使用Python进行自动化运维
本文地址: https://pptw.com/jishu/753657.html
