Ansible 自动化运维入门:用剧本文件管理服务器集群
当服务器数量从 1 台变成 10 台再变成 50 台时,逐台 SSH 上去手动配置就彻底行不通了。Ansible 用统一的剧本(Playbook)管理所有服务器——它不需要在被管理机器上安装 Agent,只需要 SSH 连接。
为什么是 Ansible?
与 Puppet、Chef、SaltStack 相比,Ansible 的最大优势是无 Agent 架构——被管理服务器不需要安装任何额外软件。只要你能 SSH 上去,Ansible 就能管。这大大降低了准入门槛和维护成本。
Inventory:主机清单
主机清单定义了要管理的服务器,支持分组嵌套。一个 prod 组可以包含 webservers 子组和 databases 子组——对不同组执行不同的剧本。
Playbook:剧本文件
Ansible 的核心是 Playbook——YAML 格式的剧本文件,描述要在目标机器上执行的任务序列。核心元素:hosts(目标组)、tasks(任务列表)、handlers(触发器)、vars(变量)。
关键实践:用 template 模块动态生成配置文件(Jinja2 模板)、用 notify+handlers 在配置变化时自动重启服务、用 become 进行 sudo 提权。
Roles:模块化组织
当 Playbook 变长后,用 Roles 将任务/模板/变量/处理器按功能拆分——nginx 角色负责 Web 服务器、postgresql 角色负责数据库。每个角色是独立的可复用的模块。
Ansible Vault:加密敏感变量
数据库密码、API 密钥等敏感信息不能明文写进 Playbook。Ansible Vault 加密整个文件或单个变量,执行时用密码解密。
总结
Ansible 的无 Agent 架构让它成为运维自动化的入门首选。从 Inventory 定义目标、Playbook 描述任务、Roles 组织代码、Vault 保护密钥——一台机器到一百台,同样的剧本,同样的结果。
