CentOS Minimal 自动化运维工具选型与落地
一、工具分类与典型场景
- 配置管理与编排:Ansible(无代理、基于 SSH、上手快)、Puppet(声明式、适合大规模标准化)、Chef(Ruby 生态、灵活定制)、SaltStack(分布式、执行与状态同步快)。
- 批量装机与镜像分发:Cobbler(PXE 装机、可管理 DHCP/TFTP/HTTP,支持多发行版)。
- 生命周期与内容管理:Foreman/Katello(裸机/虚机纳管、内容仓库、补丁与订阅管理,常与 Puppet/Ansible 集成)。
- 监控与告警:Nagios Core(主机/服务监控与告警)、Zabbix(企业级分布式监控)、Prometheus + Grafana(时序指标与可视化)。
- CI/CD 与发布:Jenkins、GitLab CI/CD。
- 日志与可观测性:ELK Stack(Elasticsearch/Logstash/Kibana)。
- 基础设施即代码:Terraform(多云/混合云资源编排)。
二、在 CentOS Minimal 上的快速落地
-
配置管理与编排(以 Ansible 为例)
- 安装与源准备:在控制机上执行
sudo yum install -y epel-release
sudo yum install -y ansible
- 配置 Inventory(/etc/ansible/hosts):
[web]
192.168.1.10
-
编写 Playbook(install_nginx.yml):
- hosts: web
become: yes
tasks:
- name: Install httpd
yum: name=httpd state=present
- name: Start and enable httpd
service: name=httpd state=started enabled=yes
- 执行:ansible-playbook install_nginx.yml
说明:Ansible 基于 SSH、无需在目标机安装代理,适合 CentOS Minimal 快速落地与横向扩展。
-
批量装机(以 Cobbler 为例)
- 安装组件:
sudo yum install -y cobbler cobbler-web dhcp tftp-server pykickstart httpd xinetd
- 启动与校验:
systemctl enable --now httpd cobblerd xinetd tftp rsyncd
cobbler check(按提示修复缺项)
- 常用配置要点:
- 管理 DHCP(/etc/cobbler/settings:manage_dhcp=1),配置 DHCP 模板与子网;
- 启用 TFTP(/etc/xinetd.d/tftp:disable=no),准备 PXE 引导文件;
- 导入发行版镜像、创建 profile 与 kickstart,实现无人值守安装。
- 防火墙放行(示例):
firewall-cmd --permanent --add-port=69/{tcp,udp}
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
说明:Cobbler 适合大规模 PXE 批量装机与镜像分发,可与后续配置管理工具衔接。
三、组合方案建议
- 小型团队/快速起步:Ansible 负责配置与发布;Cobbler 负责装机;Prometheus + Grafana 做监控;Jenkins/GitLab CI 做 CI/CD。
- 中大型与标准化:Puppet/Chef/SaltStack 负责配置与合规;Foreman/Katello 纳管主机与内容、补丁与订阅;Nagios/Zabbix 负责告警;ELK 负责日志;Terraform 管理云资源。
- 裸机规模部署:Cobbler + Foreman/Katello 作为装机与生命周期底座,配合 Ansible/Puppet 做配置编排与合规审计。
四、Minimal 环境注意事项
- 网络与 DNS:编辑 /etc/ssh/sshd_config 将 UseDNS no,可显著加快 SSH 连接;确保控制机与目标机之间 SSH 可达 与端口开放。
- 防火墙与端口:装机/服务阶段按需放行 69(TFTP)、80/443(HTTP/HTTPS)、DHCP(67/68) 等端口,变更后用 firewall-cmd --reload 生效。
- SELinux:若遇到 TFTP/HTTP 访问受限,可临时 setenforce 0 验证,生产环境建议通过 semanage fcontext 设置正确的文件上下文,或按需调整策略。
- 幂等与可维护性:Playbook/Manifest 需设计为幂等,遵循简洁、模块化、可复用原则,减少复杂依赖与难以调试的写法。