CentOS系统自动化运维实现方法
Shell脚本是CentOS自动化运维的基础工具,适合执行简单的重复性任务(如系统更新、备份、服务启停)。通过编写Shell脚本,可将多条命令组合成一个可执行的文件,结合cron定时任务实现自动化调度。
示例:以下脚本实现系统更新、重要文件备份及磁盘空间监控(阈值90%,超过则发送邮件告警):
#!/bin/bash
# 更新系统
sudo yum update -y
# 备份重要文件(假设重要文件路径为/path/to/important/files)
tar -czvf /backup/important_files_$(date +%F).tar.gz /path/to/important/files
# 监控磁盘空间
df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output; do
usage=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
if [ $usage -ge 90 ]; then
mail -s "Disk Space Alert" your_email@example.com <<< "Disk space is critically low on $(echo $output | awk '{ print $2 }')"
fi
done
使用步骤:将脚本保存为auto_maintenance.sh,赋予执行权限(chmod +x auto_maintenance.sh),再通过crontab -e添加定时任务(如每天凌晨2点执行:0 2 * * * /path/to/auto_maintenance.sh)。
Ansible是基于SSH的无Agent自动化工具,适合配置管理、应用部署及批量任务执行。其核心是Playbook(YAML格式),通过定义任务清单实现自动化。
实施步骤:
sudo yum install epel-release && sudo yum install ansible)。/etc/ansible/hosts),示例如下:[webservers]
server1.example.com
server2.example.com
[databases]
db1.example.com
install_web.yml,定义安装Nginx、启动服务及设置开机自启的任务:---
- hosts: webservers
become: yes # 使用root权限
tasks:
- name: Install Nginx
yum:
name: nginx
state: present
- name: Start Nginx service
service:
name: nginx
state: started
enabled: yes # 开机自启
ansible-playbook命令执行(ansible-playbook -i /etc/ansible/hosts install_web.yml)。Puppet采用“声明式”配置模型,适合大规模基础设施的自动化管理。通过Manifest(定义资源状态)和Module(复用配置),实现配置的一致性与可维护性。
实施步骤:
sudo yum install puppet)。/etc/puppetlabs/puppet/puppet.conf,设置server = puppetmaster.example.com,启动Master服务(sudo systemctl start puppetmaster)。/etc/puppetlabs/puppet/puppet.conf,设置server = puppetmaster.example.com,运行sudo puppet agent --test完成首次认证。/etc/puppetlabs/code/environments/production/manifests/site.pp,定义Nginx服务的配置:class nginx {
package { 'nginx':
ensure => installed,
}
service { 'nginx':
ensure => running,
enable => true,
require => Package['nginx'],
}
}
include nginx # 应用class
sudo puppet agent --test)。Chef采用“代码即配置”理念,通过Recipe(Ruby DSL)定义基础设施配置,适合复杂环境(如多云、混合云)。其核心组件包括Workstation(编写Recipe)、Chef Server(集中管理配置)、Node(执行配置)。
实施步骤:
curl -L https://omnitruck.chef.io/install.sh | sudo bash)。chef generate cookbook my_cookbook),编辑recipes/default.rb:package 'httpd' do
action :install
end
service 'httpd' do
action [:enable, :start]
end
knife bootstrap)。knife cookbook upload my_cookbook),Node节点运行sudo chef-client同步配置。Docker通过容器技术实现应用与环境的隔离,简化部署流程。结合CI/CD工具(如Jenkins),可实现应用的自动化构建、测试与部署。
实施步骤:
sudo yum install docker && sudo systemctl start docker)。FROM nginx:latest
COPY ./html /usr/share/nginx/html # 将本地html目录复制到镜像的默认web目录
docker build构建镜像(sudo docker build -t my-nginx .),通过docker run运行容器(sudo docker run -d -p 80:80 my-nginx)。Cron是Linux系统自带的定时任务工具,适合定期执行脚本(如日志清理、数据备份、报表生成)。通过crontab -e编辑用户的Cron表,定义任务的执行时间与命令。
示例:每天凌晨3点清理/var/log下超过7天的日志文件:
0 3 * * * find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
说明:0 3 * * *表示每天凌晨3点执行,find命令查找并删除符合条件的日志文件。