温馨提示×

centos minimal怎样实现自动化运维

小樊
41
2026-01-02 01:27:34
栏目: 智能运维

在 CentOS Minimal 上落地自动化运维的路线图


一 基础准备与选型

  • 系统最小化安装后,先补齐基础与安全基线:
    • 更新系统并安装常用工具:sudo yum update -y && sudo yum install -y epel-release vim wget curl sudo
    • 创建运维专用账户并配置 SSH 公钥登录,禁用 root 远程登录:sudo useradd -m -s /bin/bash ops && sudo usermod -aG wheel ops
    • 加固 SSH:sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config && sudo systemctl restart sshd
  • 自动化工具选型建议(按场景):
    • 配置管理与批量变更:Ansible(无代理、基于 SSH、上手快)
    • 大规模与强一致性:Puppet / Chef / SaltStack
    • 持续交付:Jenkins / GitLab CI
    • 监控与告警:Prometheus + Grafana / Zabbix / Nagios
    • 日志分析:ELK(Elasticsearch + Logstash + Kibana)
    • 基础设施即代码:Terraform(配合云资源编排)
  • 建议以 Ansible 为核心,先打通“装机 → 配置 → 应用部署 → 监控告警”的闭环。

二 无人值守装机与初始化

  • 使用 Kickstart 实现批量无人值守安装(示例要点):
    • 关键指令:text(文本安装)、url --url="..."(安装源)、rootpw --iscrypted ...(加密 root 密码)、network(网络)、timezone(时区)、bootloader(引导)、clearpart / part / volgroup / logvol(分区/LVM)、%packages(软件包组)、%post(安装后脚本)、reboot
    • 示例片段:
      text
      url --url="http://mirror.centos.org/centos/7/os/x86_64/"
      lang en_US.UTF-8
      keyboard us
      timezone Asia/Shanghai --isUtc
      rootpw --iscrypted $6$ugoUqIKf$cPAYn16qZPTVYaXsX4hqTYhPHylas0vQYi6vwKdAX/DZRXYLDdQh9J1RsHskNpZXIH.IYvJLpqC9.wWuv1iYn/
      network --bootproto=dhcp --device=eth0 --activate
      network --hostname=web01
      bootloader --location=mbr --boot-drive=sda
      clearpart --all --initlabel
      part /boot --fstype="xfs" --ondisk=sda --size=1024
      part pv.01 --fstype="lvmpv" --ondisk=sda --size=51200
      volgroup centos --pesize=4096 pv.01
      logvol /     --fstype="xfs" --size=45056 --name=root --vgname=centos
      logvol swap  --fstype="swap" --size=4096  --name=swap --vgname=centos
      %packages
      @^minimal
      %end
      %post
      echo "Welcome to web01" > /etc/motd
      %end
      reboot
      
    • 生成加密 root 密码(示例):python -c 'import crypt; print(crypt.crypt("YourPassword", "$6$somesalt$"))'
  • 批量装机与网络引导可选 Cobbler(PXE + DHCP + TFTP + Web 管理),适合大规模机房/实验室环境。

三 配置管理与批量变更

  • Ansible 为例(Minimal 上通常已可通过 pip 或 EPEL 安装):
    • 安装:sudo yum install -y epel-release && sudo yum install -y ansible
    • Inventory(/etc/ansible/hosts):
      [web]
      192.168.1.10
      192.168.1.11
      
      [db]
      192.168.1.20
      
    • Playbook(安装并启动 Nginx):
      ---
      - hosts: web
        become: yes
        tasks:
          - name: Install Nginx
            yum: name=nginx state=present
          - name: Enable and start Nginx
            service: name=nginx state=started enabled=yes
      
    • 执行:ansible-playbook -i /etc/ansible/hosts web.yml
  • 进阶建议:
    • 使用 角色(Roles)动态 Inventory 管理复杂环境
    • 重视 幂等性错误处理,保持 Playbook 简洁、模块化、可复用
    • 敏感信息使用 Ansible Vault 管理
  • 其他可选:Puppet / Chef / SaltStack 适合强一致性与大规模标准化场景。

四 持续交付与监控告警

  • 持续交付(CI/CD)
    • Jenkins:拉取代码 → 构建 → 测试 → 部署(SSH 或 Ansible 执行远程部署)
    • GitLab CI/CD:与仓库深度集成,适合内网一体化交付
  • 监控与告警
    • Prometheus + Grafana:指标采集、阈值告警、可视化看板
    • Zabbix / Nagios:传统监控与告警平台,适合既有体系
  • 日志管理
    • ELK(Elasticsearch + Logstash + Kibana):集中收集、检索、可视化日志
  • 典型落地:
    • 在目标机以 systemd 托管业务服务,暴露 /metrics 或写入日志
    • Prometheus 抓取指标,Grafana 配置面板;Zabbix 配置主机与服务监控
    • Jenkins/GitLab CI 在构建成功后通过 Ansible 将新版本发布到目标机

五 日常自动化与最佳实践

  • 定时任务与自愈脚本
    • 使用 Cron 执行备份、清理、健康检查等:0 2 * * * /usr/local/bin/backup.sh
    • 脚本内做好日志、错误捕获与告警(邮件/企业微信/钉钉 Webhook)
  • 安全与合规
    • 最小权限与 sudo 审计、定期补丁、加固内核与 SSH、密钥轮换
  • 可观测性
    • 统一日志格式与目录,关键路径加 监控指标日志采样
  • 工程化
    • 代码托管(Git)、代码评审、CI 流水线、变更回滚预案、演练与压测
  • 关键注意点
    • 保持 幂等性、控制 Playbook 复杂度、重视 错误处理网络/权限 问题

0