183 lines
5.8 KiB
YAML
183 lines
5.8 KiB
YAML
---
|
|
- name: Setup Automated Maintenance Cron Jobs
|
|
hosts: localhost
|
|
gather_facts: no
|
|
|
|
vars:
|
|
# 定时任务配置
|
|
cron_jobs:
|
|
# 每日快速检查
|
|
- name: "Daily system health check"
|
|
job: "cd /root/mgmt && ./scripts/ops-manager.sh toolkit all --check > /var/log/daily-health-check.log 2>&1"
|
|
minute: "0"
|
|
hour: "8"
|
|
day: "*"
|
|
month: "*"
|
|
weekday: "*"
|
|
|
|
# 每周系统清理
|
|
- name: "Weekly system cleanup"
|
|
job: "cd /root/mgmt && ./scripts/ops-manager.sh cleanup all > /var/log/weekly-cleanup.log 2>&1"
|
|
minute: "0"
|
|
hour: "2"
|
|
day: "*"
|
|
month: "*"
|
|
weekday: "0" # Sunday
|
|
|
|
# 每月安全检查
|
|
- name: "Monthly security hardening check"
|
|
job: "cd /root/mgmt && ./scripts/ops-manager.sh security all --check > /var/log/monthly-security-check.log 2>&1"
|
|
minute: "0"
|
|
hour: "3"
|
|
day: "1"
|
|
month: "*"
|
|
weekday: "*"
|
|
|
|
# 每周证书检查
|
|
- name: "Weekly certificate check"
|
|
job: "cd /root/mgmt && ./scripts/ops-manager.sh cert all > /var/log/weekly-cert-check.log 2>&1"
|
|
minute: "30"
|
|
hour: "4"
|
|
day: "*"
|
|
month: "*"
|
|
weekday: "1" # Monday
|
|
|
|
# 每日 Docker 清理 (仅 LXC 组)
|
|
- name: "Daily Docker cleanup for LXC"
|
|
job: "cd /root/mgmt && ansible lxc -i ansible/inventory.ini -m shell -a 'docker system prune -f' --become -e 'ansible_ssh_pass=313131' > /var/log/daily-docker-cleanup.log 2>&1"
|
|
minute: "0"
|
|
hour: "1"
|
|
day: "*"
|
|
month: "*"
|
|
weekday: "*"
|
|
|
|
# 每周网络连通性检查
|
|
- name: "Weekly network connectivity check"
|
|
job: "cd /root/mgmt && ./scripts/ops-manager.sh network all > /var/log/weekly-network-check.log 2>&1"
|
|
minute: "0"
|
|
hour: "6"
|
|
day: "*"
|
|
month: "*"
|
|
weekday: "2" # Tuesday
|
|
|
|
tasks:
|
|
# 创建日志目录
|
|
- name: Create log directory
|
|
file:
|
|
path: /var/log/ansible-automation
|
|
state: directory
|
|
mode: '0755'
|
|
become: yes
|
|
|
|
# 设置脚本执行权限
|
|
- name: Make ops-manager.sh executable
|
|
file:
|
|
path: /root/mgmt/scripts/ops-manager.sh
|
|
mode: '0755'
|
|
|
|
# 创建定时任务
|
|
- name: Setup cron jobs for automated maintenance
|
|
cron:
|
|
name: "{{ item.name }}"
|
|
job: "{{ item.job }}"
|
|
minute: "{{ item.minute }}"
|
|
hour: "{{ item.hour }}"
|
|
day: "{{ item.day }}"
|
|
month: "{{ item.month }}"
|
|
weekday: "{{ item.weekday }}"
|
|
user: root
|
|
loop: "{{ cron_jobs }}"
|
|
become: yes
|
|
|
|
# 创建日志轮转配置
|
|
- name: Setup log rotation for automation logs
|
|
copy:
|
|
content: |
|
|
/var/log/*-health-check.log
|
|
/var/log/*-cleanup.log
|
|
/var/log/*-security-check.log
|
|
/var/log/*-cert-check.log
|
|
/var/log/*-docker-cleanup.log
|
|
/var/log/*-network-check.log {
|
|
daily
|
|
missingok
|
|
rotate 30
|
|
compress
|
|
delaycompress
|
|
notifempty
|
|
copytruncate
|
|
}
|
|
dest: /etc/logrotate.d/ansible-automation
|
|
mode: '0644'
|
|
become: yes
|
|
|
|
# 创建监控脚本
|
|
- name: Create monitoring dashboard script
|
|
copy:
|
|
content: |
|
|
#!/bin/bash
|
|
# Automation Monitoring Dashboard
|
|
|
|
echo "🤖 Ansible Automation Status Dashboard"
|
|
echo "======================================"
|
|
echo ""
|
|
|
|
echo "📅 Last Execution Times:"
|
|
echo "------------------------"
|
|
for log in /var/log/*-check.log /var/log/*-cleanup.log; do
|
|
if [ -f "$log" ]; then
|
|
echo "$(basename "$log" .log): $(stat -c %y "$log" | cut -d. -f1)"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
echo "📊 Recent Log Summary:"
|
|
echo "---------------------"
|
|
for log in /var/log/daily-health-check.log /var/log/weekly-cleanup.log; do
|
|
if [ -f "$log" ]; then
|
|
echo "=== $(basename "$log") ==="
|
|
tail -5 "$log" | grep -E "(TASK|PLAY RECAP|ERROR|WARNING)" || echo "No recent activity"
|
|
echo ""
|
|
fi
|
|
done
|
|
|
|
echo "⏰ Next Scheduled Jobs:"
|
|
echo "----------------------"
|
|
crontab -l | grep -E "(health|cleanup|security|cert|docker|network)" | while read line; do
|
|
echo "$line"
|
|
done
|
|
echo ""
|
|
|
|
echo "💾 Log File Sizes:"
|
|
echo "-----------------"
|
|
ls -lh /var/log/*-*.log 2>/dev/null | awk '{print $5, $9}' || echo "No log files found"
|
|
dest: /usr/local/bin/automation-status
|
|
mode: '0755'
|
|
become: yes
|
|
|
|
# 显示设置完成信息
|
|
- name: Display setup completion info
|
|
debug:
|
|
msg: |
|
|
🎉 自动化定时任务设置完成!
|
|
|
|
📋 已配置的定时任务:
|
|
• 每日 08:00 - 系统健康检查
|
|
• 每日 01:00 - Docker 清理 (LXC 组)
|
|
• 每周日 02:00 - 系统清理
|
|
• 每周一 04:30 - 证书检查
|
|
• 每周二 06:00 - 网络连通性检查
|
|
• 每月1日 03:00 - 安全检查
|
|
|
|
📊 监控命令:
|
|
• 查看状态: automation-status
|
|
• 查看定时任务: crontab -l
|
|
• 查看日志: tail -f /var/log/daily-health-check.log
|
|
|
|
📁 日志位置: /var/log/
|
|
🔄 日志轮转: 30天自动清理
|
|
|
|
💡 手动执行示例:
|
|
• ./scripts/ops-manager.sh toolkit all
|
|
• ./scripts/ops-manager.sh cleanup lxc
|
|
• ./scripts/ops-manager.sh health proxmox |