跳到主要内容

Ansible 配置编排

面向 运维 / DevOps 的 Ansible 实战系列。目标不是背模块参数大全,而是能独立设计并交付一套幂等、可复用、可审计、可安全变更的配置编排工程。

读完本系列,你应当能:

  • 从零搭好控制节点,并对一批 Linux 主机做标准化初始化
  • 用 Inventory + 变量分层管理多环境,而不是把 IP 和密码写死在 playbook 里
  • 熟练选用声明式模块,再把「装软件 → 改配置 → 滚动重启」写成可重复执行的 Role
  • 在上线前用 check/diff/serial 控制爆炸半径,用 Vault 管密钥

本系列解决什么问题

运维日常里,下面这些活最适合 Ansible:

场景为什么适合 Ansible
新机器初始化用户、SSH、时区、基础包、监控 Agent,状态可声明
批量改配置Nginx、sshd、sysctl,可 diff、可回滚到 Git 版本
滚动发布/重载分批执行,挂一台不至于全挂
配置漂移收敛定期跑同一 playbook,把手工改乱的状态拉回来

不太适合硬套 Ansible 的:

  • 需要复杂分支/算法的临时分析(更适合 Python
  • 云资源的创建/销毁生命周期(更适合 Terraform
  • 毫秒级热路径控制面(Ansible 是变更工具,不是常驻控制平面)

与 Python / Terraform 的边界

工具更擅长典型产出
Ansible已有机器上的配置、包、服务、文件状态Role、Playbook、Inventory
Terraform云主机、网络、LB、DNS、托管库的生命周期.tf、state
PythonAPI 粘合、巡检逻辑、非标准流程脚本、小服务

推荐组合:Terraform 起机器 → Ansible 做初始化与持续配置 → Python 补巡检/对接平台 API。三者可以在同一套 GitOps 流程里协作,但职责不要搅在一个 playbook 里。


学习路线(9 篇)

序号文档你将能做到
101 安装与连通装好控制节点,SSH 免密,ping 全绿
202 清单与变量分组、host/group_vars、查清「最终用的是哪个值」
303 常用模块先掌握模块:文件、包、用户、服务、下载、探测等
404 Playbook再学编排:handler / when / loop / tags
505 Role拆角色、定 defaults 接口、跨项目复用
606 安全变更check/diff/serial,变更可预览、可限流
707 Vault敏感变量加密入库,CI 安全解密
808 综合实战标准仓库结构 + 综合初始化项目

建议顺序阅读:模块 → Playbook → Role。若已熟悉常用模块,可从第 4 篇加速,但第 2、7 篇的变量与密钥规范仍建议补上。


环境与仓库约定

全文示例默认:

  • ansible-core 2.15+(或发行版等价版本)
  • 控制节点:macOS / Linux
  • 托管节点:Debian/Ubuntu 为主;涉及包管理处会给出 RHEL 对照
  • 练习根目录:~/ansible-for-ops
~/ansible-for-ops/
├── ansible.cfg
├── inventory/
│ ├── staging.ini
│ └── prod.ini
├── group_vars/
├── host_vars/
├── playbooks/
├── roles/
└── files/ # 可选:跨角色静态文件
密钥与敏感信息

文档中的密码、Token、IP、域名均为占位符。真实密钥只进 Vault 或本机未入库文件;示例里不会出现可用的真实凭据。

版本说明

模块示例优先使用 FQCN(如 ansible.builtin.copy)。若你的环境是较老的 Ansible 2.9,可去掉命名空间前缀,但建议尽快升级到 ansible-core。

从左侧进入 安装、SSH 与第一次连通 开始动手。